# Installing Coriolis2
-TODO: include tasyagle <https://www-soc.lip6.fr/en/team-cian/softwares/tasyagle/>
+Videos and links:
-## debootstrap
+* <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>
+* HiTas (tasyagle) page: [[tasyagle]]
-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>
+## Automated Installation - One-liner
-In advance, on the host system, edit /etc/fstab and add mount points:
+The new automated method of installing/setting up Coriolis2 is as follows:
-(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)
+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!
- /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
+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):
-Then run these commands:
+ $ git clone https://git.libre-soc.org/git/dev-env-setup.git
+ $ cd ~/dev-env-setup
+ $ sudo bash
+ # ./coriolis2-chroot
- 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
+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.
-To do some preparation (users):
+This is what the chip floorplan should look like:
- chroot /home/chroot/coriolis2 /bin/bash
- adduser {yourpreferredusername}
+[[!img chip_r_floorplan.png ]]
-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".
+## Automated Installation - Separated Steps
+The steps performed by "coriolis2-chroot" can be done manually and are:
- lkcl@fizzy:~$ id
- uid=1000(lkcl) gid=1000(lkcl) groups=1000(lkcl),5(tty),....
+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"
-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.
+In a terminal:
-You may wish to follow some of the other things such as configuring apt,
-locales and keyboard, from the above-linked debian-admin HOWTO.
+ $ cd ~/dev-env-setup
+ $ sudo bash
+ # ./mk-deb-chroot coriolis
+ # ./cp-scripts-to-chroot coriolis
-bootloader, kernel, ssh access, are unnecessary. Do run "apt clean" to clear out /var/cache/apt/archives in the chroot.
+In a separate terminal as normal user:
-## schroot
+ $ scroot -c coriolis
+ (coriolis)$ cd ~/dev-env-setup
+ (coriolis)$ ./coriolis-install
-Create an schroot file section for the coriolis chroot by
-editing /etc/schroot/schroot.conf:
+# Further Details
- [coriolis]
- description=Debian Buster for Coriolis
- directory=/home/chroot/coriolis
- groups=sbuild-security,lkcl,users
+## Python3 Coriolis Support
-Now as an *ordinary* user - not as root - you may type:
+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.
- lkcl@fizzy:~$ schroot -c coriolis
+## Chroot/Jail Environment
-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:
+See [[devscripts]] for explanation of the "mk-deb-chroot" script.
- (coriolis2)lkcl@fizzy:~$
-
-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.
alliace installed above by doing the following
(using experiment9 as an example):
+ $ source ~/coriolisenv # if not done already
$ cd ~/src
$ git clone https://git.libre-soc.org/git/soclayout.git
$ cd soclayout/
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 <a name="ls180_repro_build"> </a>
+# 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
-* run the ./build_full_4k_sram.sh script
+* check out the final tag
+ <https://git.libre-soc.org/?p=soclayout.git;a=tag;h=refs/tags/LS180_RC8_FINAL>
+* run the ./build_full_4k_sram_recon.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.
-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
-
Commands to run:
```
$ sudo bash
# ./coriolis2-chroot
# exit
-$ schroot -c cotiolis
+$ schroot -c coriolis
+$ source ~/coriolisenv
$ cd soclayout/experiments9
-$ ./build_full_4k_sram.sh
+$ git checkout LS180_RC8_FINAL
+$ ./build_full_4k_sram_recon.sh
```
(now do something else for the next 90 minutes)