发布时间:2025-01-25 15:01
前言:欢迎您,有缘人!
覆盖率是对RTL设计功能进行验证后达到的覆盖百分比
检查过程必须满足完整性和正确性,没有冗余的劳动
为了最小化验证工作量,使用覆盖率来衡量一个设计哪些功能测试过,哪些功能还没有被测试过
功能覆盖率是由验证工程师自己定义的,用于衡量设计规格是否被正确实现,具体内容体现在验正计划中
功能覆盖率用于检査设计的应用场景、边界条件、特殊变量或者设计条件是否被完的正确的测试或者确认过
功能覆盖率是和设计意图紧密相连的,有时也被称为“规范覆盖率”,而代码覆盖率则是衡量设计的实现情况。设想某个代码块在设计中被漏掉的情况。代码覆盖率不能发现这个错误,但功能覆盖率可以。100%的代码覆盖率不意味着100%的功能覆盖率。
Assertion Coverage断言覆盖率
目标覆盖率是指在验证计划中规定的需要验证点的目标值。在验证计划中,当验证点实际覆盖率没有达到100%的时候,说明验证工作还未完成目标方案。没有达到100%的项目需要通过添加测试用例或者修改约束等来对其进行充分的验证。
//systemverilog绿皮书
//例题9.2 一个简单的功能覆盖率
program automatic teat (busifc.TB ifc)
class Transaction;
rand bit [31:0] data;
rand bit [ 2:0] port;//八种端口(port)数据
endclass
covergroup Covport;
coverpoint tr.port;//测量覆盖率
endgroup
initial begin
Transaction Tr;
Covport ck;
ck = new();//实例化组
tr = new();
repeat(32)begin//运行32周期
assert(tr.randmoize);//创建一个事务
ifc.cb.port<=tr.port;//并发送到接口上
ifc.cb.data<=tr.data;
ck.sample();//收集覆盖率
@ifc.cb;//等待一个周期
end
end
endprogram
用VCS跑的报告!
覆盖组可以在程序、模块或类里定义。在所有的情况下,覆盖组都要进行明确的实例化后才可以开始采样。如果覆盖组定义在类里,实例化时使用最初的名字即可,不用另起名字。
//systemverilog绿皮书
//例题9.5 在类里定义功能覆盖率
class Transactor;
Transaction tr;
mailbox mbx_in;
covergroup Covport;
coverpoint tr.port;//测量覆盖率
endgroup
function new(mailbox mbx_in);
Covport = new();//实例化覆盖组
this.mbx_in=mbx_in;
endfunction
task main;
forever begin
tr=mbx_in.get;//获取下一个事务
ifc.cb.port<=tr.port;//发送到待测设计中
ifc.cb.data<=tr.data;
Covport.sample();//收集覆盖率
end
endtask
endclass
一个时钟事件,用于同步采样厦盖点
一组覆盖点
覆盖点之间的交叉覆盖
可选的形式参数
覆盖率选项
一个覆盖点可以是一个变量或者一个表达式
每个覆盖点有一组bins值,这个值跟采样的变量或者变量的转换有关
Bins的值可以由用户自己定义,或者有EDA工具自动生成
Coyergroupe的命名要清晰明了,通过名称就可以确认覆盖的功能是什么最好跟验证计划统一
在覆盖点中指定了变量和表达式, System Verilog创建了一组bins,用于记录那些采样到的数值
bins是一个功能覆盖率的衡量单位
在每次仿真结束时,生成的数据库中包含了采样后所有的bins
EDA分析工具可以读取这个数据库,生成一个覆盖率报告,报告中包含了设计中哪一部分被覆盖,以及总的覆盖率数值
计算一个覆盖点的覆盖率,首先确认盺有可能数值的总的数量
采样数据:bins
Systemverilog自动为覆盖点创建bins
一个N位的表达式有2N个有效值
一个3比特的变量port有8有效值
限制自动生成的bins的数量
cover group 选项auto_ bin max指定自动生成bins的最大数量,默认值为64bins
使用关键字用iff为覆盖点添加条件
后记:过去四天,帮爷爷搭建了彩钢瓦棚子,体验了农村家庭的房屋建设。从购买材料到中间建设再到最终结束,有很多想法都是冲突的。他们往往按照自己的经验去解决各种问题,有好几个点都是通过自己的各种解释才使得匠人、爷爷等接受并且实施。最后一天,被支开去做其他事,果然他们又浪费了一下材料,结果爷爷也说匠人没弄好,等我看到,已经不能返工了。可以体会到农村人思想的封建、和素质低下的交流使得我必须逃离农村生活。不知道为什么,家人的那种脏话实在让我接受不了,在最后一天结束了,帮爷爷安装电视锅,侄女过来了,不知道干嘛,爷爷骂她:NMRLD,算了,还是自己努力吧。冲冲冲!