书接上回:
仿真命令
1. 执行run过程
命令:Simv
结果:此时会生成一个ucli.key文件。该文件的作用是:如果事先在该文件里写好了ucli命令,仿真过程中会读取这些ucli命令执行相关的操作,而不用重新编译。
2. run log存储到文件里
命令:-l 文件名
结果:生成run.log:
3. 指定种子
命令:+seed=指定的种子
结果:在run.log里就可以看到种子号
4. 生成波形
在sv文件里写如下代码:
$fsdbDumpvars();
此时还不能直接生成fsdb文件,会报语法错误:
原因和解决办法见:vcs常用编译命令的第三点
编译过后,结果:会产生两个新的文件:navas_dump.log/navas.fsdb
navas_dump.log:记录产生波形过程的日志文件
navas.fsdb:产生波形的二进制文件
5. 打开波形
命令:verdi ***.fsdb
执行该命令后,会产生一个文件:novas.conf和一个文件夹:verdiLog
novas.conf:用于存储layout信息,一般不用,打开verdi时,verdi会读取该文件里的配置信息。因此,第一次打开verdi时,因为通常该文件不存在所以会报一个warning显示没有该文件
第一次打开verdi后,会生成一个空文件novas.conf,第二次打开verdi时,就不会再报该warning了。
verdiLog:里面存放了一些verdi的编译、执行等信息
打开波形的界面如下:
可以看到波形已经成功加载,但是波形对应的rtl代码并没有加载进来,此时需要参照第6步骤。
6. Verdi加载rtl代码
加载正确的rtl代码前提是要给verdi提供simv.daidir/kdb.elab++文件夹
具体参照vcs常用编译命令第4个步骤
生成simv.daidir/kdb.elab++文件夹后,再次按照3.2的命令打开verdi,并加上-ssf命令,verdi就会自动去fsdb文件里去解析simv.daidir/kdb.elab++文件夹,就会成功加载rtl代码:
7. 加载一个.v的verilog文件
命令:-v 文件名.v
8. 指定uvm库
命令:-ntb_opts uvm-1.1/uvm-1.2
该命令加入前,如果想要使用uvm库里定义的代码,如uvm_sequence,就会报错:
加入该命令后,编译过程可以看到很明显编译了uvm库文件:
但是还是有编译错误。这是因为uvm库文件打包成了pkg,使用时需要在使用的地方import进来,如下:
此时再编译就不会报错,uvm库里的文件也可以使用。