ico是vcs提供的用于優化覆蓋率的feature;一般用戶通過distsolver bofore等約束了變量的隨機概率,而ico會在用戶約束的基礎上,做一些自動“修正”,以此來優化隨機激勵,提高隨機多樣性,加速覆蓋率收斂,縮短 turn-around timeTAT。主要功能包含如下幾部分:
1.Prognosis: 用于查看當前平臺是否適用ico,對于都是直接用例測試,沒有隨機策略的平臺,ico并不適用;
2.Auto Bias:利用設定策略,ico會改變原有constraint solver的行為,施加一定bias修正隨機值;
3.RCA: root cause trace, 用于診斷變量未隨機到的bins,是否存在過約束等;
4.Delta-debug: 提供replay復現功能,對比兩次結果間的差異;
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的隨機結果,所以復現時,不僅要保證seed一樣,還需要額外指定ico database,這樣才能正確復現隨機結果。生成當前回歸所有用例的merge report: html report會羅列所有隨機變量:DIVERSITY通過shannon entropy香農熵衡量變量的“多樣性”;
在這里插入圖片描述
每個變量,ico會自動的劃分bins,顯示隨機詳細結果;
ico支持同一個case內多次randomize之間相互影響,也支持一次回歸不同case之間相互影響,也可以將本次回歸的database作用于下一次回歸;
對于ico加速覆蓋率收斂的實際效果,博主使用一個block tb親測效果不太顯著;從他人的presentation上看,大概有10%-15%的提升;但是ico對于隨機多樣性確實是有一定效果的,+ntb_solver_bias_mode_auto可以指定ico對隨機的bias力度。
如果ico可以通過AI,EL等對功能覆蓋率進行反推,縮減重復隨機值,那將會大大提高覆蓋率收斂,期待后續EDA進一步的"進化”吧。
審核編輯:劉清
-
VCS
+關注
關注
0文章
79瀏覽量
9624 -
RCA
+關注
關注
0文章
28瀏覽量
8795 -
機器學習
+關注
關注
66文章
8422瀏覽量
132736
原文標題:VCS ICO - Intelligent Coverage Optimization
文章出處:【微信號:數字芯片設計工程師,微信公眾號:數字芯片設計工程師】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論