ico是vcs提供的用于優(yōu)化覆蓋率的feature;一般用戶通過distsolver bofore等約束了變量的隨機概率,而ico會在用戶約束的基礎上,做一些自動“修正”,以此來優(yōu)化隨機激勵,提高隨機多樣性,加速覆蓋率收斂,縮短 turn-around timeTAT。主要功能包含如下幾部分:
1.Prognosis: 用于查看當前平臺是否適用ico,對于都是直接用例測試,沒有隨機策略的平臺,ico并不適用;
2.Auto Bias:利用設定策略,ico會改變原有constraint solver的行為,施加一定bias修正隨機值;
3.RCA: root cause trace, 用于診斷變量未隨機到的bins,是否存在過約束等;
4.Delta-debug: 提供replay復現(xiàn)功能,對比兩次結果間的差異;
5.AutoPurge: 當前回歸得到的ico database可以用于下一次回歸,多次迭代;
ico最主要的功能就是Auto Bias,宣稱使用了AI,機器學習ML,增強學習EL等手段,在回歸過程中,利用共享case之間的ico database,提高隨機多樣性;通過一個簡單例子演示下:
covergroupcg_datawithfunctionsample(inputlogicvalid,logic[7:0]data); cpt_value:coverpointdataiff(valid){ binszero={0}; binsothers[]={[1:31]}; illegal_binsinvalid={[32:255]}; } endgroup classtrextendsuvm_transaction; randlogic[7:0]data; constraintc_tr{datainside{[0:31]}; datadist{0:=1,[1:31]:=100}; } endclass
如上,對data的約束中,data=0這一條件的概率很低;
PRJ:=$(shellecho$(CURDIR)|sed-r's|/ico_test/.*|/ico_test|')
exportPRJ
all:comprun
all_ico:comprun_ico
SEED:=${SEED}
regress_ico:clean
mkdir-p${PRJ}/comp_src;
cd${PRJ}/comp_src;
cp${PRJ}/Makefile${PRJ}/comp_src;
makecomp;
foriin12;do
mkdir-p${PRJ}/test_$${i};
cp${PRJ}/Makefile${PRJ}/test_$${i};
cd${PRJ}/test_$${i};
ln-s${PRJ}/comp_src/simv.daidirsimv.daidir;
ln-s${PRJ}/comp_src/csrccsrc;
ln-s${PRJ}/comp_src/simvsimv;
makerun_icoSEED=$${i};
done
makecov_merge;
makecrg_report;
regress:clean
mkdir-p${PRJ}/comp_src;
cd${PRJ}/comp_src;
cp${PRJ}/Makefile${PRJ}/comp_src;
makecomp;
foriin12;do
mkdir-p${PRJ}/test_$${i};
cp${PRJ}/Makefile${PRJ}/test_$${i};
cd${PRJ}/test_$${i};
ln-s${PRJ}/comp_src/simv.daidirsimv.daidir;
ln-s${PRJ}/comp_src/csrccsrc;
ln-s${PRJ}/comp_src/simvsimv;
makerunSEED=$${i};
done
makecov_merge;
comp:
vcs-full64
-kdb-lca
-debug_access+all
-ntb_optsuvm
-sverilog
-timescale=1ns/1ns
${PRJ}/dut.sv
${PRJ}/top_tb.sv
+incdir+${PRJ}
-lcomp.log
run_ico:
./simv-lsim.log+ntb_random_seed=${SEED}
+ntb_solver_bias_mode_auto_config=2
+ntb_solver_bias_shared_record=${PRJ}/shared_record
+ntb_solver_bias_wdir=ico_work
+ntb_solver_bias_test_type=uvm
+ntb_solver_bias_diag=3
crg_report:
crg-dir${PRJ}/shared_record-reportrpt-auto-formatboth-mergemerged_db-zip1-illegal_group-illegal_attr
run:
./simv-lsim.log+ntb_random_seed=${SEED}
verdi:
verdi-ssftop_tb.fsdb&
cov_open:
verdi-cov-covdirsimv_merge.vdb&
cov_merge:
urg-dir${PRJ}/test_1/simv.vdb-dir${PRJ}/test_2/simv.vdb-dbname${PRJ}/simv_merge.vdb
clean:
-rm-rfshared_record/simv*test_*WORK/*logurgReport/vdCovLog/rpt-auto/merged_db/comp_src/novas.*
make regress跑了兩個case,第一個caseseed=1,第二個caseseed=2; 通過verdi查看覆蓋率報告:跑了兩次的回歸merge結果:87.5%

make regress_ico是使能icofeature,結果:100%

+ntb_solver_bias_diag使能debug信息,默認debug log放在+ntb_solver_bias_wdir指定的ico database下:隨機32次,ico影響constrain solver,bias了29次的隨機結果;所以對于data=0這樣的小概率事件,也隨機到了;

因為ico會影響constrain solver的隨機結果,所以復現(xiàn)時,不僅要保證seed一樣,還需要額外指定ico database,這樣才能正確復現(xiàn)隨機結果。生成當前回歸所有用例的merge report: html report會羅列所有隨機變量:DIVERSITY通過shannon entropy香農(nóng)熵衡量變量的“多樣性”;
在這里插入圖片描述
每個變量,ico會自動的劃分bins,顯示隨機詳細結果;
ico支持同一個case內(nèi)多次randomize之間相互影響,也支持一次回歸不同case之間相互影響,也可以將本次回歸的database作用于下一次回歸;
對于ico加速覆蓋率收斂的實際效果,博主使用一個block tb親測效果不太顯著;從他人的presentation上看,大概有10%-15%的提升;但是ico對于隨機多樣性確實是有一定效果的,+ntb_solver_bias_mode_auto可以指定ico對隨機的bias力度。


如果ico可以通過AI,EL等對功能覆蓋率進行反推,縮減重復隨機值,那將會大大提高覆蓋率收斂,期待后續(xù)EDA進一步的"進化”吧。
審核編輯:劉清
-
VCS
+關注
關注
0文章
80瀏覽量
10247 -
RCA
+關注
關注
0文章
45瀏覽量
9216 -
機器學習
+關注
關注
66文章
8541瀏覽量
136236
原文標題:VCS ICO - Intelligent Coverage Optimization
文章出處:【微信號:數(shù)字芯片設計工程師,微信公眾號:數(shù)字芯片設計工程師】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
醫(yī)院專用數(shù)據(jù)記錄儀主要功能有哪些
電子學綜合實訓臺QY-DQJ05裝置主要功能有哪些?
軟啟動器的主要功能有哪些呢
操作系統(tǒng)內(nèi)核的主要功能有哪些
電池bms主要功能有哪些?bms主要有哪六個功能
bms主要功能有哪些

VCS ICO的主要功能有哪些呢?
評論