# Installing Coriolis2
-TODO: include tasyagle <https://www-soc.lip6.fr/en/team-cian/softwares/tasyagle/>
+TODO: include HITAS / yagle <https://www-soc.lip6.fr/en/team-cian/softwares/tasyagle/>
-## debootstrap
+Videos and links:
-First set up an schroot debootstrap jail with debian 10.
-These instructions are based on information taken from here:
-<https://www.debian.org/releases/stretch/amd64/apds03.html.en>
+* <https://www.youtube.com/watch?v=TN9AQgoVwDw&list=PLj2N46Uqs4huGN-redGHVEILPz17OBu37&index=11>
+* <http://coriolis.lip6.fr/>
+* <https://gitlab.lip6.fr/vlsi-eda>
+* <https://www.youtube.com/watch?v=C0diiTc7_VI&list=PLBtNqZjUZB80uByfZVm0gGYEtmTG0mZzm&index=5>
+* <https://www.youtube.com/watch?v=e0ATrAlNzWk>
+* <https://fosdem.org/2022/schedule/event/coriolis2/>
+* <https://archive.fosdem.org/2021/schedule/event/alliance/>
+* <https://www.youtube.com/watch?v=TN9AQgoVwDw>
-In advance, on the host system, edit /etc/fstab and add mount points:
+## Automated Installation - One-liner
-(edit: personally I prefer using mount --bind points. however if doing
-that then after a reboot the chroot will lose the bind mountpoints
-and the commands need to be re-run, without which the chroot is
-unusable)
+The new automated method of installing/setting up Coriolis2 is as follows:
- /dev /home/chroot/coriolis/dev none bind 0 0
- /dev/pts /home/chroot/coriolis/dev/pts none bind 0 0
- /proc /home/chroot/coriolis/proc none bind 0 0
- /sys /home/chroot/coriolis/sys none bind 0 0
- /tmp /home/chroot/coriolis/tmp none bind 0 0
+1. Clone the repo "dev-env-setup".
+ <https://git.libre-soc.org/?p=dev-env-setup.git;a=summary>
+ Tutorial assumes the directory is located under user's home.
+2. Run the script "coriolis2-chroot" to create a new chroot environment,
+ and setup Coriolis2.
+3. Once cgt window appears, go to File, Open Cell, and type chip_r.
+4. You should now have a working Coriolis chroot!
-Then run these commands:
+In a terminal (of course you checked what this does before running
+it because it is "commands downloaded off the internet", and you
+of course take absolute and complete and full responsibility):
- sudo bash
- apt-get install debootstrap schroot
- mkdir /opt/chroot/coriolis
- /usr/sbin/debootstrap buster !$ http://ftp.us.debian.org/debian
- mount /home/chroot/coriolis/dev
- mount /home/chroot/coriolis/dev/pts
- mount /home/chroot/coriolis/proc
- mount /home/chroot/coriolis/sys
- mount /home/chroot/coriolis/tmp
- echo "coriolis2" > /home/chroot/coriolis/etc/debian_chroot
+ $ git clone https://git.libre-soc.org/git/dev-env-setup.git
+ $ cd ~/dev-env-setup
+ $ sudo bash
+ # ./coriolis2-chroot
-To do some preparation (users):
+And now you wait... (about 30-45min, depends on your CPU).
+I suggest occasionallly checking the status messages,
+especially after apt finished updating the packages and the script moves on
+to compiling yosys, coriolis2, alliance, as well as when
+alliance-check-toolkit generates the floorplan for you.
- chroot /home/chroot/coriolis2 /bin/bash
- adduser {yourpreferredusername}
+This is what the chip floorplan should look like:
-It is best to make the username the same as the first user that
-was added during the *main* (non-chroot) debian install, so that
-uid 1000 matches between both main and chroot. You can check
-this by looking at /etc/passwd as root, or by typing "id".
+[[!img chip_r_floorplan.png ]]
- lkcl@fizzy:~$ id
- uid=1000(lkcl) gid=1000(lkcl) groups=1000(lkcl),5(tty),....
+## Automated Installation - Separated Steps
+The steps performed by "coriolis2-chroot" can be done manually and are:
-Alternatively, /etc/passwd and /etc/group may
-be mount-bound as well as /home however if you later forget you did
-this and decide to delete the chroot, you will delete the entire /home
-of your main system, as well as /etc/passwd.
+1. Run the script "mk-deb-chroot" to create a chroot environment.
+Tutorial assumes the name is "coriolis"
+1. Run the script "cp-scripts-to-chroot" to copy the dev-env-setup directory
+over to your new chroot environment.
+1. Login into the new scroot environment as a normal user
+(should be the same as your current user).
+1. Run the script "coriolis-install"
-You may wish to follow some of the other things such as configuring apt,
-locales and keyboard, from the above-linked debian-admin HOWTO.
+In a terminal:
-bootloader, kernel, ssh access, are unnecessary. Do run "apt clean" to clear out /var/cache/apt/archives in the chroot.
+ $ cd ~/dev-env-setup
+ $ sudo bash
+ # ./mk-deb-chroot coriolis
+ # ./cp-scripts-to-chroot coriolis
-## schroot
+In a separate terminal as normal user:
-Create an schroot file section for the coriolis chroot by
-editing /etc/schroot/schroot.conf:
+ $ scroot -c coriolis
+ (coriolis)$ cd ~/dev-env-setup
+ (coriolis)$ ./coriolis-install
- [coriolis]
- description=Debian Buster for Coriolis
- directory=/home/chroot/coriolis
- groups=sbuild-security,lkcl,users
+# Further Details
-Now as an *ordinary* user - not as root - you may type:
+## Python3 Coriolis Support
- lkcl@fizzy:~$ schroot -c coriolis
+A separate script will be written to use the latest development version of Coriolis2.
+For now however, a stable version is pulled in, which still uses Python2.
-and, due to the contents of /etc/debian\_chroot, and that you were in
-fact logged in as uid 1000 and did in fact add a user to the chroot
-as uid 1000, the prompt should become:
+## Chroot/Jail Environment
- (coriolis2)lkcl@fizzy:~$
+See [[devscripts]] for explanation of the "mk-deb-chroot" script.
-If however you need to run as root, then from outside the chroot,
-as *root*, you run this:
-
- lkcl@fizzy:~# schroot -c coriolis
-
-and you will see this as a result:
-
- (coriolis2)lkcl@fizzy:~#
-
-## coriolis2
+## Coriolis2 Setup
These are nominally taken from
<https://www-soc.lip6.fr/equipe-cian/logiciels/coriolis/>
cd ~/coriolis-2.x/src
git clone https://gitlab.lip6.fr/vlsi-eda/coriolis.git
cd coriolis
- git checkout devel
+ git checkout LS180_RC7_FINAL
./bootstrap/ccb.py --project=coriolis --make="-j$(nproc) install"
+Note: Instead of "devel", "LS180_RC7_FINAL" is used as it is more stable.
+Once Python3 support is added, can switch to using "devel".
+
To set up the coriolis2 environment, run this:
eval `~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py`
For convenience that may be placed in a file and "sourced", to avoid
having to look this page up every time
- echo "`~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py`" > \
- ~/coriolisenv
+ /bin/bash << EOF
+ /home/$USER/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py > /home/$USER/coriolisenv
+ EOF
source ~/coriolisenv
+For now a workaround must be used for coriolisEnv.py to correctly detect the shell (Bash in this case).
+
## Testing coriolis2
To run the graphical editor go to the bin directory
This will remove debian/buster yosys however getting the build dependencies is quick and easy enough.
As the ordinary user, the following instructions can be followed
-(<http://www.clifford.at/yosys/download.html>)
+(<https://github.com/YosysHQ/yosys>)
cd ~
- git clone https://github.com/cliffordwolf/yosys.git
+ git clone https://github.com/YosysHQ/yosys
cd yosys
+ git checkout 049e3abf9baf795e69b9ecb9c4f19de6131f8418
make config-clang
make -j$(nproc)
+Note: For now a stable version of yosys is used!
+
As root, run:
make install
-## Check out alliance
+## Alliance
Adapted from <https://www-soc.lip6.fr/en/team-cian/softwares/alliance/>
export YOSYS_TOP=/home/$USERNAME/yosys
EOF
-You can try the ARM in alliance-check-toolkit:
+You can try the user adder benchmark in alliance-check-toolkit:
- cd alliance-check-toolkit/benchs/ARM/cmos/
+ cd alliance-check-toolkit/benchs/adder/cmos
make lvx
This should take about five minutes. It's symbolic, but should be a configuration compatible with 180nm. To actually see the results:
Enter as the cell name (without the single quotation marks):
- 'arm_chip_cts_r'
+ 'chip_r'
As a very rough approximation, you can say that one lambda equals 180nm.
Then, in the chroot, follow the cgt instructions above, or use "make view"
in any of the soclayout experiments or alliance-check-toolkit bench tests
-# Libre-SOC 180nm ASIC reproducible build
+# Libre-SOC 180nm ASIC reproducible build<a name="ls180_repro_build"></a>
+
+Prerequisites:
+
+* machine with debian/10 (or if you absolutely must, ubuntu)
+* minimum 32 GB RAM
+* minimum XEON processor or Intel i9 or IBM POWER9
+* enough time to complete the build in full
+* around 50 GB free space (this is more than enough)
+
+**WARNING! DO NOT TRY RUNNING CORIOLIS2 IN QEMU OR OTHER VM!**
+VLSI builds are far too CPU and memory intensive.
Follow these instructions to build the ls180 GDS-II files
* run the coriolis2-chroot script as root
* drop into the schroot
* navigate to the soclayout/experiments9 directory
+* check out the final tag
+ <https://git.libre-soc.org/?p=soclayout.git;a=tag;h=refs/tags/LS180_RC7_FINAL>
* run the ./build_full_4k_sram.sh script
* run "make view" to see the results.
The FreePDK45 Chips4Makers FlexLib variant is slightly
different, in that it builds GDS-II rather than Alliance Symbolic
-and so requires klayout to view the GDS-II. Luckily,
-we have a build script for klayout, also in dev-env-setup.
+and so requires klayout to view the GDS-II. We do not yet
+ have a build script for klayout, it will be in dev-env-setup
+when it is. In the meantime you can follow instructions
+on the website <https://klayout.de/>
Please check these scripts before running them.
**This is your responsibility**. Also as explained in
ubuntu to run the debootstrap chroot setup but it is
not recommended.
+Commands to run:
+
```
+$ git clone https://git.libre-soc.org/git/dev-env-setup.git
+$ cd dev-env-setup
+$ sudo bash
+# ./coriolis2-chroot
+# exit
+$ schroot -c coriolis
+$ cd soclayout/experiments9
+$ git checkout LS180_RC7_FINAL
+$ ./build_full_4k_sram.sh
```
+(now do something else for the next 90 minutes)
+