本文最后更新于:2024年12月20日 下午
Synopsys全套docker镜像使用指南
- 知乎
Windows
| Docker Docs
VCS部署:使用docker搭建环境
过程参考文章:
记录wsl安装
Windows
| Docker Docs
为docker配置镜像加速器(阿里云)
启动docker容器
拉取镜像(由于镜像在github上,需要科学上网,否则一直拉取失败)
1 docker pull phyzli/ubuntu18.04_xfce4_vnc4server_synopsys2016
- 启动镜像(并创建容器)
1 docker run -it -p 5902:5902 -p 1234:22 --hostname lizhen --mac-address 02:42:ac:11:00:02 -v //d/wsl/docker-data/vcs-data:/mnt/vcsdata phyzli/ubuntu18.04_xfce4_vnc4server_synopsys2016
- 在容器内打开VNC远程桌面(图形界面比命令行界面更方便使用)
1 vncserver -geometry 1920x1080 :2
- 打开VNC viewer软件,配置连接,地址是127.0.0.1:5902,连接密码为zhenchen
- 打开之后就可以进入到类似于虚拟机的界面,可以在这里面使用vcs与verdi联合仿真了
ps:如果想要像使用虚拟机一样使用docker容器(即每次使用完毕之后“关机”,再次使用时“开机”后能恢复到关机之前的状态 ),那么我们在使用容器之后不能删除这个容器,而是将其终止(stop)。
我们可以在命令行使用指令docker container
stop来终止一个运行中的容器,之后使用时使用docker container
start启动即可,启动之后将会恢复之前的状态。也可以在docker
desktop中点击“暂停”按钮进行终止操作。
对于使用了vncviewer的用户,每次容器重启后之前设置的虚拟机界面都无法重新打开了,会报一个下图中的错误:
解决方法是删除/tmp/.X2-lock和
/tmp/.X11-unix/X2这两个文件后再重洗输入vncserver指令打开,我们可以将其写到一个脚本,每次启动容器后自动执行即可。
1 2 3 rm -rf /tmp/.X2-lockrm -rf /tmp/.X11-unix/X2 vncserver -geometry 1920x1080 :2
vcs与verdi联合仿真
VCS入门教程(一) -
知乎
IC入门 第三篇
VCS、Verdi - 知乎
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 vcs [compile_time_option] [compile_time_option] : #编译选项用来控制编译过程 -f filename #指定编译源文件,可以同时编译多个源文件 -timescale=1ns/1ps #设置仿真精度 -sverilog #指定兼容SystemVerilog# +v2k #兼容verilog 2001 以前的标准 -Mupdate #只编译有改动的.v文件 -R #编译后立即运行./simv文件 -l ***.log #编译信息存放在.log中,也就是出现在终端上的所有信息 -P ***/verdi/share/PLI/VCS/LINUX/novas.tab #调用verdi的库,也就是在tb文件中添加几行代码所需要的文件路径 ***/verdi/share/PLI/VCS/LINUX/pli.a -debug_all #用于产生debug所需的文件 -f filename参数适合同时编译多个源文件 将源文件名称写入.f文件中,并将其指定给这个参数 Eg: ---------------- verilog_file.f ./fa.v ./add4.v ./add8.v ./addertb.v ----------------
1 2 3 4 5 ./simv [run_time_option] #默认编译后产生可执行文件为simv [run_time_option]: -l ***.log #编译信息存放在.log中,也就是出现在终端上的所有信息 -gui=verdi #使用verdi显示波形
VCS与Verdi的联合仿真-腾讯云开发者社区-腾讯云
vcs +
verdi 查看仿真波形_verdi里g1g2什么意思-CSDN博客
Verdi操作小结_verdi在代码里显示信号值-CSDN博客
Verdi只能查看fsdb格式 的波形,而VCS可以生成供DVE查看的vpd格式的波形,如果想要输出fsdb格式的波形,需要额外在testbench中添加fsdb指令 ,或者通过脚本进行设置。FSDB全称为(Fast
Signal Data
Base):快速信号数据库,fsdb文件是Verdi使用的一种专用数据格式,fsdb通过verilog的PLI接口实现
verdi报错
要产生fsdb文件还需要在tb文件中加上一下几行代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 initial begin $fsdbDumpfile("tb_top.fsdb" ); $fsdbDumpvars(0 ,tb_top); $fsdbDumpSVA(); $fsdbDumpMDA(); end 当然,为了能够成功调用诸如fsdbDumpfile()、fsdbDumpvars()等非HDL标准语法规定的函数 我们还需要在上述编译选项中加上: -P ***/verdi/share/PLI/VCS/LINUX/novas.tab ***/verdi/share/PLI/VCS/LINUX/pli.a 这用来调用verdi的库,也就是在tb文件中添加的这四行代码所需要的文件路径(这个路径根据个人电脑设置不同而有所差异)
1 2 3 4 5 verdi -sv #Systemverilog的支持 +v2k #兼容verilog 2001 以前的标准 -f ***.f #添加.f文件里的源码 -ssf tb_top.fsdb #加载fsdb波形,tb.sv中产生的波形名字有关 -nologo #打开界面时不出现logo
export
LD_LIBRARY_PATH=/usr/synopsys/verdi-L-2016.06-1/share/PLI/VCS/linux64
ps:当需要使用到vcs仿真,verdi查看波形时,在终端上一个一个敲指令变得十分不方便,我们可以使用makefile来帮助我们编译仿真
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 -----------------------------makefile------------------------------- .PHONY: com sim verdi clean OUTPUT = tb_binary2bcd FILE = b2bcd.f com: vcs -sverilog +v2k -f ${FILE} \ -timescale=1ns/1ns \ -o ${OUTPUT} \ -kdb \ -lca \ -debug_access+all \ -l compile.log \ -P /usr/synopsys/verdi-L-2016.06-1/share/PLI/VCS/linux64/novas.tab \ /usr/synopsys/verdi-L-2016.06-1/share/PLI/VCS/linux64/pli.a sim: ./${OUTPUT} -l sim.log verdi: verdi +v2k -f ${FILE} \ -ssf ${OUTPUT}.fsdb \ -nologo clean: rm -rf ./csrc *.daidir *.log simv* *.key *.fsdb ${OUTPUT} -----------------------------makefile------------------------------- 1、在终端中敲入make com,相当于输入: vcs -sverilog +v2k -f b2bcd.f -timescale=1ns/1ns -o tb_binary2bcd -kdb -lca -debug_access+all -l compile.log \ -P /usr/synopsys/verdi-L-2016.06-1/share/PLI/VCS/linux64/novas.tab /usr/synopsys/verdi-L-2016.06-1/share/PLI/VCS/linux64/pli.a 2、在终端中敲入make sim,相当于输入: ./tb_binary2bcd -l sim.log 3、在终端中敲入make clean,相当于输入: rm -rf ./csrc *.daidir *.log simv* *.key *.fsdb tb_binary2bcd
总结
总的来说,就是用shell、makefile脚本先去调用vcs,vcs进行对verilog文件进行编译、仿真并产生.fsdb文件,然后再调用verdi添加所有工程文件,打开.fsdb文件对波形进行查看。