在SystemVerilog中,经常会需要将一些值或者翻转行为从覆盖率中排除掉,ignore_bins是经常被用到的一种方式,其实除了ignore_bins之外,还可以将一些bins的值范围指定为关键字defualt,从而实现将一些不期望或者无效的数据进行分配,同样也可以实现命中该仓的数据不被收集到覆盖率中。既生瑜何生亮,效果都一样,为什么要存在两个呢?两者之间有些什么细微差别呢?下文将通过示例说明。
1 ignore_bins
【示例】忽略一些数值
【仿真结果】
示例中仿真统计结果中可以看到,命中val仓(ignore_bins)的数值被排除在覆盖率的计算之外,即被exclude掉了,并且val仓及其中相关数值在解析时不会被命中。通过例子可以看到,当定义了ignore_bins时,EDA仿真工具不会收集相应ignore_bins中的数据,即ignore_bins一般用于将一些值或者翻转行为从覆盖率中排除掉。
2 default bins
【示例】
【仿真结果】
示例仿真统计结果中可以看到,命中val1仓(default)的数值被排除在覆盖率的计算之外,即被exclude掉了,但是val1仓在仿真时会被命中,从某种程度上来说ignore_bins更像是刻意去exclude一些数值,而default更像是要囊括一些确定要覆盖数据之外的数据。既然两者都这么“不接受不拒绝”,那么可不可把ignore_bins后头的数值范围也省略了直接用default呢?请看下例。
【示例】
【仿真结果】
么办法,工具提示ignore_bins和default这两个这种行为是不允许的,不能既想当老鸨还要立牌坊,即不能将ignore_bins的取值范围设成default,
在上述ignore_bins的示例中,注意到可以不定义其他的仓,仅仅只指定ignore_bins,那么对于指定的default仓,是否可以不指定其他仓,仅仅只指定一个仓为default呢?请看下头的例子。
【示例】
【仿真结果】
从仿真结果中可以看到,仿真工具已经无法显示percent了,因为此时val仓的取值范围为default,仿真工具不知道default之外的值是什么,所以也就无法进行相关的覆盖率统计,当然一般情况下也么人这么无聊在一个coverpoint中指定一个仓并且将其取值范围设为default。
通过上面几个示例,ignore_bins和仓的default之间的关系可以简单汇总如下:
Øignore_bins和仓的default对于coverage都么有什么影响;
Øignore_bins在仿真时不会进行仓的命中的统计,而仓的default会进行仓命中情况的统计;
Øignore_bins指定的取值范围不能设为default;
Øignore_bins偏重于忽略一些具体范围的值,即确定要忽略的一些值;
Ø仓取值范围设为default主要是涵盖一些不在计划中或者无效的数据,即一些不是太确定的数值;
审核编辑:刘清
-
EDA工具
+关注
关注
4文章
264浏览量
31715 -
仿真器
+关注
关注
14文章
1016浏览量
83644 -
Verilog语言
+关注
关注
0文章
113浏览量
8214
原文标题:SystemVerilog中的ignore_bins和bin的default
文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论