sync_up: Discussion, add rest of points from thread
[libreriscv.git] / HDL_workflow / coriolis2.mdwn
index 6404edb310547d6fe283e7bbf0de69bc1c7d0dde..6f612f76a57f3e338fd388ae418b1de0076c1741 100644 (file)
-TODO, repos moved
-git remote set-url origin https://gitlab.lip6.fr/vlsi-eda/alliance-check-toolkit.git
-  git remote set-url origin https://gitlab.lip6.fr/vlsi-eda/alliance.git
-  git remote set-url origin https://gitlab.lip6.fr/vlsi-eda/coriolis.git
-
 # Installing Coriolis2
 
-## debootstrap
-
-First set up an schroot debootstrap jail with debian 9.0.
-These instructions are based on information taken from here:
-<https://www.debian.org/releases/stretch/amd64/apds03.html.en>
-
-In advance, on the host system, edit /etc/fstab and add mount points:
-
-(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)
-
-    /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
-
-Then run these commands:
+Videos and links:
 
-    sudo bash
-    apt-get install debootstrap schroot
-    mkdir /opt/chroot/coriolis
-    /usr/sbin/debootstrap stretch !$ 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
+* <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]]
 
-To do some preparation (users):
+## Automated Installation - One-liner
 
-    chroot /home/chroot/coriolis2 /bin/bash
-    adduser {yourpreferredusername}
+The new automated method of installing/setting up Coriolis2 is as follows:
 
-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".
+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!
 
-    lkcl@fizzy:~$ id
-    uid=1000(lkcl) gid=1000(lkcl) groups=1000(lkcl),5(tty),....
+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):
 
-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.
+    $ git clone https://git.libre-soc.org/git/dev-env-setup.git
+    $ cd ~/dev-env-setup
+    $ sudo bash
+    # ./coriolis2-chroot
 
-You may wish to follow some of the other things such as configuring apt,
-locales and keyboard, from the above-linked debian-admin HOWTO.
-bootloader, kernel, ssh access, all these are
-unnecessary.  do run "apt clean" to clear out /var/cache/apt/archives
-in the 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.
 
-## schroot
+This is what the chip floorplan should look like:
 
-Create an schroot file section:
+[[!img chip_r_floorplan.png ]]
 
-    [coriolis] 
-    description=Debian Stable for Coriolis
-    directory=/home/chroot/coriolis
-    groups=sbuild-security,lkcl,users
+## Automated Installation - Separated Steps
+The steps performed by "coriolis2-chroot" can be done manually and are:
 
-Now as an *ordinary* user - not as root - you may type:
+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"
 
-    lkcl@fizzy:~$ schroot -c coriolis
+In a terminal:
 
-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:
+    $ cd ~/dev-env-setup
+    $ sudo bash
+    # ./mk-deb-chroot coriolis
+    # ./cp-scripts-to-chroot coriolis
 
-    (coriolis2)lkcl@fizzy:~$ 
+In a separate terminal as normal user:
 
-If however you need to run as root, then from outside the chroot,
-as *root*, you run this:
+    $ scroot -c coriolis
+    (coriolis)$ cd ~/dev-env-setup
+    (coriolis)$ ./coriolis-install
 
-    lkcl@fizzy:~# schroot -c coriolis
-
-and you will see this as a result:
-
-    (coriolis2)lkcl@fizzy:~#
-
-## check out alliance and alliance-check-toolkit
-
-Adapted from <https://www-soc.lip6.fr/en/team-cian/softwares/alliance/>
+# Further Details
 
-in the schroot:
+## Python3 Coriolis Support
 
-    git clone https://gitlab.lip6.fr/jpc/alliance-check-toolkit.git
+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.
 
