求教:VCS仿真加速的方法!
不是大牛,不知道你什么的设计什么样子,验证还是后仿。
我觉得一般这几个方法:
1:修改设计 有些testbench里面的特殊语法会导致仿真时间变化巨大,不同的仿真阶段用不同的Memory Model也很重要,减少不必要的IO操作。
2:一般debug_all之类的去掉
3:调节gcc编译选项,可以设置CFLAGS
暂时想到的就这些
补充个:可以的话,强制指定timescale
可以用vcs的profile,仿真结束后可以查看仿真中哪些模块占用的时间和内存最多,可以的话做个优化
timescale,设计规模 不用的模块wrap掉
关掉debug_pp
优化全开
学习中。
说得好!
补充一点,当前case用不着的代码可以不编译。
几个方法:
1. 在analyze代码时,加入-j参数,比如 -j4, -j10, j后面的参数表示并发采用多个cpu core进行compile
2. vcs2012.09提供了1个lca feature, vcs -lca -fastcomp=x,x为0或者1,快速编译;
3. 指定-Mdir为本地硬盘,通常服务器会把home挂在一台服务器上方便管理,每次你登陆上去,都位于那个服务器的home下,所有你的文件也都存在home下,这时你需要利用-Mdir localdisk/dir来让vcs存储中间数据到仿真所在服务器的本地硬盘;
4. 移除-debug, -debug_pp, -debug_all参数,以及禁止function coverage;当然,这样你也dump不到波形了;
5. 减少编译文件的数量,可以采用宏定义来不编译不需要的testbench代码;
6. 减少代码中的逻辑翻转,比如,你不得不带着所有的tb来跑仿真,这是你需要保证在run某个case时,和该case无关的testbench以及信号全都是不翻转的;这样可以减少runtime时间;
7. 采用vcs的segment compile策略,其实就是把代码中已经不会在修改的那部分编译到一个lib中去,下回不在编译这部分而直接使用编译好的,但这方法实在是实用性不高,特别是在初期debug阶段,代码不断在动,仿真控制脚本也会不停的变,是用人力换去时间的做法,不怎么样;
补充1点:
8. 采用增量编译的方式;也就是上次编译完,不要删除编译出来的中间文件,继续下次编译;
vcs的增量编译会出现一些莫名其妙的事情,比如怎么仿都不更新,或者编译时vcs访问堆栈出错;
这时就不得不删除中间文件重新从头开始编译;聊胜于无吧。
顶一个!
好多讲究,看来路还长着呢
仿真速度的提高真的很有必要!