0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SystemVerilog實(shí)用知識(shí)點(diǎn):覆蓋率之Function Coverage

sanyue7758 ? 來(lái)源:芯片掃地僧ICer ? 2023-06-04 16:30 ? 次閱讀

SystemVerilog是一名芯片驗(yàn)證工程師,必須掌握的一門語(yǔ)言,其中Function Coverage是必須要懂的知識(shí)點(diǎn)之一;

看完這篇,應(yīng)該就會(huì)寫Function Coverage了;

一、概述

有一定基礎(chǔ),想直接看用法,直接看第二部分——實(shí)現(xiàn)(強(qiáng)調(diào)!代碼部分要精讀,文字略抽象,例子好理解)。

功能覆蓋率(Function Coverage)是衡量驗(yàn)證完備性的重要標(biāo)準(zhǔn)之一。

其用于度量驗(yàn)證中已執(zhí)行的測(cè)試點(diǎn)(cover point)占設(shè)計(jì)規(guī)范的比例,從而避免功能驗(yàn)證的遺漏?;蛘哒f(shuō),F(xiàn)unctional coverage是驗(yàn)證工程師基于對(duì)DUT的認(rèn)識(shí)來(lái)對(duì)驗(yàn)證feature進(jìn)行分解后,將需要覆蓋的點(diǎn)進(jìn)行分析后寫出,因此對(duì)于DUT Spec的信息提取非常重要。

Functional_coverage可以檢查:

1. 你關(guān)心的場(chǎng)景是否覆蓋完備;2. 驗(yàn)證工程師構(gòu)造的隨機(jī)激勵(lì)的隨機(jī)程度/合理性;3. 從Spec中提取的feature點(diǎn)是否覆蓋完備;...

Function Coverage通過(guò)編寫coverage group, coverage points和bins等來(lái)構(gòu)造收集“容器”。這里我們不介紹Assertion Coverage, Code Coverage等,以后會(huì)單獨(dú)介紹。

收集Function Coverage的相關(guān)驗(yàn)證文件是由驗(yàn)證工程師定義編寫的,靈活度很高,所以更需要謹(jǐn)慎對(duì)待,這是個(gè)Review的過(guò)程,一般需要編寫:unit_coverage.sv + unit_coverage_interface.sv + top.sv。

1. unit_coverage.sv (unit_cov.sv),可能包含多個(gè)功能覆蓋模型coverage group,構(gòu)造的收集“容器”,收集過(guò)程在這里實(shí)現(xiàn);2. unit_coverage_interface.sv(unit_cov_if.sv),定義unit_cov.sv中需要用到的interface;3. top.sv,將unit_cov_if.sv中定義的interface與DUT中對(duì)應(yīng)的interface連接起來(lái);

二、實(shí)現(xiàn)

功能覆蓋率模型/覆蓋組(cover group):

覆蓋組是使用cover group構(gòu)造定義的。

ex1: 會(huì)在指定的signal_abc變化時(shí)才采樣

wKgZomR8TDGAc0leAADkFCfty84581.jpg

