全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2023-09-19 14:59

人气:

作者:admin

标签: VCS  机器学习  RCA 

导读:ico是vcs提供的用于优化覆盖率的feature;一般用户通过dist solver bofore等约束了变量的随机概率,而ico会在用户约束的基础上,做一些自动“修正”,以此来优化随机激励,提高随机多样性...

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%

331651d4-569f-11ee-939d-92fbcf53809c.png

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

33275df8-569f-11ee-939d-92fbcf53809c.png

+ntb_solver_bias_diag使能debug信息,默认debug log放在+ntb_solver_bias_wdir指定的ico database下:随机32次,ico影响constrain solver,bias了29次的随机结果;所以对于data=0这样的小概率事件,也随机到了;

333f0250-569f-11ee-939d-92fbcf53809c.png

因为ico会影响constrain solver的随机结果,所以复现时,不仅要保证seed一样,还需要额外指定ico database,这样才能正确复现随机结果。生成当前回归所有用例的merge report: html report会罗列所有随机变量:DIVERSITY通过shannon entropy香农熵衡量变量的“多样性”;

335e27fc-569f-11ee-939d-92fbcf53809c.png在这里插入图片描述

每个变量,ico会自动的划分bins,显示随机详细结果;

ico支持同一个case内多次randomize之间相互影响,也支持一次回归不同case之间相互影响,也可以将本次回归的database作用于下一次回归;

对于ico加速覆盖率收敛的实际效果,博主使用一个block tb亲测效果不太显著;从他人的presentation上看,大概有10%-15%的提升;但是ico对于随机多样性确实是有一定效果的,+ntb_solver_bias_mode_auto可以指定ico对随机的bias力度。

336bdec4-569f-11ee-939d-92fbcf53809c.png
337c14f6-569f-11ee-939d-92fbcf53809c.png

如果ico可以通过AI,EL等对功能覆盖率进行反推,缩减重复随机值,那将会大大提高覆盖率收敛,期待后续EDA进一步的"进化”吧。






审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信