在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文章
268瀏覽量
31859 -
仿真器
+關注
關注
14文章
1019瀏覽量
83843 -
Verilog語言
+關注
關注
0文章
113瀏覽量
8284
原文標題:SystemVerilog中的ignore_bins和bin的default
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論