Add nextpnr-xilinx installation script
authorR Veera Kumar <vklr@vkten.in>
Mon, 4 Apr 2022 11:38:30 +0000 (17:08 +0530)
committerR Veera Kumar <vklr@vkten.in>
Mon, 4 Apr 2022 11:38:30 +0000 (17:08 +0530)
nextpnr-xilinx-install [new file with mode: 0755]

diff --git a/nextpnr-xilinx-install b/nextpnr-xilinx-install
new file mode 100755 (executable)
index 0000000..1b5d085
--- /dev/null
@@ -0,0 +1,119 @@
+#!/bin/bash
+if [ "$EUID" -ne 0 ]
+  then echo "Please run as root using 'sudo bash'"
+  exit
+fi
+
+#!!! 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
+cat << EOF > /etc/apt/preferences.d/99buster-backports
+Package: *
+Pin: release a=buster-backports
+Pin-Priority: 900
+EOF
+
+# upgrade to buster-backports
+apt-get update -y
+apt-get upgrade -y
+
+# change into $SUDO_USER home directory
+cd /home/$SUDO_USER
+mkdir -p src/nextpnr-xilinx
+cd src/nextpnr-xilinx
+
+apt-get install -y --allow-downgrades libcurl3-gnutls/buster git/buster git-man/buster
+
+git clone https://github.com/YosysHQ/yosys.git
+git clone https://github.com/YosysHQ/abc.git
+git clone https://github.com/f4pga/prjxray.git
+git clone https://github.com/SymbiFlow/prjxray-db.git
+git clone https://github.com/gatecat/nextpnr-xilinx.git
+
+## Steps to compile Yosys
+
+### Necessary software to install
+
+apt-get install -y build-essential make g++ cmake bison flex python3 \
+ clang libreadline-dev gawk tcl-dev libffi-dev pkg-config zlib1g-dev \
+ libboost-system-dev libboost-python-dev libboost-filesystem-dev
+
+### Build Yosys
+
+cd abc
+git checkout 00b674d5b3ccefc7f2abcbf5b650fc14298ac549
+cd ../yosys
+git checkout 6318db6152d053244adb316fda6e01a32a4f3c72
+ln -s ../abc .
+make -j $(nproc) PREFIX=/usr/local/nextpnr-xilinx
+make PREFIX=/usr/local/nextpnr-xilinx install
+export PATH=/usr/local/nextpnr-xilinx/bin:$PATH
+cd ..
+
+## Steps to compile prjxray
+
+### Necessary software to install
+
+apt-get install -y python3-pip
+
+### Build prjxray
+
+cd prjxray
+git checkout 18b92012afe2b03f3f975a78c4372c74b60dca0c
+git submodule update --init --recursive
+mkdir build; cd build
+cmake -DCMAKE_INSTALL_PREFIX=/usr/local/nextpnr-xilinx ..
+make -j$(nproc)
+make install
+install -d -m 0755 /usr/local/nextpnr-xilinx/build/tools
+install -m 0755 tools/{bitread,bittool,frame_address_decoder,gen_part_base_yaml,segmatch,xc7frames2bit,xc7patch} \
+/usr/local/nextpnr-xilinx/build/tools
+cd ..
+cp -dpr utils /usr/local/nextpnr-xilinx
+sed -i -e '/^# Vivado /,$d' /usr/local/nextpnr-xilinx/utils/environment.sh
+pip3 install .
+cd ..
+
+## Steps to compile prjxray-db
+
+### Install prjxray-db
+
+cd prjxray-db
+git archive --format=tar --prefix=database/ \
+ 0a0addedd73e7e4139d52a6d8db4258763e0f1f3 | \
+ tar -C /usr/local/nextpnr-xilinx -xf -
+cd ..
+
+## Steps to compile nextpnr-xilinx
+
+### Necessary software to install
+
+apt-get install -y libboost-thread-dev libboost-iostreams-dev \
+ libboost-program-options-dev libeigen3-dev
+
+### Build nextpnr-xilinx
+
+cd nextpnr-xilinx
+git checkout 565588a69ea95a52f7c7592f4ed81d9bef6cfb60
+git submodule init
+git submodule update
+cmake -DARCH=xilinx -DBUILD_GUI=OFF \
+       -DCMAKE_INSTALL_PREFIX=/usr/local/nextpnr-xilinx .
+make -j$(nproc)
+make install
+ln -s xc7a100tcsg324-1 xilinx/external/prjxray-db/artix7/xc7a100t
+python3 xilinx/python/bbaexport.py --device xc7a100tcsg324-1 \
+ --bba xilinx/xc7a100t.bba
+./bbasm --l xilinx/xc7a100t.bba xilinx/xc7a100t.bin
+install -d -m 0755 /usr/local/nextpnr-xilinx/share/xilinx
+install -m 0755 xilinx/xc7a100t.bin /usr/local/nextpnr-xilinx/share/xilinx
+export XRAY_DIR=/usr/local/nextpnr-xilinx
+cd ..
+
+cd /home/$SUDO_USER/src/nextpnr-xilinx
+chown -R $SUDO_USER .
+chgrp -R $SUDO_USER .
+