使用先進(jìn)技術(shù)來(lái)加速SoC驗(yàn)證
(1)盡量只保存需要的層次結(jié)構(gòu)的波形而不要總是保存所有芯片的波形
(a)FSDB波形保存
$fsdbDumpvars(1, tb_top);
$fsdbDumpvars(2, tb_top.design_inst);
(b)VPD波形保存
$vcdpluson (level|"LVL=integer",scope*,signal*);
(2)可以指定波形保存的時(shí)間來(lái)進(jìn)行波形保存
(a)在VCS運(yùn)行時(shí)參數(shù)行進(jìn)行指定(以FSDB為例)
+fsdb+dumpon+time[+htime ]
+fsdb+dumpoff+time[+htime]
(b)在驗(yàn)證環(huán)境中進(jìn)行指定(以VPD為例)
$vcdpluson; // Enable Dumping
#5 $vcdplusoff; //Disable Dumping after 5ns
測(cè)試場(chǎng)景和結(jié)果
為了能找到最適合我們驗(yàn)證環(huán)境的性能仿真模式(包括編譯、執(zhí)行和仿真),以使得我們能得到最大的性能提升增益,我們定義了三種場(chǎng)景模式進(jìn)行測(cè)試,三種模式是:不保存波形、保存FSDB波形和保存VPD波形。然后每種模式下我們還會(huì)分為做覆蓋率收集和不做覆蓋率收集兩種情況。
在模式1(不保存波形中)我們有四個(gè)基礎(chǔ)場(chǎng)景,然后針對(duì)著四個(gè)基礎(chǔ)場(chǎng)景,來(lái)進(jìn)行了如下的組合,編譯:是否開(kāi)啟快速編譯,運(yùn)行是否開(kāi)啟debug_all/debug_pp,是非開(kāi)啟覆蓋率ALP,共擴(kuò)展運(yùn)行為24個(gè)場(chǎng)景。
在模式2(保存vpd波形)針對(duì)兩個(gè)基礎(chǔ)場(chǎng)景,選擇是否開(kāi)啟和模式1類(lèi)似的參數(shù),同時(shí)還選擇是否進(jìn)行vpd波形ALP,總共運(yùn)行16個(gè)場(chǎng)景。
模式3(保存fsdb波形)針對(duì)兩個(gè)基礎(chǔ)場(chǎng)景,在進(jìn)行和模式2類(lèi)似的組合之后還組合了是使用verdi3進(jìn)行波形并行保存還是FSDB ALP,用于比較二者的性能差別。
模式1下各場(chǎng)景仿真性能比較
模式1下的性能比較如表3所示,從表3的運(yùn)行結(jié)果可以看到快速編譯有10%~40%的性能提升,多核技術(shù)的使用有最多20+%的速度提升,使用了性能參數(shù)之后整體仿真有最大20%的性能提升。
模式2下各場(chǎng)景仿真性能比較
在模式2下的各場(chǎng)景性能比較如表4所示。
(1)不做覆蓋率分析
快速編譯會(huì)有最多2倍左右的編譯時(shí)間提升,并行VPD保存會(huì)有最多20%的仿真時(shí)間提升。對(duì)于內(nèi)存空間最多有1.5倍的虛擬內(nèi)存空間減少以及3倍的memory空間減少。
(2)做覆蓋率分析
快速編譯會(huì)有大概2倍左右的編譯時(shí)間提升,就總的仿真時(shí)間,大概提升1%左右。
多核并行VPD保存以及并行覆蓋率分析對(duì)于正常用例仿真時(shí)間有1%~9%的提升,會(huì)有2倍~3倍的內(nèi)存使用減少。
評(píng)論