支持ice40,ecp5,Artix-7,UltraScale+
-
预备安装:
- CMake 3.3 or later
- Modern C++11 compiler (clang-format required for development)
- Qt5 or later (qt5-default for Ubuntu 16.04)
- Python 3.5 or later, python3-dev
- Boost libraries(libboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-python-dev libboost-iostreams-dev libboost-dev or libboost-all-dev for Ubuntu)
- Eigen3 (libeigen3-dev for Ubuntu)
-
注意事项:
- nextpnr-ice40 和 nextpnr-ecp5 的编译需要 gcc-5 g++-5,以支持c++14
- 更换 gcc5 编译器后,boost需要重新安装(安装前将系统默认python切换至python3),否则链接时会出现:"对 boost::program_options" 等头文件的未定义引用
./bootstrap.sh --prefix=/usr // 指定头文件和库文件的安装目录 /usr/include /usr/lib ./b2 --build-type=complete --layout=tagged // 安装最全的boost sudo ./b2 install
-
下载 Yosys :
git clone https://github.com/YosysHQ/yosys.git yosys cd yosys make -j$(nproc) sudo make install
-
下载 IceStorm 工具包:
git clone https://github.com/YosysHQ/icestorm.git icestorm cd icestorm make -j$(nproc) sudo make install # 会将icestorm安装至/usr/local本地目录
-
下载nextpnr,执行下述代码会在 nextpnr 目录下生成"nextpnr-ice40"文件:
git clone https://github.com/YosysHQ/nextpnr nextpnr cd nextpnr cmake -DARCH=ice40 -DCMAKE_INSTALL_PREFIX=/usr/local . make -j$(nproc) sudo make install
-
运行例子:
cd ice40/examples/blinky yosys -p 'synth_ice40 -top blinky -json blinky.json' blinky.v # 综合,生成网表blinky.json nextpnr-ice40 --hx1k --json blinky.json --pcf blinky.pcf --asc blinky.asc # 布局、布线 icepack blinky.asc blinky.bin # 生成二进制比特流文件
如果想要图形化界面,第三行换成如下命令:
nextpnr-ice40 --json blinky.json --pcf blinky.pcf --asc blinky.asc --gui
然后通过界面的功能按钮实现打包,布局,布线和写出相应输出文件。
- 下载并安装Project Trellis工具:
git clone --recursive https://github.com/YosysHQ/prjtrellis cd libtrellis cmake -DCMAKE_INSTALL_PREFIX=/usr/local make -j$(nproc) sudo make install
- 在 nextpnr 目录下执行如下代码,生成 nextpnr-ecp5 文件:
cmake -DARCH=ecp5 -DTRELLIS_INSTALL_PREFIX=/usr/local . make -j$(nproc) sudo make install
- 运行例子在prjtrellis/examples目录:
如果想要图形化界面,第三行换成如下命令:
cd prjtrellis/examples/ecp5_evn yosys -p 'synth_ecp5 -json blinky.json' blinky.v # 综合,生成网表blinky.json nextpnr-ecp5 --json blinky.json --textcfg blinky_out.config --um5g-85k --package CABGA381 --lpf ecp5evn.lpf ecppack --svf blinky.svf blinky_out.config blinky.bit
然后通过界面的功能按钮实现打包,布局,布线和写出相应输出文件。nextpnr-ecp5 --json blinky.json --textcfg blinky_out.config --um5g-85k --package CABGA381 --lpf ecp5evn.lpf --gui
- 下载nextpnr-xilinx:git clone https://github.com/daveshah1/nextpnr-xilinx/
- 进入 nextpnr-xilinx 目录,下载子模块:
- git submodule init
- git submodule update
- 注意:没有这一步,子模块“tests” “xilinx/external/prjxray-db” “xilinx/external/nextpnr-xilinx-meta”中会缺数据文件
- 下载Project Xray:git clone https://github.com/SymbiFlow/prjxray
- 进入 prjxray 目录,构建Project Xray:
- 安装 Vivado 2017.2 (必须是这个版本) ,创建环境变量:
export XRAY_VIVADO_SETTINGS=/opt/Xilinx/Vivado/2017.2/settings64.sh export XRAY_DIR=/home/liyu/Desktop/nextpnrXilinx/nextpnr-xilinx/prjxray
- 下载子模块:git submodule update --init --recursive
- 安装cmake:sudo apt-get install cmake # version 3.5.0 or later required
- 构建工具:make build
- 在本地安装Python环境:
sudo apt-get install virtualenv python3 python3-pip python3-virtualenv python3-yaml make env
- 运行任何其他命令之前,设置环境:
source settings/artix7.sh
- 下载当前的稳定版本:
./download-latest-db.sh
- Pick a fuzzer (or write your own) and run:
cd fuzzers/010-clb-lutinit make -j$(nproc) run
- 创建HTML文档:
构建完毕。cd htmlgen python3 htmlgen.py
- 回到 nextpnr-xilinx 目录,下载:yosys (在 yosys 目录下执行
make
,需要编译通过) - 在 nextpnr-xilinx 目录下执行下述代码,生成“nextpnr-xilinx”可执行文件,以进行打包、布局和布线:
cmake -DARCH=xilinx
make
- 执行“xilinx/examples/arty-a35”中的例子 - 由XRay生成芯片设备数据库
- 设置环境变量:export XRAY_DIR=/path/to/prjxray
- 执行代码:
即可生成比特流文件。pypy3 xilinx/python/bbaexport.py --device xc7a35tcsg324-1 --bba xilinx/xc7a35t.bba # 生成.bba格式的芯片数据库 ./bbasm -l xilinx/xc7a35t.bba xilinx/xc7a35t.bin # -l表示little endian,指明系统的字节存储顺序是little cd xilinx/examples/arty-a35 ./blinky.sh
以nextpnr-xilinx为例:
- 以CMake Project形式将nextpnr根目录导入Clion,如果失败,根据错误信息配置环境
- 修改 CMakeLists.txt 第211行:set(CMAKE_BUILD_TYPE "Debug")
- 选择nextpnr-xilinx,执行build
- 在Run/Debug Configuration下配置参数: Program arguments:
--chipdb /home/liyu/Desktop/EFCAD/nextpnr-xilinx/cmake-build-debug/xc7a35t.bin --xdc /home/liyu/Desktop/EFCAD/nextpnr-xilinx/cmake-build-debug/examples/arty-a35/arty.xdc --json /home/liyu/Desktop/EFCAD/nextpnr-xilinx/cmake-build-debug/examples/arty-a35/blinky.json --write blinky_routed.json --fasm blinky.fasm
Working directory:
/home/liyu/Desktop/EFCAD/nextpnr-xilinx/cmake-build-debug/examples/arty-a35
注意:与命令行执行的:nextpnr-xilinx --chipdb XXX.bin --xdc XXX.xdc --json xxx.json --write xxx_routed.json --fasm xxx.fasm
是一样的
- 可以调试或者运行