VCS ICO - Intelligent Coverage Optimization

2024-02-11 15:50

本文主要是介绍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]};}
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 run
all_ico: comp run_icoSEED := ${SEED}regress_ico: cleanmkdir -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}; \donemake cov_merge;make crg_report;regress: cleanmkdir -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}; \donemake 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进一步的"进化”吧。

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

相关资料和篇中示例整理:
链接:http://generatelink.xam.ink/change/makeurl/changeurl/7408
在这里插入图片描述

这篇关于VCS ICO - Intelligent Coverage Optimization的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/700194

相关文章

Minimal coverage -uva 覆盖线段,贪心

一道经典的贪心问题,具体方法就是将(an,bn)区间,按照an从小到大的顺序进行排序,之后从0开始, 取最大的有效区间,这里用到了结构体的快排,否则可能会超时. #include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX_SIZE 100000 + 10#define BOTTOM -50000 - 10str

【Derivation】Convex Optimization

Separation theorems and supporting hyperplanes(分离定理与支撑超平面)        Inner and outer polyhedral approximations.(内部与外部多面体逼近)        Let C belongs to Rn be a closed convex set.and suppose that x1,...xk a

[论文笔记]Circle Loss: A Unified Perspective of Pair Similarity Optimization

引言 为了理解CoSENT的loss,今天来读一下Circle Loss: A Unified Perspective of Pair Similarity Optimization。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 这篇论文从对深度特征学习的成对相似度优化角度出发,旨在最大化同类之间的相似度 s p s_p s

NLP-生成模型-2014:Seq2Seq【缺点:①解码器无法对齐编码器(Attention机制);②编码器端信息过使用或欠使用(Coverage机制);③解码器无法解决OOV(Pointer机制)】

《原始论文:Sequence to Sequence Learning with Neural Networks》 Seq2Seq模型是将一个序列信号,通过“编码&解码”生成一个新的序列信号,通常用于机器翻译、语音识别、自动对话等任务。 Seq2Seq(多层LSTM-多层LSTM)+Attention架构是Transformer提出之前最好的序列生成模型。 我们之前遇到的较为熟悉的序列问题,

深入理解DPO(Direct Preference Optimization)算法

目录 1. 什么是DPO?2. Bradley-Terry模型2.1 奖励模型的训练 3. 从PPO到DPO4. DPO的简单实现5. 梯度分析Ref 1. 什么是DPO? 直接偏好优化(Direct Preference Optimization, DPO)是一种不需要强化学习的对齐算法。由于去除了复杂的强化学习算法,DPO 可以通过与有监督微调(SFT)相似的复杂度实现模型对

ural Minimal Coverage (区间覆盖)

http://acm.timus.ru/problem.aspx?space=1&num=1303 给出一些区间,选择尽量少的区间能覆盖到[0,m]。 小白p154,典型的区间覆盖问题。一直在想怎么dp。。 首先预处理,先按左端点从小到大排序,若左端点相同右端点从大到小排序,若区间x完全包含y,按照贪心的思想,y是没有意义的,有大区间可以选何必选择小区间。处理完事之后各个区间满足a1

论文速览【LLM】 —— 【ORLM】Training Large Language Models for Optimization Modeling

标题:ORLM: Training Large Language Models for Optimization Modeling文章链接:ORLM: Training Large Language Models for Optimization Modeling代码:Cardinal-Operations/ORLM发表:2024领域:使用 LLM 解决运筹优化问题 摘要:得益于大型语言模型

BNU 7536 HDU 3425 Coverage (圆与直线相交 )TeamContest - 4—B【解题报告】

【题目链接】click here~~ 【题目大意】求多个圆与线段相交的部分占整个线段的百分比。 【解题思路】  此题首先要判断圆心不一定全在给定的线段上,可以在任意的位置,(理解错了题,原先以为圆心在线段上,读题要仔细!) 因此我们可以联立圆的方程和线段的方程首先判断线段与圆有没有交点 求出方程组解得: 二次项系数为  a = cos(cx1,cx0) +cos(cy1,cy0);//二次项的

Introduction to linear optimization 第二章全部课后题答案

费了好长时间,终于把这本经典理论教材第二章的课后题做完了。大部分都是证明题,很多都是比较有难度的。 不少题我参考了网上找到的一些资料的思路,但是有一些题目我觉得这些网上找到的答案也不太好,自己修正完善了下,少部分题目自己独立完成。 我把答案放在一个 Jupyter book 上,见链接:第二章答案

uva10020 - Minimal coverage(区间覆盖)

题目:uva10020 - Minimal coverage(区间覆盖) 题目大意:给出一些线段,然后问怎样取能使得最少的线段覆盖区间[0, M]. 解题思路:先预处理掉那些和区间【0,M】不沾边的线段。                  将线段按照起点小的排序。                   接着遍历这些线段。首先先判断起点最小的点是否<=0,如果不满足这个说明它不能覆