导言
给大家分享了Ubuntu的备份包,里面安装了VCS2018,VCS_MAX2018,Verdi2018,以及DC2018,便于大家学习,但有几个问题需要补充一下。并且这次给出一个测试例程模板,实现Vivado自动化编译,以及VCS和Verdi联合仿真的makefile模板。因为亦安也是刚切换到Linux平台,难免有错误的地方,有任何问题请后台联系。
问题补充
上次分享的Ubuntu2018.04尽管安装好了相关软件,但仍有少量问题需要修复:
-
WSLg需要win11(内部版本22000)才能支持,否则运行Linux GUI需要安装桌面。 -
.bashrc文件中有个环境路径有误,正确的如下,我给的多了个PLI。
export LD_LIBRARY_PATH=/usr/synopsys/verdi/Verdi_O-2018.09-SP2/share/PLI/VCS/LINUX64
-
由于VCS这些EDA需要比较低的gcc和g++版本支持,所以需要换掉当前比较高的版本,一般大家安装在ubuntu上都会有这个问题,执行以下命令:
cd /usr/bin sudo rm gcc sudo ln -s gcc-4.8 gcc sudo rm g++ sudo ln -s g++-4.8 g++
之后检查gcc和g++版本即可,如果方法不奏效,那么添加支持gcc旧版本的apt源,直接安装即可。
SPI循环实例
VCS+Verdi仿真
这是给大家的文件结构(代码我随便找的,没有验证SPI正确性,主要给大家演示Ubuntu中运行流程):
. ├── Makefile ├── common │ └── vivado.mk ├── fpga │ └── Makefile ├── fpga.xdc ├── rtl │ ├── SPI_Master.v │ ├── SPI_Slave.v │ └── SPI_loopback.v ├── sim │ ├── Makefile │ └── filelist.f └── tb ├── SPI_Master_tb.v └── SPI_loopback_tb.v
仿真在sim文件夹,我们cd到sim文件夹,执行make vcs之后执行make verdi便可以实现联合仿真,filelist.f文件里面是仿真文件的路径,tb文件需要添加如下代码生成tb.fsdb文件。
initial begin $fsdbDumpfile("tb.fsdb");// $fsdbDumpvars; end
下图是执行完仿真的波形图:
sim下的makefile:
# 这是一个vcs+verdi #-------------------------------------------------------------------------------- comp : clean vcs #-------------------------------------------------------------------------------- vcs : vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed -f filelist.f -timescale=1ns/1ps -fsdb -full64 -R +vc +v2k -sverilog -debug_all -P ${LD_LIBRARY_PATH}/novas.tab ${LD_LIBRARY_PATH}/pli.a | tee vcs.log & #-------------------------------------------------------------------------------- verdi : verdi -f filelist.f -ssf tb.fsdb & #-------------------------------------------------------------------------------- clean : rm -rf *~ core csrc simv* vc_hdrs.h ucli.key urg* *.log novas.* *.fsdb* verdiLog 64* DVEfiles *.vpd #--------------------------------------------------------------------------------
注意,Makefile需要指定gcc和g++版本。
综合
这里使用Vivado,cd到fpga目录下,执行make all即可实现综合以及应用生成bit流,因为没有约束,会有个生成bit失败的报错,忽略,或者大家修改Makefile文件,仅保留综合。
# FPGA settings FPGA_PART = xc7k325tffg900-2 FPGA_TOP = SPI_loopback FPGA_ARCH = Kintex7
# Files for synthesis
SYN_FILES = rtl/SPI_loopback.v
SYN_FILES += rtl/SPI_Master.v
SYN_FILES += rtl/SPI_Slave.v
# XDC files
XDC_FILES = fpga.xdc
include ../common/vivado.mk
请大家根据自己的配置修改Makefile,不喜欢这个模板的自行修改,我只是简单介绍一下基本的运行流程。
总结
参考资料
SPI代码源自github:
https://github.com/halftop/Interface-Protocol-in-Verilog.git
Makefile模板部分源自:
https://github.com/alexforencich