* <https://symbiflow.github.io/>
* <https://github.com/SymbiFlow>
+* <https://bugs.libre-soc.org/show_bug.cgi?id=654>
-## Bugzilla page
+This is now possible with the automated devscript
+<https://git.libre-soc.org/?p=dev-env-setup.git;a=blob;f=symbiflow-install;hb=HEAD>
-* <https://bugs.libre-soc.org/show_bug.cgi?id=654>
+It is, as always, your responsibility to check the contents of any
+script before running it.
+
+-------
+
+# Manual instructions
+
+These are notes taken during the process of developing the above
+script. you **do not** need to go through this manual process unless
+you are very paranoid. warning: it took several days to get right.
## Setting up new debootstrap and chroot into it
## Add Buster Backports Repo and Update
-* buster backports is needed for cmake
+""buster backports is needed for cmake""
cat << EOF > /etc/apt/sources.list.d/buster_backports.list
deb http://deb.debian.org/debian buster-backports main
EOF
-* oooo annoying, pin preferences for buster-backports
+""oooo annoying, pin preferences for buster-backports""
cat << EOF > /etc/apt/preferences.d/99buster-backports
Package: *
Pin-Priority: 900
EOF
-* upgrade to buster-backports
+""upgrade to buster-backports""
apt-get update -y
apt-get upgrade -y
-## Download neccessary softwares
+## Download necessary softwares
- apt-get install git wget
+ apt-get install -y libcurl3-gnutls/buster git/buster wget
git clone https://github.com/steveicarus/iverilog.git
git clone https://github.com/YosysHQ/yosys.git
git clone https://github.com/YosysHQ/abc.git
git clone https://github.com/oneapi-src/oneTBB.git
git clone https://github.com/verilog-to-routing/vtr-verilog-to-routing.git
- git clone https://github.com/cliffordwolf/icestorm.git
+ git clone https://github.com/yosyshq/icestorm.git
git clone https://github.com/SymbiFlow/prjxray.git
git clone https://github.com/SymbiFlow/prjxray-db.git
git clone https://github.com/SymbiFlow/yosys-symbiflow-plugins.git
### Necessary software to install
- apt-get install build-essential autoconf make g++ bison flex gperf libreadline6-dev
+ apt-get install -y build-essential autoconf make g++ bison flex gperf \
+ libreadline6-dev
### Build Icarus Verilog
### Necessary software to install
- apt-get install -t buster_backports cmake
- apt-get install python3 clang libreadline-dev gawk tcl-dev \
+ apt-get install -y cmake
+ apt-get install -y python3 clang libreadline-dev gawk tcl-dev \
libffi-dev pkg-config libboost-system-dev libboost-python-dev \
libboost-filesystem-dev zlib1g-dev
cd abc
git checkout 4f5f73d18b137930fb3048c0b385c82fa078db38
cd ../yosys
+ git checkout f44110c62561b21fa673f44d8e115c3ee70d2900
ln -s ../abc .
make -j $(nproc) PREFIX=/usr/local/symbiflow/yosys
make PREFIX=/usr/local/symbiflow/yosys install
### Necessary software to install
- apt-get install libhwloc-dev
+ apt-get install -y libhwloc-dev
### Build TBB
cd oneTBB
git checkout v2020.3
- make tbb tbbmalloc tbbproxy tbbbind
+ make -j$(nproc) tbb tbbmalloc tbbproxy tbbbind
install -d -m 0755 /usr/local/symbiflow/oneTBB/lib
cp -dpr include /usr/local/symbiflow/oneTBB
install -Dm755 build/linux_*/*.so* -t /usr/local/symbiflow/oneTBB/lib
cmake -DINSTALL_DIR=/usr/local/symbiflow/oneTBB/lib/cmake/TBB \
-DTBB_VERSION_FILE=/usr/local/symbiflow/oneTBB/include/tbb/tbb_stddef.h \
- -DSYSTEM_NAME=Linux -P cmake/tbb_config_installer.cmake
+ -DSYSTEM_NAME=Linux -P cmake/tbb_config_installer.cmake
+ echo "/usr/local/symbiflow/oneTBB/lib" > /etc/ld.so.conf.d/symbiflow.conf
+ ldconfig
cd ..
## Steps to compile vtr-verilog-to-routing
cd vtr-verilog-to-routing
git checkout 77a3df829fdf509a76b9d7b941376f3835c2576a
mkdir build; cd build
- cmake -DCMAKE_INSTALL_PREFIX=/usr/local/symbiflow/vtr \
+ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/symbiflow/vtr ..
make -j $(nproc)
make install
install -d -m 0755 /usr/local/symbiflow/share/vtr
### Necessary software to install
- apt-get install python3-dev
+ apt-get install -y python3-dev
### Build libxml2
tar -xf libxml2-2.9.12.tar.gz
- libxml2-2.9.12
+ cd libxml2-2.9.12
./configure --prefix=/usr/local/symbiflow/libxml2 --with-history \
--with-python=/usr/bin/python3
make -j $(nproc)
make install
- echo "/usr/local/symbiflow/libxml2/lib" > /etc/ld.so.conf.d/symbiflow.conf
+ echo "/usr/local/symbiflow/libxml2/lib" >> /etc/ld.so.conf.d/symbiflow.conf
ldconfig
export PATH=/usr/local/symbiflow/libxml2/bin:$PATH
cd ..
git submodule update --init --recursive
mkdir build; cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/symbiflow ..
- make
+ make -j$(nproc)
make install
export PATH=/usr/local/symbiflow/bin:$PATH
cd ../..
cd yosys-symbiflow-plugins
git checkout b170f1d3575568d87901422f846b700169e299be
sed -i -e 's@-include third_party/make-env/conda.mk@#-include third_party/make-env/conda.mk@' Makefile
- make
+ make -j$(nproc)
make install
cd ..
### Necessary software to install
- apt-get install libftdi-dev
+ apt-get install -y libftdi-dev
### Build Icestorm
cd icestorm
git checkout 83b8ef947f77723f602b706eac16281e37de278c
- make -j $(nproc) PREFIX=/usr/local/symbiflow
+ make -j $(nproc) PREFIX=/usr/local/symbiflow/icestorm
make PREFIX=/usr/local/symbiflow/icestorm install
+ export PATH=/usr/local/symbiflow/icestorm/bin:$PATH
cd ..
## Steps to compile capnproto
cd pycapnp
git checkout v1.0.0b1
- export PATH=/usr/local/symbiflow/capnproto/bin:$PATH
pip3 install .
cd ..
## Necessary software to install
- apt-get install -y nodejs npm python-pytest openocd flake8 \
- default-jre-headless libantlr4-runtime-dev python3-numpy \
+ apt-get install -y nodejs npm python-pytest openocd flake8 python3-numpy \
python3-intervaltree python3-simplejson python3-intelhex \
python3-importlib-metadata python3-jsonschema python3-packaging \
python3-pyparsing python3-pyrsistent python3-tqdm python3-zipp \
pip3 install -e third_party/python-sdf-timing
pip3 install -e third_party/symbiflow-xc-fasm2bels
- export PATH=/usr/local/iverilog/bin:/usr/local/symbiflow/bin:$PATH
-
mkdir -p env/conda/envs
ln -s /usr/local/symbiflow env/conda/envs/symbiflow_arch_def_base
### Build symbiflow-arch-defs-xc7-artix7-100t
- VPR_NUM_WORKERS=$(nproc)
+ export VPR_NUM_WORKERS=$(nproc)
mkdir build; cd build
cmake -DUSE_CONDA=FALSE -DPRJXRAY_DB_DIR=/usr/local/symbiflow/prjxray-db \
-DINSTALL_FAMILIES=xc7 -DINSTALL_ARCHS=artix7_100t \
- -DCMAKE_INSTALL_PREFIX=/usr/local/symbiflow ..
+ -DINSTALL_DEVICES=xc7a100t -DCMAKE_INSTALL_PREFIX=/usr/local/symbiflow ..
cd xc/xc7/archs/artix7_100t
make install
cd ../..
"If you do not want this target skip"
- VPR_NUM_WORKERS=$(nproc)
+ export VPR_NUM_WORKERS=$(nproc)
mkdir build_artix7; cd build_artix7
cmake -DUSE_CONDA=FALSE -DPRJXRAY_DB_DIR=/usr/local/symbiflow/prjxray-db \