Something about Vivado and Verilog¶
环境配置¶
由于 Vivado 过于大了(100G+)且没有 Mac 版,我不得不仅在寝室的电脑安装了。
Vivado 是一个包含 GUI 的 IDE,但是我自己感觉非常难用,界面复杂而丑陋,并且远程也不是很好的方案。
所以在此我分享一下我使用的环境配置。
在 Mac 上配置 Icarus Verilog 和 GTKWave¶
主要是,你不可能一直到其他地方去跑这个程序来验证正确性,所以我们需要一个能编译的东西,他可以帮你验证程序是否能编译,部分帮你判断程序是否正确。
brew install icarus-verilog
接下来安装 GTKWave,这个是通过看波形图来判断程序的输出是否正确。(不过我还不太会怎么看这个)
可以直接在 repo 看到安装教程:https://github.com/gtkwave/gtkwave
由于 Mac 的接口很少,并且也没法装大型的软件用于烧录,我们接下来在另一台电脑上配置好 Vivado。
在 ArchLinux 上配置 Vivado¶
首先下载.tar.gz的安装包,解压在某个位置。
我安装的是 2020.2 版本(课程推荐版本),可能需要进行一些环境的调整。
sudo pacman -S libxcrypt-compat
然后,建议使用批处理而非 GUI 安装。
首先生成配置文件
./xsetup -b ConfigGen
编辑配置文件~/.Xilinx/install_config.txt后,直接在命令行安装
sudo ./xsetup --agree 3rdPartyEULA,WebTalkTerms,XilinxEULA --batch Install --config ~/.Xilinx/install_config.txt
我第一次使用 GUI 安装的时候卡住了,后来也不知道出现了什么问题,最好只好全部重新安装。
如果使用批处理安装的话,至少可以知道问题出现在哪里了。
安装成功后需要先安装驱动:
# 进入你安装目录下的驱动文件夹(根据你的实际路径修改)
cd /opt/Xilinx/Vivado/2020.2/data/xicom/cable_drivers/lin64/install_script/install_drivers/
# 以 root 权限运行驱动安装脚本
sudo ./install_drivers
然后需要在.bashrc或者.bash_profile加一个source
echo 'source /opt/Xilinx/Vivado/2020.2/settings64.sh' >> ~/.bashrc
接下来可以打开试试了。
如果打开后显示为全白窗口,可以在打开前
export _JAVA_AWT_WM_NONREPARENTING=1
当然,这个也可以加在你的.bashrc里面。
通过 Make 进行编译和烧录¶
可以直接抄我的 Makefile(
Makefile
VIVADO = vivado -mode batch -source
TCL_SCRIPT = run.tcl
BITSTREAM = ./build/top.bit
all: $(BITSTREAM)
$(BITSTREAM): ./*.v ./*.xdc $(TCL_SCRIPT)
mkdir -p build
$(VIVADO) $(TCL_SCRIPT)
prog: $(BITSTREAM)
$(VIVADO) download.tcl
clean:
rm -rf build/ .Xil/ *.log *.jou *.html *.xml
.PHONY: all prog clean
然后需要新建两个.tcl文件
run.tcl
set PART xc7a100tcsg324-1
set BUILD_DIR ./build
read_verilog [glob ./*.v]
read_xdc [glob ./*.xdc]
synth_design -top top -part $PART
opt_design
place_design
route_design
write_bitstream -force $BUILD_DIR/top.bit
download.tcl
open_hw_manager
connect_hw_server
open_hw_target
set device [lindex [get_hw_devices] 0]
set_property PROGRAM.FILE {./build/top.bit} $device
program_hw_devices $device
close_hw_manager
每次写的时候需要写一个top.v文件。约束文件我使用的是nexysa7.xdc。
有些地方可以根据自己的需求进行修改一下。
写完了以后可以直接
make
就会输出二进制文件,然后烧录到开发板,可以直接
make prog
如果需要清理工作目录,直接
make clean
由于我懒得在不同平台编译(他们输出的文件是互相兼容的),我在.gitignore里面没有加.bit文件,可以参考:
.gitignore
.Xil/
*.log
*.jou
*.html
*.xml