使用先进技术来加速SoC验证
入一个配置文件中,然后把这个配置文件读入VCS进行仿真,比如: 同时DLP还支持自动分区划分。考虑到DLP的适用情况以及进度,我们的项目上暂时没有使用,会在后继的项目中进行尝试。 其他进行性能加速的模式 Debug参数 VCS支持-debug_pp/–debug/–debug_all参数,其中-debug_pp用于只进行波形保存后处理模式,而debug用于交互式,debug_all交互式仿真同时可以开启单步调试模式,不同的调试粒度带来更多方便的同时,也会带来性能的消耗。 对于前期testbench开发,建议开启debug_all/debug参数,用于我们自己的验证环境的调试以及单步/断点调试等;当验证环境已经稳定以后,目的是进行DUT的验证一般就只开启debug_pp/debug来进行波形保存之后再调试。进入回归测试后,主要依赖验证环境中的检查器来做检查,当发现错误的时候才会打开debug_pp或者debug/debug_all来进行进一步的调试。 波形保存的方法 在影响仿真的性能参数中,文件I/O是占很大比重的一部分,所以对于性能的提升,可以从减少磁盘I/O读取来入手,比较多的磁盘I/O访问操作就是波形保存的动作。 (1)尽量只保存需要的层次结构的波形而不要总是保存所有芯片的波形 测试场景和结果 为了能找到最适合我们验证环境的性能仿真模式(包括编译、执行和仿真),以使得我们能得到最大的性能提升增益,我们定义了三种场景模式进行测试,三种模式是:不保存波形、保存FSDB波形和保存VPD波形。然后每种模式下我们还会分为做覆盖率收集和不做覆盖率收集两种情况。 在模式1(不保存波形中)我们有四个基础场景,然后针对着四个基础场景,来进行了如下的组合,编译:是否开启快速编译,运行是否开启debug_all/debug_pp,是非开启覆盖率ALP,共扩展运行为24个场景。 在模式2(保存vpd波形)针对两个基础场景,选择是否开启和模式1类似的参数,同时还选择是否进行vpd波形ALP,总共运行16个场景。 模式3(保存fsdb波形)针对两个基础场景,在进行和模式2类似的组合之后还组合了是使用verdi3进行波形并行保存还是FSDB ALP,用于比较二者的性能差别。 模式1下各场景仿真性能比较 模式1下的性能比较如表3所示,从表3的运行结果可以看到快速编译有10%~40%的性能提升,多核技术的使用有最多20+%的速度提升,使用了性能参数之后整体仿真有最大20%的性能提升。 模式2下各场景仿真性能比较 在模式2下的各场景性能比较如表4所示。 (1)不做覆盖率分析 快速编译会有最多2倍左右的编译时间提升,并行VPD保存会有最多20%的仿真时间提升。对于内存空间最多有1.5倍的虚拟内存空间减少以及3倍的memory空间减少。 (2)做覆盖率分析 快速编译会有大概2倍左右的编译时间提升,就总的仿真时间,大概提升1%左右。 多核并行VPD保存以及并行覆盖率分析对于正常用例仿真时间有1%~9%的提升,会有2倍~3倍的内存使用减少。 模式3各场景仿真性能比较 在开启FSDB波形保存的场景三,性能比较如表5所示。 (1)关闭覆盖率分析 Verdi3的并行开关比ALP的并行保存快2%左右,二者性能基本相同。快速编译会有2倍以上的编译时间减少,总仿真时间基本相同。并行保存会带来30%+的仿真时间减少。 (2)开启覆盖率分析 快速编译带来大概2.7倍的编译时间增益。使用并行覆盖率收集会带来3倍左右的运行时间增益。同时使用2核进行并行FSDB保存以及并行覆盖率收集会带来总仿真时间18%左右的提升。 Debug_pp和Debug_all的比较 (1)不做覆盖率收集 从上面图表中的场景1/2的比较可以看到,使用-debug_pp比使用-debug_all会带来4%~30%左右的性能增益。 (2)作覆盖率收集 带有覆盖率收集的时候,可以看到使用debug_pp会比使用debug_all带来8%~10%左右的性能增长。 结论 从在项目中的结果来看,使用快速编译选项可以带来最大2倍的编译时间提升。当我们运行回归测试时,如果不做波形保存,快速编译选项是很好的选择。 并行多核技术可以对于运行时间给与很
%vcs test.v –parallel+design=partition_cfg.cfg
(a)FSDB波形保存
$fsdbDumpvars(1, tb_top);
$fsdbDumpvars(2, tb_top.design_inst);
(b)VPD波形保存
$vcdpluson (level|"LVL=integer",scope*,signal*);
(2)可以指定波形保存的时间来进行波形保存
(a)在VCS运行时参数行进行指定(以FSDB为例)
+fsdb+dumpon+time[+htime ]
+fsdb+dumpoff+time[+htime]
(b)在验证环境中进行指定(以VPD为例)
$vcdpluson; // Enable Dumping
#5 $vcdplusoff; //Disable Dumping after 5ns
SoC Synopsys GPU VCS 仿真 201312 相关文章:
- IP核在SoC设计中的接口技术 (08-06)
- 视频跟踪算法在Davinci SOC上的实现与优化(10-06)
- 基于赛灵思Spartan-3A DSP的安全视频分析(02-17)
- Linux下Sniffer程序的实现(06-12)
- linux操作系统下的进程通信设计(01-24)
- 基于S3C44B0X和uClinux的Socket通信实现(02-28)