VCS ICO - Intelligent Coverage Optimization

这篇具有很好参考价值的文章主要介绍了VCS ICO - Intelligent Coverage Optimization。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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]};
   }
endgroup

class 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 PRJ

all: comp run
all_ico: comp run_ico

SEED := ${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.log

run_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_attr

run:
	./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.vdb

clean:
	-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%
VCS ICO - Intelligent Coverage Optimization,EDA,vcs,coverage
make regress_ico是使能icofeature,结果:
100%
VCS ICO - Intelligent Coverage Optimization,EDA,vcs,coverage
+ntb_solver_bias_diag使能debug信息,默认debug log放在+ntb_solver_bias_wdir指定的ico database下:
随机32次,ico影响constrain solver,bias了29次的随机结果;所以对于data=0这样的小概率事件,也随机到了;

VCS ICO - Intelligent Coverage Optimization,EDA,vcs,coverage
因为ico会影响constrain solver的随机结果,所以复现时,不仅要保证seed一样,还需要额外指定ico database,这样才能正确复现随机结果。

生成当前回归所有用例的merge report:
html report会罗列所有随机变量:
DIVERSITY通过shannon entropy 香农熵衡量变量的“多样性”;
VCS ICO - Intelligent Coverage Optimization,EDA,vcs,coverage
每个变量,ico会自动的划分bins,显示随机详细结果;

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

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

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

PS: S家推出了最新的AI加速覆盖率收敛的新产品 vso.ai,相比ICO应该有很大提升

相关资料和篇中示例整理:
链接:http://generatelink.xam.ink/change/makeurl/changeurl/7408
VCS ICO - Intelligent Coverage Optimization,EDA,vcs,coverage文章来源地址https://www.toymoban.com/news/detail-619494.html

到了这里,关于VCS ICO - Intelligent Coverage Optimization的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vcs仿真教程(查看断言)

            VCS是在linux下面用来进行仿真看波形的工具,类似于windows下面的modelsim以及questasim等工具,以及quartus、vivado仿真的操作。 vcs的常见指令后缀 sim常见指令 命令:mkdir +文件名,例如:mkdir tst 然后直接把设计文件和仿真文件拷贝到tst7这个文件夹里。 打开终端,输入

    2024年02月10日
    浏览(48)
  • VCS学习笔记(二)

    VCS仿真分两步法和三步法,两步法包含:Compiling、Simulating;三步法包含:Analyzing、Elaborating、Simulating。 两步法只支持Verilog和systemVerilog语言编写的工程,不支持带vhdl语言的工程编译。三步法支持VHDL、Verilog和混合HDL编译。本文阐述三步法仿真方式: VCS提供了vhdlan和vlogan可执

    2024年02月01日
    浏览(32)
  • vcs+verdi仿真Verilog代码

    我们以一个简单的加法器为例,来看下如何用vcs+verdi仿真Verilog文件并查看波形。 源文件内容如下: 我们再定义一个宏定义的文件: 我们需要再定义一个testbench文件: 再定义一个filelist文件: dut.f 最后就是需要一个Makefile文件了: 总的文件如下: 执行 make all : 跑完后如下

    2024年02月13日
    浏览(46)
  • Vivado工程怎么用VCS仿真

    在进行数字电路设计的的时候,我们用Vivado写了一个工程,但是大家都知道Vivado自带的仿真是很拉胯的,信号多了就很慢很不方便,很容易卡死,所以就需要用VCS去进行仿真,有2种方法。 1.首先也是最重要的一步,你需要把Vivado的所有的IP编译成VCS可以识别的库文件,因为你

    2023年04月08日
    浏览(45)
  • idea2022 顶部没有 vcs 菜单

    创建本地仓库是使用 VCS Import into Version Control Create Git Repository 但是idea的顶部菜单变成了Git 1、进入配置 mac:Preferences Version Control Directory Mappings win:File Settings Version Control Directory Mappings 2、修改内容 修改 Directory 为项目根目录 ,VCS 为 Subversion 即可。 点击 apply 就可以了,返回

    2024年02月09日
    浏览(43)
  • VCS®/VCSi™User Guide

            VCS®是一种高性能、高容量的Verilog®模拟器,它将先进的高级抽象验证技术集成到一个开放的本地平台中。VCS是一个编译代码模拟器。它使您能够分析、编译和模拟Verilog、SystemVerilog、OpenVera和SystemC设计描述。它还为您提供了一组模拟和调试功能,以验证您的设计

    2024年02月13日
    浏览(40)
  • VCS中的DPI和PLI

    在VCS中,DPI(Direct Programming Interface)是一种机制,用于在Verilog和C/C++代码之间进行互操作。DPI允许从Verilog代码中直接调用C/C++函数,并允许C/C++代码直接访问Verilog模块的内部信号和状态。 DPI的主要用途是为仿真器提供更高级别的功能和控制,并将仿真器与其他软件工具进行

    2024年02月10日
    浏览(39)
  • error obtaining VCS status: exit status 128 Use -buildvcs=false to disable VCS stamping. make: ***

    mac go version go1.19.4 darwin/amd64 使用了 git clone 命令拉取远程仓库到本地后,使用了 make install 命令出现: 按照终端的报错信息展示,是仓库的权限问题,根据指示运行 git config --global --add safe.directory /Users/xxx/xxx/irita 命令后能解决这个问题。 GitHub上也有关于这个问题的解释:Ru

    2024年02月10日
    浏览(40)
  • [VCS、verdi、makefile] 联合仿真 ——步骤

    目录 1、vcs、verdi简介和安装 2、Verdi的配置 3、vcs与Verdi联合仿真的Makefile脚本 1、基于Verilog系统函数Makefile脚本 1.1 先在tb文件中添加代码段,仿真后可以产生.fsdb文件  1.2 Makefile写法 2、基于ucli/tcl接口Makefile脚本 4、Verdi的使用       建议去淘宝买别人别人装好的环境,自己整

    2024年02月01日
    浏览(38)
  • 逻辑仿真工具VCS的使用-Makefile

            Gvim写RTL code,VCS仿真,Verdi看波形,DC做综合下约束,Primetime做STA,Spyglass做异步时序分析。            VCS全称Verilog Computer Simulation ,VCS是逻辑仿真EDA工具的编译源代码的命令。要用VCS做编译仿真,首先得有一个RTL代码,比如我们写了一个全加器和全加器的

    2024年02月02日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包