[VCS] VCS编译过程及makefile 脚本 - bulaqi/IC-DV.github.io GitHub Wiki

1. 【概述】

  • VCS的仿真可以分为3个步骤:compile、elaborate和simulation,所以makefile脚本中也需要有这3个重要部分,脚本在平台中可以看到,后面会逐一对脚本功能进行介绍。

1. Compile

将硬件语言编译成库的过程,具体来说可能会涉及3中不同类型的文件:verilog、VHDL和SystemVerilog。这三种文件的编译方法:verilog使用的是vlogan命令,systemverilog使用的也是vlogan命令,但是要添加-sverilg选项,VHDL使用的则是vhdlan这个命令。编译的过程中verilog文件可能会涉及到xilinx的IP或者硬核,这时候需要通过synopsys_sim.setup这个文件来指定IP库的位置,如下图所示,首先需要链接指定的IP库,其次声明当前编译库路径,和modelsim中的vlib和vmap是同样道理 图1.1.2-2 自定义synopsys_sim.setup 自定义的setup文件需要放在与makefile脚本同目录的路径下。VCS参考手册对synopsys_sim.setup文件搜索路径给出详细解释,可以看到VCS编译工具在运行时会依照先后顺序从以下3个路径查找synopsys_sim.setup文件。 图1.1.2-3 VCS手册定义setup文件搜索路径 所以只需要将synopsys_sim.setup文件放置在与makefile相同的目录下即可,VCS工具会自动搜索并识别IP库的位置。下图为makefile脚本中的compile部分,主要是指定临时编译库和编译Verilog文件 image
图1.1.2-4 compile部分脚本

2. Elaborate

上面生成的库文件,以及可能用到的xilinx IP的库文件,生成仿真的可执行文件。具体的脚本如下,主要需要指定设计的bench顶层和全局复位的glbl模块,如果需要dump波形,还需要在编译中通过-P指定verdi的$fsdbDump函数的库,最后生成.o后缀的可执行文件用于最后的simulate步骤 image\

3. Simulate

这一步就是执行上面生成的simv.o可执行文件,进行仿真。由于需要生成适用于verdi的fsdb文件,所以在bench中还需要添加任务语句。Simulate部分脚本和bench如下所示。
image
图1.1.2-6 simulate部分脚本
image
图1.1.2-7 bench中设置fsdb波形

参考: https://zhuanlan.zhihu.com/p/280702874#:~:text=1.1%20%E3%80%81VCS%E4%BB%BF%E7%9C%9F%E6%B5%81%E7%A8%8B

⚠️ **GitHub.com Fallback** ⚠️