ex2:在時(shí)鐘上升沿((posedge)采樣。

覆蓋點(diǎn)(cover ponit):

wKgaomR8TJqAbM2cAACJGNmh7Ug700.jpg

覆蓋點(diǎn)是使用cover ponit和bins構(gòu)造定義的。

一個(gè)覆蓋組可以包含一個(gè)或多個(gè)覆蓋點(diǎn)。每個(gè)覆蓋點(diǎn)都與“ bins”關(guān)聯(lián)?!癰ins”可自動(dòng)創(chuàng)建,也可以明確定義。

ex1:自動(dòng)創(chuàng)建bins

為coverpoint變量范圍的每個(gè)值自動(dòng)創(chuàng)建一個(gè)bins,這稱為自動(dòng)或隱式bins。

對(duì)于“ n”位的整數(shù)coverpoint變量,將創(chuàng)建2^n個(gè)bin,但是最多為64個(gè),當(dāng)2^n大于64時(shí),每個(gè)bin不再是一個(gè)值,而是2^n/64

ex2:明確定義bins

該方式--- 常用,這里重點(diǎn)看每個(gè)bins定義代表的不同意義。

在覆蓋點(diǎn)標(biāo)識(shí)符(cover point)之后,在大括號(hào){}中顯式聲明bins,其中聲明bins名稱和變量值/范圍。

ex3:交叉覆蓋(cross)

覆蓋選項(xiàng)(cover options)

at_least

每個(gè)bins的最小匹配/采樣次數(shù)。默認(rèn)值為“ 1”,默認(rèn)情況下,數(shù)值采樣了1次就可以計(jì)入有效的bin(已覆蓋)。可以通過(guò)修改at_least來(lái)修改每個(gè)bin對(duì)應(yīng)的最小采樣次數(shù),注意,如果低于at_least數(shù)值,則該bin不算被覆蓋。在covergroup里使用 option.at_least,會(huì)影響所有的coverpoint里的bin。在coverpoint里使用 option.at_least,只影響該coverpoint下的bin,但coverpoint中使用會(huì)覆蓋covergroup中的使用。

auto_bin_max

沒(méi)有為coverpoint明確定義bins時(shí)自動(dòng)創(chuàng)建bins的最大數(shù)量。默認(rèn)值為“ 64”。

cross_auto_bin_max

沒(méi)有默認(rèn)值,它是無(wú)界的。

wKgaomR8TG6AAeZKAABjNDhZ1-U692.jpg

如果對(duì)一個(gè)covergroup實(shí)例化了很多次,那么SV默認(rèn)會(huì)把所有實(shí)例的覆蓋率合并在一起。 option.per_instance = 1,表示covergroup的每一個(gè)實(shí)例的覆蓋率都要單獨(dú)計(jì)算。

goal

不論covergroup或是coverpoint的目標(biāo)覆蓋率皆是100%,不過(guò)也可以通過(guò)option.goal=value,來(lái)降低覆蓋率目標(biāo),這個(gè)選項(xiàng)只會(huì)影響覆蓋率報(bào)告。

......

更多options和關(guān)于Function Coverage更詳細(xì)的描述/用法去翻閱《system verilog官方手冊(cè)》:《IEEE Standard for SystemVerilog — Unified Hardware Design, Specification, and Verification Language》的第19章。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1343

    瀏覽量

    109925
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1714

    瀏覽量

    131275
  • DUT
    DUT
    +關(guān)注

    關(guān)注

    0

    文章

    189

    瀏覽量

    12309

原文標(biāo)題:【看即會(huì)用】SystemVerilog實(shí)用知識(shí)點(diǎn):覆蓋率之Function Coverage

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一文詳解Modelsim代碼覆蓋率功能使用

    作者:默宸? Modelsim代碼覆蓋率功能Code coverage,能報(bào)告出statement(語(yǔ)句)、branch(分支)、condition(條件)、expression(表達(dá)
    的頭像 發(fā)表于 12-09 11:45 ?5707次閱讀

    怎么用Vivado做覆蓋率分析

    在做仿真的時(shí)候往往會(huì)去做代碼覆蓋率和功能覆蓋率的分析,來(lái)保證仿真是做的比較充分完備的。
    的頭像 發(fā)表于 01-03 12:34 ?1482次閱讀
    怎么用Vivado做<b class='flag-5'>覆蓋率</b>分析

    為什么覆蓋率分析師沒(méi)有證明電阻器已經(jīng)過(guò)測(cè)試?

    您好,我對(duì)Coverage Analyst有疑問(wèn)。我使用的是Coverage Analyst版本5.21p。覆蓋率分析師完成覆蓋率報(bào)告確定(html文件),但我對(duì)報(bào)告中顯示的結(jié)果有疑問(wèn)
    發(fā)表于 01-07 16:06

    如何改善5G覆蓋率?

    改善5G覆蓋率的方法
    發(fā)表于 12-15 07:52

    如何提高DFT設(shè)計(jì)測(cè)試覆蓋率

    提高DFT設(shè)計(jì)測(cè)試覆蓋率的有效方法是什么
    發(fā)表于 05-07 06:37

    關(guān)于SpinalHDL中的驗(yàn)證覆蓋率收集簡(jiǎn)單說(shuō)明

    成Verilog/Systemverilog電路交由Verilator進(jìn)行仿真,而激勵(lì)則由scala本身提供,兩者之間通過(guò)verilator的VPI進(jìn)行通信交流。SpinalHDL覆蓋率的收集在
    發(fā)表于 06-24 15:56

    重點(diǎn)厘清覆蓋率相關(guān)的概念以及在芯片開發(fā)流程中跟覆蓋率相關(guān)的事項(xiàng)

    全盤考量。而覆蓋率,就是芯片工程中,評(píng)審體系需要重點(diǎn)參考的一項(xiàng)技術(shù)指標(biāo),但也只是驗(yàn)證相關(guān)的其中一項(xiàng)。目前被業(yè)界廣泛采用的覆蓋率指標(biāo)有功能覆蓋率Function
    發(fā)表于 09-14 11:57

    Systemverilog覆蓋率的合并和計(jì)算方式

      在systemverilog中,對(duì)于一個(gè)covergroup來(lái)說(shuō),可能會(huì)有多個(gè)instance,我們可能需要對(duì)這些instance覆蓋率進(jìn)行操作?! ≈槐4鎐overgroup type的覆蓋率
    發(fā)表于 03-21 14:24

    Verilog代碼覆蓋率檢查

    Verilog代碼覆蓋率檢查是檢查驗(yàn)證工作是否完全的重要方法,代碼覆蓋率(codecoverge)可以指示Verilog代碼描述的功能有多少在仿真過(guò)程中被驗(yàn)證過(guò)了,代碼覆蓋率分析包括以下分析內(nèi)容。
    發(fā)表于 04-29 12:35 ?8325次閱讀

    IP開發(fā)時(shí)如何考慮復(fù)用覆蓋率

    如何在開發(fā)IP的同時(shí)去鞏固集成和復(fù)用覆蓋率?IP的某些功能和性能是可以配置的,需要考慮的是IP被各種合理配置后的工作是否都能夠正常,將功能覆蓋率先整理為層次化的抽象功能覆蓋率模型,稱之為cover model。
    的頭像 發(fā)表于 02-18 12:08 ?2565次閱讀

    嵌入式代碼覆蓋率統(tǒng)計(jì)方法和經(jīng)驗(yàn)

    代碼覆蓋率是衡量軟件測(cè)試完成情況的指標(biāo),通?;跍y(cè)試過(guò)程中已檢查的程序源代碼比例計(jì)算得出。代碼覆蓋率可以有效避免包含未測(cè)試代碼的程序被發(fā)布。 1. 問(wèn)題背景 代碼覆蓋(Code coverag
    的頭像 發(fā)表于 01-06 15:06 ?3105次閱讀
    嵌入式代碼<b class='flag-5'>覆蓋率</b>統(tǒng)計(jì)方法和經(jīng)驗(yàn)

    統(tǒng)計(jì)嵌入式代碼覆蓋率的方法和經(jīng)驗(yàn)

    代碼覆蓋率是衡量軟件測(cè)試完成情況的指標(biāo),通常基于測(cè)試過(guò)程中已檢查的程序源代碼比例計(jì)算得出。代碼覆蓋率可以有效避免包含未測(cè)試代碼的程序被發(fā)布。 1. 問(wèn)題背景 代碼覆蓋(Code coverag
    的頭像 發(fā)表于 03-29 11:58 ?1891次閱讀
    統(tǒng)計(jì)嵌入式代碼<b class='flag-5'>覆蓋率</b>的方法和經(jīng)驗(yàn)

    覆蓋率的Verilog代碼的編寫技巧

    設(shè)計(jì)工程師需要關(guān)心的主要有行覆蓋率(Block),條件覆蓋率(Expression),翻轉(zhuǎn)覆蓋率(Toggle),狀態(tài)機(jī)覆蓋率。本文從ASIC設(shè)計(jì)的角度上來(lái)討論,如何寫出高
    的頭像 發(fā)表于 05-26 17:30 ?4164次閱讀

    脫離代碼談芯片驗(yàn)證關(guān)鍵指標(biāo):覆蓋率

    驗(yàn)證覆蓋率(Verification Coverage)的存在是為了試圖回答這樣一個(gè)問(wèn)題:“你怎么知道驗(yàn)證已經(jīng)完成?”
    的頭像 發(fā)表于 04-17 10:04 ?4027次閱讀

    SystemVerilog覆蓋率建模方式

    為了確保驗(yàn)證的完備性,我們需要量化驗(yàn)證目標(biāo)。SystemVerilog提供了一套豐富的覆蓋率建模方式。
    的頭像 發(fā)表于 06-25 10:44 ?1062次閱讀