逻辑仿真工具VCS的使用-Makefile

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

        Gvim写RTL codeVCS仿真Verdi看波形DC做综合下约束Primetime做STASpyglass做异步时序分析。 
         VCS全称Verilog Computer Simulation VCS是逻辑仿真EDA工具的编译源代码的命令。要用VCS做编译仿真首先得有一个RTL代码比如我们写了一个全加器和全加器的testbench总共两个.v文件 。

有了RTL文件后如何调用VCS进行编译呢? 在 linux 操作系统的terminal键入

        vcs -sverilog -debug_all full_adder.v full_adder_tb.v -l com.log
上面有很多细节一个一个讲

        -sverilog编译命令选项识别SystemVerilog语法如果代码中有SV语法则编译的时候必须加这个选项。

        -debug_all编译命令选项可以将debug的信息全部保存下来比如波形文件。

        -l com.log编译命令选项将编译过程生成的日志写入com.log文件。

        执行完上面这条代码后如果编译没有报错一切正确那么在当前文件夹就会生成一个simv文件这个文件就是仿真文件我们跑仿真就用这个文件注意是simv不是sim。

        当然除了写命令调用VCS也可以用命令dve & 启动逻辑仿真工具VCS自带的一个图形化界面dve。命令中的& 表示后台运行dve命令不占用当前的 terminal。 

        图形化界面如果想要跑仿真点击simulate的setup选项然后选中编译过后的仿真文件simv文件就可以进行跑仿真了。

把需要看波形的信号点击Add to wave然后就会打开一个波形窗口。

生成的波形窗口如下在底层的输入命名行输入run就会开始跑仿真了。

 输入run之后开始仿真就可以看波形了。 

按f键显示所有波形下面的log窗口就是显示仿真的日志。

        上面讲的操作是用界面化的DVE窗口去操作的实际上我们都使用脚本命令的方法去操作写命令行编译、写命令行仿真、写命令行看波形。

        看波形命令为dve -vpd vcdplus.vpd & 想要看波形我们需要在tb文件里面输出波形文件才行在tb中展示为

                                        initial begin

                                            $vcdpluson;

                                        end 

输出波形文件后就可以用脚本命令调用dve看波形了。

综上我们用VCS进行编译、仿真、看波形的脚本命令分别为

        编译源代码vcs -sverilog -debug_all full_adder.v full_adder_tb.v -l com.log

        跑仿真./simv -l sim.log

        看波形dve -vpd vcdplus.vpd &

        但事实上如果每次编译仿真看波形都要用手去打这些字符的话会很累能不能用什么脚本命令让我们能够键入很少的字符就可以进行编译仿真看波形甚至一条龙服务呢有Makefile。

        我们用Gvim新建一个文本文件命名为Makefile然后如图所示写命令写命令的方式就是写一个随便什么关键字然后+冒号+回车再键入你设置关键字绑定的脚本命令。比如我们上面写的com是用来编译的用户自定义关键字下一行就紧跟着我们定义关键字所代表的代码。注意一个细节怎么判断我们写的脚本是否被自定义挂件字链接了呢看颜色如果没有连接上的话颜色是普通的黑色如下图

这就代表没链接上通常是由于缩进问题导致的这点需要注意。

        还有一个细节细心的人会发现我们编译的时候没有把文件的名字写到com脚本连接的命令里而是写 -f rtl.list。这是什么意思呢这里的rtl.list用来存放我们rtl 代码的名字用这种方式更方便后续修改rtl代码名称也好增减也好都好修改我们只需要把所有rtl代码的名字都存放到rtl.list中生成rtl.list的命令也很简单只要检索当前目录下所有以.v结尾的文件的文件名然后存入rtl.list就行了linux命令find -name "*.v" > rtl.list

        对于某个信号还有一些好用的快捷键可以实用比如圈出来的三个按键 

         它们分别是Trace Drivers Ctrl + D追踪它的驱动、Trace Value Change ( Ctrl + Shift + D) 追踪代码中数值改变的位置、Trace Loads Ctrl + Loads追踪它的负载。 

 

 选择要追踪的边沿或者数值可以直接追踪。 

        在上面已经提到过Makefile 脚本的书写格式就是写一个关键字加冒号然后回车输入一行命令输入完后以后要运行这行命令就不用全部打全了只需要在terminal界面输入make 关键字就行了。

        比如我们已经在当前文件夹下写好了上面所示的Makefile脚本文件然后我们也写好了rtl代码并在terminal 中输入find -name "*.v" >rtl.list把.v文件的相对路径都放到了rtl.list中。这时候如果要编译我们只需要在terminal界面输入make com 回车

        系统会自动帮我们打出com关键字所链接的命令行如图所示 

Makefile 脚本命令解释


        vcs表示调用vcs软件-sverilog 表示编译所用的规范如果我们写的代码里有systemverilog就一定要有这个选项-debug_all 完全调试模式 -timescale = 1ns/1ps 这个在编译的时候就写那么在tb里面就不用写了表示最小仿真时间是1ns最小仿真精度是1ps。-f rtl.list意思是吧rtl.list里的所有文件都编译进去 -l com.log 意思是把编译产生的编译文件保存在com.log文件中。

        ./simv 表示运行当前文件夹下的simv文件这个文件在com命令过后会生成也就是编译结束后会生成。-l sim.log意思是把仿真产生的仿真信息都存储在sim.log文本文件中。 

        把以后缀“.vpd”、“.log”、“.key”、“.vdb”的文件删掉把csrc文件删掉把sim开头的文件删掉把DVEfiles文件删掉。删掉运行verdi软件产生的一些附属文件。

        这里写的是设计的一些VCS操作实际上如果是做验证的话还会有更多的一些操作比如收覆盖率仿真给随机种子等。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6