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

ico是vcs提供的用于优化覆盖率的feature;一般用户通过dist solver bofore等约束了变量的随机概率,而ico会在用户约束的基础上,做一些自动“修正”,以此来优化随机激励,提高随机多样性,加速覆盖率收敛,缩短 turn-around time tat。主要功能包含如下几部分:
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,提高随机多样性;通过一个简单例子演示下:
covergroup cg_data with function sample (input logic valid, logic [7:0] data);   cpt_value: coverpoint data iff (valid){      bins zero = {0};      bins others[] ={[1:31]};      illegal_bins invalid = {[32:255]};   }endgroupclass tr extends uvm_transaction;   rand logic [7:0] data;   constraint c_tr { data inside {[0:31]};                     data dist {0:=1,[1:31]:=100};                   }endclass  
如上,对data的约束中,data=0这一条件的概率很低;
prj := $(shell echo $(curdir) | sed -r 's|/ico_test/.*|/ico_test|')export prjall: comp runall_ico: comp run_icoseed := ${seed}regress_ico: clean    mkdir -p ${prj}/comp_src;     cd ${prj}/comp_src;     cp ${prj}/makefile ${prj}/comp_src;     make comp;    for i in 1 2; do     mkdir -p ${prj}/test_$${i};     cp ${prj}/makefile ${prj}/test_$${i};     cd ${prj}/test_$${i};     ln -s ${prj}/comp_src/simv.daidir simv.daidir;    ln -s ${prj}/comp_src/csrc csrc;    ln -s ${prj}/comp_src/simv simv;    make run_ico seed=$${i};     done    make cov_merge;    make crg_report;regress: clean    mkdir -p ${prj}/comp_src;     cd ${prj}/comp_src;     cp ${prj}/makefile ${prj}/comp_src;     make comp;    for i in 1 2; do     mkdir -p ${prj}/test_$${i};     cp ${prj}/makefile ${prj}/test_$${i};     cd ${prj}/test_$${i};     ln -s ${prj}/comp_src/simv.daidir simv.daidir;    ln -s ${prj}/comp_src/csrc csrc;    ln -s ${prj}/comp_src/simv simv;    make run seed=$${i};     done    make cov_merge;comp:    vcs -full64     -kdb -lca     -debug_access+all     -ntb_opts uvm     -sverilog     -timescale=1ns/1ns     ${prj}/dut.sv     ${prj}/top_tb.sv     +incdir+${prj}     -l comp.logrun_ico:    ./simv -l sim.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 -report rpt-auto -format both -merge merged_db -zip 1 -illegal_group -illegal_attrrun:    ./simv -l sim.log +ntb_random_seed=${seed}verdi:    verdi  -ssf top_tb.fsdb &cov_open:    verdi  -cov -covdir simv_merge.vdb &cov_merge:    urg -dir ${prj}/test_1/simv.vdb -dir ${prj}/test_2/simv.vdb -dbname ${prj}/simv_merge.vdbclean:    -rm -rf shared_record/ simv* test_* work/ *log urgreport/ vdcovlog/ rpt-auto/ merged_db/ comp_src/ novas.*  
make regress跑了两个case,第一个case seed=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进一步的进化”吧。


电压开关中常见问题及解决方案
西门子博图RD_SINFO:读取当前OB启动信息
中微爱芯高亮恒流LED产品AiP33628、AiP33632简介
NXP边缘处理器是如何保证公共安全的
浅谈IP网络广播系统
VCS ICO的主要功能有哪些呢?
5G+区块链你觉得威力有多大
1060铝箔软连接 0.1铝箔可定制其他规格
三星s7edge安卓7.0你更新了吗?上车啦!小编给你发教程
人工智能放疗计划全面落地,推动智慧医疗创新
TK3030C:三相电能表检定装置
墨奇科技非接触3D指纹采集仪获认定证书
DC电源模块保护内外部电路至关重要
如何解释DS1847/DS1848温度读数-How to I
LCD常用术语对照表
中控智慧科技智能云考勤机FU100简介
纳芯微推出高可靠、高精度和低功耗的温湿度传感器NSHT30
烧向互联网平台企业的“反垄断之火”,会烧到通信企业吗
关于IoT产品库小程序的优势与功能介绍
DNB1101大唐恩智浦工规级电池管理芯片