vcs和verdi的关系

VCS和Verdi是一对好基友,二者相生相伴N多年。VCS为编译仿真工具,Verdi则为查看Waveform的工具,就这样愉快的Cowork着。

VCS和Verdi能正常工作的前提是,必须存在filelist(list出了所有用到的RTL),VCS​对该filelist中的file进行编译,然后再进行仿真,顺带生成波形文件(xxx.fsdb)供Verdi打开,看到这里Verdi貌似只需要fsdb就能工作,如果是这样的话Verdi又怎么能知道filelist中多个module的层次关系(Hierarchy)呢?事实上,Verdi也需要编译一遍filelist才能提取出module间的层次关系。总结一下:VCS = Compile+Simulation; Verdi = Compile+打开xxx.fsdb。二者都有Compile这一步,那么Compile能不能合在一起呢?即: VCS = ​ Compile+Simulation; Verdi = import VCS Compile的结果+打开xxx.fsdb,答案是肯定的,下面就来介绍一下具体的操作。

VCS Compile阶段加上“-kdb -lca”这个选项,这样就能在VCS Compile中看到simv.daidir/kdb.elab++这个目录,这个目录就是VCS为Verdi产生的库,其实就是VCS帮Verdi生成了一个Verdi认识的中间文件。

如果没有以上simv.daidir/kdb.elab++库文件,通常用”Verdi -sv +v2k -f filelist.f“这种方式打开Verdi, Verdi就开始启动GUI界面,然后是编译filelist.f(如果filelist.f比较大,可以看到Verdi一直在Compile,有可能需要1小时,甚至更多),最后打开Waveform,并加载xxx.fsdb。整个过程很有可能是Compile最耗时,导致打开Verdi的效率极低。

如果有了​simv.daidir/kdb.elab++库文件, 可以用“Verdi -elab simv.daidir/kdb" 命令打开Verdi。用这种方式,启动GUI界面仍然少不掉,但是会把Verdi Compile filelist.f的时间改为import库文件,这一步几乎是瞬间完成,因此能节省不少时间。

总结一下:

VCS编译的命令中加上”-lca -kdb“​。

使用”Verdi -elab simv.daidir/kdb“打开Verdi。

打开Verdi节省的时间几乎等于编译RTL的时间​, VCS生成simv.daidir/kdb.elab++库文件占总编译时间的0.1%~2%,还是挺划算的一笔账。

小知识:

1) 如果只想生成​simv.daidir/kdb.elab++, VCS编译时,用”-lca -kdb=only“

2) 如果只想看部分层级的Hierarchy,​ VCS编译时,用”-lca -kdb -top hierarchy“。如只关系top.a.b 这一级的RTL,可使用如下命令:”-lca -kdb -top top.a.b“

参考博客:
【1】http://blog.sina.com.cn/s/blog_13f7886010102xqlu.html

你可能感兴趣的:(#,VCS学习)