摘要:资料来源 (1) 《The UVM Primer》第二章 1.TinyALU的功能覆盖率模型 1.1覆盖率目标 (1) 测试所有指令; (2) 所有指令的全0操作数仿真; (3) 所有指令的全1操作数仿真; (4) 所有指令的复位后运行; (5) 单周期指令之后运行乘法指令; (6) 乘法指令之后运
阅读全文
摘要:资料来源 (1)公众号-芯片学堂; (2)VCS user guide; (3)面试系列:RTL基本知识【1】关于coverage (qq.com) (4) Verdi Coverage User Guide and Tutorial (手册是信息源头) 1.验证覆盖率 (1)验证覆盖率只是为了证明
阅读全文
摘要:1.实例选项 (1)用于特定的覆盖组实例; (2)per-instance只能放在覆盖组中,不能用于覆盖点或交叉点; (3)使用per_instance选项与comment选项可以为每个covergroup实例加入单独的注释; 1 class C1; 2 bit[7:0] x; 3 4 coverg
阅读全文
摘要:1.通过数值传递覆盖组参数 2.通过引用传递覆盖组参数 1 covergroup cg (ref int ra, input int low, int high) @(posedge clk); 2 coverpoint ra //采样通过引用传递的变量 3 { 4 bins good={[low:
阅读全文
摘要:1.交叉覆盖的替代方式 (1)随着交叉覆盖的定义越来越精细,可能需要花费较多的时间来指定哪些仓应该使用或者被忽略掉; 可以通过给覆盖点上的仓命名,然后使用这些仓来收集交叉覆盖率数据; (2)示例 (2.1)使用仓名与binsof指定交叉覆盖的数值 (2.2)使用binsof与intersect指定交
阅读全文
摘要:1.排除掉部分交叉覆盖仓 (1)ignore_bins+binsof+intersect可以排除掉许多交叉覆盖仓;其中,binsof用于指定覆盖点,intersect用于指定数值集; (2)示例 2.从总体覆盖率的度量中排除掉部分覆盖点 (1)一个覆盖阻的总体覆盖率是基于所有简单覆盖点和交叉覆盖率的
阅读全文
摘要:1.交叉覆盖率及示例 (1)覆盖点记录单个变量或表达式的观测值,交叉覆盖率则同时测量两个或两个以上覆盖点的值; (2)system verilog中的cross结构可以用来记录一个覆盖组内两个或两个以上覆盖点的组合值; cross语句只允许带覆盖点或者简单的变量名; (3)示例 2.对交叉覆盖仓进行
阅读全文
摘要:1.忽略数值或翻转 (1)在某些覆盖点上,可能始终得不到全部可能值,对于该问题可以使用两种方法: 方法一:明确定义仓来涵盖所有的期望值; 方法二:让system verilog自动创建仓,然后使用ignore_bins排除掉那些不用来计算功能覆盖率的数值; (2)ignore_bins示例: 1 示
阅读全文
摘要:1.条件覆盖率 (1) 可以使用关键字iff给覆盖点添加条件,这种做法最常用于在复位期间关闭覆盖以忽略一些杂散的触发; 注:也可以使用covergroup_name.stop()与covergroup.start()进行covergroup的采样; (2) 可以使用start和stop函数控制覆盖组
阅读全文
摘要:1.对表达式进行采样 注:覆盖点可以对变量或表达式采样; (1) 注意哑元变量的使用; (2) 由于值域不是2的幂,所以最好使用自定义的仓,如果使用自动生成的仓,可能需要添加ignore_bins; 2.用户自定义的仓 3.命名覆盖点的仓
阅读全文
摘要:注1:每一个覆盖点(coverage point)都包含一系列bins,用于采样值或者值的翻转; 采样值的bins称作state bins,采样值的翻转的bins称作transition bins; 1.自动创建仓 (1) system verilog会自动为覆盖点创建仓。 2.限制自动创建仓的数目
阅读全文
摘要:注:功能覆盖率的两个主要部分:采样的数据和数据被采样的时刻; 参考资料: (1) system verilog绿皮书; (2) system verilog standard chapter19; 1.覆盖点与覆盖组 (1) 覆盖点对测试平台中的变量和表达式的数值进行采样; (2) 覆盖组: 囊括同
阅读全文