#!/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 .