VCS-DVE

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

下面开始进行VCS仿真。VCS要使用图形化界面dve,必须得先编译得到vpd文件,才能dve看波形。首先是编译verilog文件。主要命令如下vcsverilog文件[-y搜索路径+libext+.v-debug_all–ncli]其中[]中的选项是可选的。-y搜索路径是指定编译的verilog代码在什么路径下+libext+.v是指该路径下所有的后缀为.v的文件-debug_all是调试用的,如果要进行调试,就要加这个命令。-ncli是命令行ncli调试。以上是主要的可选项,其余的自行百度。我的文件目录如上所示,测试代码在当前目录下,其余的调用的模块代码在rtl目录下。所以,要编译。用如下命令:vcsceshi_uart_test.v-y./rtl+libext.+v就进行编译了。-y的作用就是指定搜索路径,因为有可能我们的verilog代码不都是在当前目录下,而是在一个文件夹里面。这样就可以用-y指定该文件夹,这样vcs编译的时候,就会去该目录下去寻找verilog文件。而+libext+.v是指在该搜索路径下,将顶层模块中用到的例化模块都给包括进来。如果所有的verilog文件都在当前目录下,那么可直接执行vcsa.vb.vc.v……(注意,testbench要放在最前面,因为testbench中有`timescale)如果只是vcsceshi_uart_test.v–y./rtl就会有如下错误提示测试文件中的例化模块找不到。编译完成后,会在当前目录下,生成一个simv文件。这个文件是一个可执行文件,执行这个文件,就可以看到我们的仿真结果。以文本显示。命令是./simv因为在testbench中没有写显示内容,所以仿真结果是看不到显示结果的。可以用dve查看波形。命令./simv–gui可以看到会有错误,这是因为没有生成vpd文件。VCS的dve是执行vpd文件的。直接vcsverilog文件是不会产生vpd文件的。要加一个-debug_all或者-debug或者-debug_pp命令。不过推荐用-debug_all,因为这个可以加断点。即vcsceshi_uart_test.v-y./rtl+libext.+v-debug_all然后在./simv–gui就打开了dve。同时在当前目录下,产生了inter.vpd文件。接下来的操作和一般的verilog仿真软件是一样的。选中信号加入到波形中,然后开始仿真。就可以看到波形了。开始仿真。就可以看到波形了。接下来是命令行调试。命令行调试不用看波形,用命令,执行仿真,观看信号。命令行仿真是在ucli中进行的。所以在编译命令中,要加入-ucli。使用命令行调试,可在testbench中加入$stop语句。这样仿真可以在该处停下来,这样可以查看各个信号的值。如我再testbench中加入两个$stop语句。执行命令vcsceshi_uart_test.v-y./rtl+libext.+v-debug_all–ucli–R-R表示编译后立即执行。不加这个选项那执行完上个命令后,在执行命令./simv–ucli才启动ucli调试。显示ucli就表示进入ucli调试了。ucli中有一些常用命令,scope显示当前的顶层模块scopeu1就表示进入到当前顶层模块的u1模块,同时将u1模块设置为顶层模块scope–up回到目前顶层模块的上一层。scope可以用来选择不同的模块,以此来显示不同的信号。因为show是显示当前顶层的信号以及子模块show显示当前顶层模块的信号以及子模块show信号–value-radixhex/bin/dec显示信号的值以特定的进制显示。run运行仿真run一直运行,直到遇到$stop或者设置的断点runtime运行多少时间停止(不推荐)run-posedge信号运行到信号的上升沿停止run-negedge信号运行到信号的下降沿停止run-change信号信号有变化时停止stop设置断点stop显示断点stop–posedge信号在信号的上升沿设置断点stop-negedge信号在信号的下降沿设置断点stop-condition{信号表达式}信号表达式为真的地方设置断点stop-delete断点值删除断点值的断点restart重新开启ucli调试模式-h帮助命令命令后面接–h显示当前命令的帮助如scope–h显示接下来就开始调试首先scope命令,显示当前顶层为ceshi_uart_test,即我们的testbench模块。第二个命令show显示当前模块下有哪些信号和子模块。可看出,有7个信号,和一个子模块uut。即我们例化的uart_top模块。第三个命令show–value显示信号的值,以16进制显示,因为还没有开始运行,所以信号的值都是x。不定值。第四个命令scopeuut进入到uut子模块。当前的顶层模块为uut第五个命令show显示当前顶层模块uut的信号以及子模块,这里有11个信号,3个子模块。执行scope–up回到顶层模块。第六个命令run命令在56行有$stop,所以在该处,仿真暂停。第七个命令show命令显示信号的值因为有些值还没有初始化,所以显示为x。第八个命令show命令显示子模块uut中的信号。调用模块中的信号是用.调用的。第九个命令设置断点1在clk的上升沿设置断点1第十个命令设置断点2在clk的下降沿设置断点2第十一个命令设置断点3在rst为1设置断点3第十二个命令显示断点设置了三个断点,这里就显示3个断点第十三个命令删除断点2删除在clk下降沿设置的断点2第十四个命令显示断点删除掉了断点2这里就显示断点1和3断点设置好后,接下来就run,show看信号就可以了。使用restart可以重新开始调试。即仿真时刻回到0时刻。每次show–value比较麻烦,可以使用aliasvarshow–value用var代替show–value。如果show–value信号就可以var信号

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功