1.概述
![](https://i-blog.csdnimg.cn/blog_migrate/f2583fc559d17ec534fd8eb54ddfd32b.png)
2.覆盖率反馈回路
![](https://i-blog.csdnimg.cn/blog_migrate/949132706c2d9d0ea95141070ace9910.png)
![](https://i-blog.csdnimg.cn/blog_migrate/930bfd4f981cd58a83e75951f8142a5e.png)
例题
![](https://i-blog.csdnimg.cn/blog_migrate/404ea2633d693c7353c2804e7c26a75d.png)
C的错误原因是,不断重复递交回归测试覆盖率只会会增长到某一个数字,需要重新改变约束才能继续增加。
2.代码覆盖率(工具自带,不用自己写)
![](https://i-blog.csdnimg.cn/blog_migrate/e212ed2fdb7c9e616204fe3e9a6a68d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/36934f7305476d7119e3dccafc15998f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9a5cf2812bd0332406d15808f3b5edba.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6749ed879ba1f779bc656b0f78a5778.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ae5cc215c2380796905a4bedb9be9f10.png)
3.断言覆盖率(需要自己写)
![](https://i-blog.csdnimg.cn/blog_migrate/fdacef23b2d4d2e5fd99b57eb8fea2d7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8a0cc06d5c06e2e6a89bc22c5082d7e6.png)
4.漏洞率曲线(缺陷曲线)
![](https://i-blog.csdnimg.cn/blog_migrate/3fcd1c504c53d2f9c8657135046467a7.png)
5.功能覆盖率(要自己写)
![](https://i-blog.csdnimg.cn/blog_migrate/e877bf1e523954ac6aaafe6d33f73ad6.png)
-
代码覆盖率是衡量设计的实现情况;而衡量设计的功能是否被遗漏,需要功能覆盖率。
![](https://i-blog.csdnimg.cn/blog_migrate/6a667d4122408f21eb839a3ab0334945.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9c8b877ca4834a2b05b7026f90e4314c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/591968699d987324dacc8d6996895dc0.png)
②功能覆盖策略
1.收集信息而非数据
-
应该着眼于寄存器地址是合法还是非法,寄存器域是非法还是合法,而不是具体的寄存器地址数值。
-
信号数量范围大,需要化繁为简,拆分为多个小范围再加上边界情况。
-
着眼于关心感兴趣的状态,而不是具体的数值。
2.只测量需要的内容
收集覆盖率时会降低仿真性能,收集功能覆盖率数据的开销很大,所以应该只测量我们需要的。
3.验证的完备性
-
覆盖率包括:功能覆盖率、断言覆盖率、代码覆盖率。
-
代码覆盖率相比于功能覆盖率而言,会更简单的增长。
-
需要同时有高的代码覆盖率和高的功能覆盖率。
例题
答案:CD
③覆盖组
1.概述——covergroup(需要被例化)和class类似
![](https://i-blog.csdnimg.cn/blog_migrate/61506f7d4984e74f0dfb82518fe98f56.png)
-
定义 covergroup有多个coverpoint,说明 covergroup可以对多个变量做采样,因此定义 covergroup时要明确说明要采样哪些变量,要在什么时间采样(声明采样事件是什么),针对这些采样变量,你感兴趣关心的数值(想采样到的数值)是什么。
2.在类里定义covergroup
![](https://i-blog.csdnimg.cn/blog_migrate/37713475d52959cb7a8ba7289270a2d5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e01e30cecaa7355076f2d65d0ca37c04.png)
-
采样方法A:“.sample()函数”是采样函数
-
采样方法B:“@()“,等待某些信号后自动采样
-
coverpoint tr.port;,其中 tr.port是要被采样的变量。
3.covergroup的采样触发
![](https://i-blog.csdnimg.cn/blog_migrate/92d412179c9b02642da2bbf96910cea9.png)
阻塞语句(wait(ready)或者@(posedge clk)),例如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/cb83eea88af3b87dd159ae04a8594f82.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cfceb989142ddb5e790cb53c8c5235cd.png)