-TODO: document how to build alliance, basically this:
-
-In the chroot, as root:
-
-    apt-get update
-    apt-get install ccache git build-essential libtool automake \
-             flex bison xfig imagemagick \
-             texlive texlive-pictures texlive-latex-extra \
-             libx11-dev libxt-dev libxaw7-dev libxpm-dev libmotif-dev
-
-In the chroot, as the ordinary schroot user, in ~/.bash\_profile add
-the following so that builds (rebuilds) if you need them will be quicker:
-
-    export PATH=/usr/lib/ccache:"$PATH"
-
-In the chroot, as the ordinary schroot user:
-
-    mkdir -p alliance/build alliance/install
-    cd ~/alliance
-    git clone https://www-soc.lip6.fr/git/alliance.git
-    cd alliance/src
-    ./autostuff
-    cd ~/alliance/build
-    export ALLIANCE_TOP=$HOME/alliance/install
-    export LD_LIBRARY_PATH=${ALLIANCE_TOP}/lib:${LD_LIBRARY_PATH}
-    export LD_LIBRARY_PATH=${ALLIANCE_TOP}/lib64:${LD_LIBRARY_PATH}
-    ../alliance/src/configure --prefix=$ALLIANCE_TOP --enable-alc-shared
-    make -j1 install
+## Chroot/Jail Environment
 
-the two exports are best added to ~/.bash_profile for later convenience
+See [[devscripts]] for explanation of the "mk-deb-chroot" script.
 
-## coriolis2
+## Coriolis2 Setup
 
 These are nominally taken from
 <https://www-soc.lip6.fr/equipe-cian/logiciels/coriolis/>
@@ -141,55 +91,59 @@ them will be quicker, and you can run the GUI from the chroot:
     export PATH=/usr/lib/ccache:"$PATH"
     export DISPLAY=:0.0
 
-Second (or at a new terminal / xterm), log in as root on the host (not
-the chroot) then do schroot -c coriolis to get to be root in the chroot
-(or, you can install sudo in the chroot and then do "sudo bash" in the
-chroot).
+Second (or at a new terminal / xterm), log in as root on the host (not the chroot) then do schroot -c coriolis to get to be root in the chroot (or, you can install sudo in the chroot and then do "sudo bash" in the chroot).
 
 Then run the following commands, as root, *in* the chroot:
 
     apt-get update
-    apt-get install -y ccache build-essential binutils-dev          \
-                  git cmake bison flex gcc python-dev               \
-                  libboost-all-dev libboost-python-dev               \
-                  zlib1g-dev                                         \
-                  libbz2-dev libxml2-dev rapidjson-dev libbz2-dev     \
-                  doxygen dvipng graphviz python-sphinx               \
-                  texlive-fonts-extra texlive-lang-french            \
-                  libqwt-dev qt4-dev-tools python-qt4               \
-                   libxt-dev libxpm-dev libmotif-dev                \
-                   yosys
+    apt-get install -y automake binutils-dev bison build-essential \
+    ccache clang cmake doxygen dvipng flex gcc git graphviz \
+    imagemagick libboost-all-dev libboost-python-dev libbz2-dev \
+    libmpfr-dev libgmp-dev libmotif-dev libreadline-dev \
+    libqwt-dev libtool libx11-dev libxaw7-dev libxml2-dev \
+    libxpm-dev libxt-dev python3.7 python3-jinja2 python3-pip \
+    python3-setuptools python-dev python-qt4 python-sphinx \
+    qt4-dev-tools rapidjson-dev tcl tcl-dev tcl-tclreadline \
+    texlive texlive-fonts-extra texlive-lang-french \
+    texlive-latex-extra texlive-pictures xfig yosys zlib1g-dev
 
 Then, as the ordinary (non-root) user in the schroot:
 
     mkdir -p ~/coriolis-2.x/src
     cd ~/coriolis-2.x/src
-    git clone https://www-soc.lip6.fr/git/coriolis.git
-
+    git clone https://gitlab.lip6.fr/vlsi-eda/coriolis.git
     cd coriolis
-    git checkout devel
-    ./bootstrap/ccb.py --project=coriolis --make="-j4 install"
+    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 alliance environment, run this:
+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 "eval `~/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
-     cd ~/coriolis-2.x/Linux.MyARCH/Release.Shared/install/bin
+
+    cd ~/coriolis-2.x/Linux.MyARCH/Release.Shared/install/bin
     ./cgt
 
 Then run the following commands from the menubar
 
     Tutorials / Run Demo (Python Flavour)
-    
+
 If the following window appears you have an error.
 
 [[!img chicken.png ]]
