SystemVerilog是一名芯片驗證工程師,必須掌握的一門語言,其中Function Coverage是必須要懂的知識點之一;
看完這篇,應該就會寫Function Coverage了;
一、概述
有一定基礎,想直接看用法,直接看第二部分——實現(xiàn)(強調(diào)!代碼部分要精讀,文字略抽象,例子好理解)。
功能覆蓋率(Function Coverage)是衡量驗證完備性的重要標準之一。
其用于度量驗證中已執(zhí)行的測試點(cover point)占設計規(guī)范的比例,從而避免功能驗證的遺漏。或者說,F(xiàn)unctional coverage是驗證工程師基于對DUT的認識來對驗證feature進行分解后,將需要覆蓋的點進行分析后寫出,因此對于DUT Spec的信息提取非常重要。
Functional_coverage可以檢查:
1. 你關心的場景是否覆蓋完備;2. 驗證工程師構造的隨機激勵的隨機程度/合理性;3. 從Spec中提取的feature點是否覆蓋完備;...
Function Coverage通過編寫coverage group, coverage points和bins等來構造收集“容器”。這里我們不介紹Assertion Coverage, Code Coverage等,以后會單獨介紹。
收集Function Coverage的相關驗證文件是由驗證工程師定義編寫的,靈活度很高,所以更需要謹慎對待,這是個Review的過程,一般需要編寫:unit_coverage.sv + unit_coverage_interface.sv + top.sv。
1. unit_coverage.sv (unit_cov.sv),可能包含多個功能覆蓋模型coverage group,構造的收集“容器”,收集過程在這里實現(xiàn);2. unit_coverage_interface.sv(unit_cov_if.sv),定義unit_cov.sv中需要用到的interface;3. top.sv,將unit_cov_if.sv中定義的interface與DUT中對應的interface連接起來;
二、實現(xiàn)
功能覆蓋率模型/覆蓋組(cover group):
覆蓋組是使用cover group構造定義的。
ex1: 會在指定的signal_abc變化時才采樣
ex2:在時鐘上升沿((posedge)采樣。
覆蓋點(cover ponit):
覆蓋點是使用cover ponit和bins構造定義的。
一個覆蓋組可以包含一個或多個覆蓋點。每個覆蓋點都與“ bins”關聯(lián)。“bins”可自動創(chuàng)建,也可以明確定義。
ex1:自動創(chuàng)建bins
為coverpoint變量范圍的每個值自動創(chuàng)建一個bins,這稱為自動或隱式bins。
對于“ n”位的整數(shù)coverpoint變量,將創(chuàng)建2^n個bin,但是最多為64個,當2^n大于64時,每個bin不再是一個值,而是2^n/64
ex2:明確定義bins
該方式--- 常用,這里重點看每個bins定義代表的不同意義。
在覆蓋點標識符(cover point)之后,在大括號{}中顯式聲明bins,其中聲明bins名稱和變量值/范圍。
ex3:交叉覆蓋(cross)
覆蓋選項(cover options)
at_least
每個bins的最小匹配/采樣次數(shù)。默認值為“ 1”,默認情況下,數(shù)值采樣了1次就可以計入有效的bin(已覆蓋)。可以通過修改at_least來修改每個bin對應的最小采樣次數(shù),注意,如果低于at_least數(shù)值,則該bin不算被覆蓋。在covergroup里使用 option.at_least,會影響所有的coverpoint里的bin。在coverpoint里使用 option.at_least,只影響該coverpoint下的bin,但coverpoint中使用會覆蓋covergroup中的使用。
auto_bin_max
沒有為coverpoint明確定義bins時自動創(chuàng)建bins的最大數(shù)量。默認值為“ 64”。
cross_auto_bin_max
沒有默認值,它是無界的。
如果對一個covergroup實例化了很多次,那么SV默認會把所有實例的覆蓋率合并在一起。 option.per_instance = 1,表示covergroup的每一個實例的覆蓋率都要單獨計算。
goal
不論covergroup或是coverpoint的目標覆蓋率皆是100%,不過也可以通過option.goal=value,來降低覆蓋率目標,這個選項只會影響覆蓋率報告。
......
更多options和關于Function Coverage更詳細的描述/用法去翻閱《system verilog官方手冊》:《IEEE Standard for SystemVerilog — Unified Hardware Design, Specification, and Verification Language》的第19章。
-
Verilog
+關注
關注
28文章
1352瀏覽量
110443 -
時鐘
+關注
關注
11文章
1747瀏覽量
131849 -
DUT
+關注
關注
0文章
189瀏覽量
12509
原文標題:【看即會用】SystemVerilog實用知識點:覆蓋率之Function Coverage
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
一文詳解Modelsim代碼覆蓋率功能使用
為什么覆蓋率分析師沒有證明電阻器已經(jīng)過測試?
關于SpinalHDL中的驗證覆蓋率收集簡單說明
重點厘清覆蓋率相關的概念以及在芯片開發(fā)流程中跟覆蓋率相關的事項
Systemverilog覆蓋率的合并和計算方式
Verilog代碼覆蓋率檢查
IP開發(fā)時如何考慮復用覆蓋率
嵌入式代碼覆蓋率統(tǒng)計方法和經(jīng)驗
![嵌入式代碼<b class='flag-5'>覆蓋率</b>統(tǒng)計方法和經(jīng)驗](https://file.elecfans.com/web1/M00/D8/D3/o4YBAF_1YqiAZu9UAAAxHZKXLMg754.png)
統(tǒng)計嵌入式代碼覆蓋率的方法和經(jīng)驗
![統(tǒng)計嵌入式代碼<b class='flag-5'>覆蓋率</b>的方法和經(jīng)驗](https://file.elecfans.com/web1/M00/E7/B9/pIYBAGBhb12AYhw9AAAxHZKXLMg997.png)
評論