微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 如何提高交叉覆盖率

如何提高交叉覆盖率

时间:10-02 整理:3721RD 点击:
比如有两个coverpoint A,B,再假设A与B都是均匀分布的。假设A有20个值,B有30个值,如果将A与B进行cross的话,理论上A与B应当有600种组合。但是test即便跑600次,也是无法达到100%的交叉覆盖率。那么只有提高regression的次数才能提高cross的交叉覆盖率嘛?此外,我个人觉得,由于每一次仿真器在做随机的时候,A与B都是同时进行均匀化随机的,所以感觉即便提升10倍的regression次数,也无法将交叉覆盖率达到100%。
求问各位大神如何解决这个问题。

同求!

那就把cross后的coverpoint划分小点,直接cross的话可能有些coverpoint的功能重复了。
否则就是跑regression直到100%。

我覺得首先應該檢討分這麼多bin 是不是必要的. 若真的必要, 是不是改採用 direct test 的方式, 而不要用 contraint random verification, 因為 verification methodology 是因 case 而異的, 若 direct test 能達到 100% coverage, 又比較有效率, 為何一定要 random

这里是个举例。实际上的情况是有三个bin,每个bin内的数据都分别要random,需要把他们的交叉组合都测试到。如果用directed_test来测试的话工作量十分庞大。

哎,确实伤脑经啊。每一种cross的结果都是需要验证的。

可以试试这样,假设A的值是0-19,B的值是0-29.可以定义一个randc bit[9:0] C的member.
class random_cross ;
randc bit [9:0] C;
rand bit [4:0] A;
rand bit [4:0] B;
constraint con_AB{
A==C[4:0];
B== C[9:5];
}
endclass
只要C的值完全随机到了 ,那么A和B的Cross肯定可以达到100%的
粗见勿喷

恩,我觉得这个思路很好。谢谢LS。但是LS的这个constraint应该不够,因为A/B/C是同时random的,所以只会抽取其中相等的结果。可能加上solve before结果更好。灰常感谢这个思路。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top