@@ -200,169 +154,246 @@ If you have the following, congratulations:
 
 [[!img demo_cell.png ]]
 
-# Tutorials and checks
-
-* <https://gitlab.com/Chips4Makers/alliance-check-toolkit>
-* See coriolis-2.x/Linux.x86_64/Release.Shared/install/share/doc/coriolis2/en/html/main/PythonTutorial/index.html
-
-## Information from Jean-Paul
+# Upgrading to latest yosys in the chroot
 
-There should be very soon a website at https://coriolis.lip6.fr (it is not yet
-online). Where I intend to put all the documentation about Alliance/Coriolis.
+yosys in debian may not be enough to work with nmigen,
+therefore it's probably a good idea to upgrade.
 
-In the meantime did you find the doc shipped with Coriolis ?
+As root, in the chroot, run the following:
 
-There are also very cursory informations about installing Alliance here:
-    https://www-soc.lip6.fr/en/team-cian/softwares/alliance/
+    apt-get update
+    apt-get build-dep yosys
+    apt-get install clang
+    apt-get remove yosys
 
-You also have a third repository for various blocks/chip/examples here:
-    https://gitlab.lip6.fr/jpc/alliance-check-toolkit
+This will remove debian/buster yosys however getting the build dependencies is quick and easy enough.
 
-(with a basic doc under "doc/"...)
+As the ordinary user, the following instructions can be followed
+(<https://github.com/YosysHQ/yosys>)
 
-## More from JP
+    cd ~
+    git clone https://github.com/YosysHQ/yosys
+    cd yosys
+    git checkout 049e3abf9baf795e69b9ecb9c4f19de6131f8418
+    make config-clang
+    make -j$(nproc)
 
-You must create a configuration for alliance-check-toolkit:
+Note: For now a stable version of yosys is used!
 
-    alliance-check-toolkit/etc/mk/users.d/user-LOGIN.mk
+As root, run:
 
-    where you define where the various tools are installed
-    (look in other ones to have an idea).
+    make install
 
-  You can try the ARM in alliance-check-toolkit:
+## Alliance
 
-    > cd alliance-check-toolkit/benchsARM/cmos/
-    > make lvx
+Adapted from <https://www-soc.lip6.fr/en/team-cian/softwares/alliance/>
 
-    Should take about five minutes. It's symbolic, but should be
-    a configuration compatible with 180nm. To actually see the
-    results:
+In the chroot, as the ordinary schroot user, in ~/.bash\_profile add the following so that builds (rebuilds, if you need them) will be quicker:
 
-    > make cgt
+    export PATH=/usr/lib/ccache:"$PATH"
 
-    Then "File -> Open", "arm_chip_cts_r"
+In the chroot, as the ordinary schroot user:
 
-    To have a very rough approximation, you can say that one lambda
-    equal 180nm.
+    mkdir -p alliance/build alliance/install
+    cd ~/alliance
+    git clone https://gitlab.lip6.fr/vlsi-eda/alliance.git
+    mv alliance/alliance/src alliance
+    rm -rf alliance/alliance
+    cd alliance/src
+    ./autostuff
+    cd ~/alliance/build
+    export ALLIANCE_TOP=$HOME/alliance/install
+    export LD_LIBRARY_PATH=${ALLIANCE_TOP}/lib:${LD_LIBRARY_PATH}
+    export LD_LIBRARY_PATH=${ALLIANCE_TOP}/lib64:${LD_LIBRARY_PATH}
+    ../alliance/src/configure --prefix=$ALLIANCE_TOP --enable-alc-shared
+    make -j1 install
 
-Depends on the zoom level and of the fact that you ask to see
-the inside of the cells.
+The three exports are best added to ~/.bash_profile for later convenience
 
-To actually see the transistors:
-   Tools -> Controller -> Filter Tab -> check "Process Terminal Cells"
+# Tutorials and checks
 
-You can also tweak the layer display:
-   Tools -> Controller -> Layers & Go
+Install alliance-check-toolkit in the chroot:
 
-  You can quicly hide/show the Controller with CTRL+I.
+* <https://gitlab.lip6.fr/vlsi-eda/alliance-check-toolkit.git>
+* See coriolis-2.x/Linux.x86_64/Release.Shared/install/share/doc/coriolis2/en/html/main/PythonTutorial/index.html
 
-  You may also toy with Controller -> Look, try the other ones.
-  If you want a new one, to mimic something you're better
-  familiar with, it's in configurations files all written
-  in Python so easy to do, if a little tedious.
+Run the following (if not done already):
 
-> i'd expect such a chip to be in the alliance-check-toolkit however we
-> don't even know what we're looking at in order to know which bits we
-> need, let alone know what to do or how to run them.
->
-> we're *literally* completely in the dark, here, having never done this
-> before - at all - so unless there's a specific tutorial which says, to
-> make a chip layout do this: "step 1: install these tools.  step 2: get
-> this project repo.  step 3: cd to this directory.  step 4: run make or
-> ./compile-place-and-route.sh" we're absolutely lost.
->
-> thx jean-paul, and apologies for not knowing where to begin, here.
+    source ~/coriolisenv
 
-  No problem. You're welcome.
+Git clone alliance-check-toolkit:
 
-  The doc is mostly for people who already have a background in ASICs,
-  I will try to patch something from my lecture in VLSI to help people
-  to orient themselves.
+    git clone https://gitlab.lip6.fr/vlsi-eda/alliance-check-toolkit.git
 
-  The up-to-date documentation is supplied directly in the Coriolis
-  repository:
+You must create a configuration for your user in alliance-check-toolkit to define where the various tools are installed:
 
-     coriolis/documentation/output/index.html
+    touch alliance-check-toolkit/etc/mk/users.d/user-$USERNAME.mk
+    cat <<EOF >>alliance-check-toolkit/etc/mk/users.d/user-$USERNAME.mk
+    export CORIOLIS_TOP=/home/$USERNAME/coriolis-2.x/Linux.x86_64/Release.Shared/install
+    export ALLIANCE_TOP=/home/$USERNAME/alliance/install
+    export CHECK_TOOLKIT=/home/$USERNAME/alliance-check-toolkit
+    export YOSYS_TOP=/home/$USERNAME/yosys
+    EOF
 
-     The links toward the doxygen doc will be invalid a this point,
-     but everython else works.
+You can try the user adder benchmark in alliance-check-toolkit:
 
-   After installation, it is put in:
+    cd alliance-check-toolkit/benchs/adder/cmos
+    make lvx
 
-     coriolis-2.x/Linux.x86_64/Release.Shared/install/share/doc/coriolis2/en/html/index.html
+This should take about five minutes. It's symbolic, but should be a configuration compatible with 180nm. To actually see the results:
 
-# Installing python3.7 into debian/stretch chroot
+    make cgt
 
-python 3.6 is a prerequisite for nmigen however something
-weird is going on, and it can't be installed.  instead,
-python 3.7 has to be installed instead.  we do this by
-adding debian/testing but setting the default release
-as "stretch".
+Then:
 
-as root, in the
-chroot, add the following to /etc/apt/sources.list
+    Select File -> Open Cell or press CTRL + o
 
-    deb http://ftp.de.debian.org/debian testing main
+Enter as the cell name (without the single quotation marks):
 
-then, also as root:
+    'chip_r'
 
-    echo 'APT::Default-Release "stretch";' | tee -a /etc/apt/apt.conf.d/00local
-    sudo apt-get update
-    apt-get -t testing install python3.7 python3-setuptools \
-               python3-jinja2 python3-pip
+As a very rough approximation, you can say that one lambda equals 180nm.
 
-At this point it becomes possible to follow the main
-instructions in [[HDL_workflow]] for installing nmigen,
-ieee754fpu, soc and nmutil.
+It depends on the zoom level and of the fact that you ask to see the inside of the cells.
 
-# Upgrading to latest yosys and nmigen in the chroot
+To actually see the transistors:
 
-yosys in debian/stretch may not be enough to work with nmigen,
-therefore it's probably a good idea to upgrade.   if this was
-not a debian/stretch chroot (i.e. was a debian 10), it would be
-a simple matter of "apt-get install yosys" however it's probably best,
-here to install from source.
+    Tools -> Controller -> Filter Tab -> check "Process Terminal Cells"
 
-**however**.. there is another way: once the instructions
-for installing python3.7 have been carried out.  As root,
-in the chroot:
+You can also tweak the layer display by selecting:
 
-   apt-get -t testing install yosys
+    Tools -> Controller -> Layers & Go
 
-That's all. 
+  You can quicly hide/show the Controller with:
 
-To install instead from source, add the following to
-/etc/apt/sources.list:
+    CTRL+I
 
-   deb-src http://ftp.uk.debian.org/debian stretch main
+The up-to-date documentation is supplied directly in the Coriolis repository:
 
-then as root, in the chroot, run the following:
+    coriolis/documentation/output/index.html
 
-    apt-get update
-    apt-get build-dep yosys
-    apt-get install clang
-    apt-get remove yosys
+The links toward the doxygen doc will be invalid a this point, but everything else works.
 
-this will remove debian/stretch yosys however getting the build
-dependencies is quick and easy enough.
+After installation, it is put in:
 
-then, as the ordinary user, the following instructions can be followed
-(<http://www.clifford.at/yosys/download.html>)
+    coriolis-2.x/Linux.x86_64/Release.Shared/install/share/doc/coriolis2/en/html/index.html
 
-    cd ~
-    git clone https://github.com/cliffordwolf/yosys.git
-    cd yosys
-    make config-clang
-    make -j4
+## More Information from Jean-Paul
 
-as root, run:
+There is a WIP documentation website for Alliance/Coriolis at <http://coriolis.lip6.fr/>.
 
-    make install
+There are also very cursory informations about installing Alliance here:
+    https://www-soc.lip6.fr/en/team-cian/softwares/alliance/
 
-# Check out the libresoc "soclayout" repository
+You also have a third repository for various blocks/chip/examples here:
+    https://gitlab.lip6.fr/jpc/alliance-check-toolkit
 
-See [[HDL_workflow]] for git clone instructions
+(with a basic doc under "doc/"...)
 
-    $ git clone ssh://gitolite3@git.libre-riscv.org:922/libresoc.git
+# Clone "soclayout" repository and place and route a layout experiment
+
+In order to do the physical layout of the logical 
+netlists generated by yosys we use coriolis and 
+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/
+    $ git submodule update --init --recursive
+    $ find . -type f -exec sed -i 's/'lkcl'/'"$USER"'/g' {} \;
+    $ ./mksym.sh
+    $ cd experiments9
+    $ ./mksym.sh
+    $ yosys
+    yosys> read_ilang test_issuer.il
+    yosys> heirarchy -check -top test_issuer
+    yosys> synth -top test_issuer
+    yosys> dfflibmap -liberty /home/USERNAME/alliance/install/cells/sxlib/sxlib.lib
+    yosys> abc -liberty /home/USERNAME/alliance/install/cells/sxlib/sxlib.lib
+    yosys> clean
+    yosys> write_blif test_issuer.blif
+    yosys> exit
+    $ make pinmux
+    $ make layout (will take between 20min and 2 hours depending on your hardware)
+    $ make view
+
+A window should open with with contents that look like this (pretty isn't it?)
+
+[[!img 180nm_Oct2020/2020-07-03_11-04.png size="825x" ]]
+
+# Issues running from (e.g.) archlinux as host and debian as a chroot
+
+You may run into difficulties firing up GUI applications from the chroot.
+Try installing Xnest <https://box.matto.nl/xnest.html> which you should
+do in the *host* system.  Also remember to install a "basic" window manager
+(twm, fvwm2)
+
+On the *host*, run Xnest and a window manager:
+
+    Xnest :1 -ac &
+    twm -display :1 &
+
+Then, in the chroot, change DISPLAY environment variable (permanently
+in ~/.bash_profile if desired)
+
+    export DISPLAY=:1.0
+
+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>
+
+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
+
+* clone the dev-env-setup repository
+* 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_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. 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
+the [[HDL_workflow]] the standard OS for reproducible
+builds is debian/10.  It is just about possible to use
+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
+$ source ~/coriolisenv
+$ cd soclayout/experiments9
+$ git checkout LS180_RC8_FINAL
+$ ./build_full_4k_sram_recon.sh
+```
+(now do something else for the next 90 minutes)
 
-TODO further, here.