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

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

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

如何又快又好的梳理和利用驗證feature文檔

sanyue7758 ? 來源:杰瑞IC驗證 ? 作者:Jerry ? 2022-10-09 09:07 ? 次閱讀

前面我們探討了接到驗證任務(wù)后的行動以及前期如何進行高效的學(xué)習(xí),當有了對驗證對象的充分理解和學(xué)習(xí)之后,我們就可以進行驗證feature(即驗證的測試點)的提取了。

凡事預(yù)則立,不預(yù)則廢,眾所周知,驗證feature文檔決定驗證的內(nèi)容、側(cè)重點、質(zhì)量,是驗證工程師最重要的文檔和指導(dǎo)工具。

本文的側(cè)重點不在于大而全的探討諸如”不同類型的驗證對象哪些點可以作為驗證feature”等內(nèi)容(以后在別的文章中有機會再討論),而是繼續(xù)遵循“高效”的主題,一起探討如何又快又好的梳理驗證測試點這個文檔?怎樣在驗證過程中充分使用這個文檔?

杰瑞IC驗證給出一種答案,圍繞一個口訣來作為今天探討的線索和綜述:

“先粗再細、先全再剃、不斷迭代、定期反思”

1

先粗再細

對于驗證feature來說什么叫粗?什么叫細?

我們舉個簡單的例子,如一條驗證feature可以這樣寫:

“需要覆蓋中斷功能的測試?!?/p>

也可以把這一條驗證feature細化成多條驗證feature,這樣寫:

“覆蓋不同中斷信號使能打開、關(guān)閉測試”

“覆蓋中斷正常清除測試”

“覆蓋延遲清除中斷測試”

“覆蓋不同中斷來源的中斷測試” “覆蓋中斷有效后相關(guān)中斷狀態(tài)寄存器正確性檢查” “覆蓋中斷不同來源同時有效的優(yōu)先級測試”

“覆蓋多中斷次數(shù)測試場景”

……

當然,還可以寫的更細致:

例如上面“覆蓋不同中斷信號使能打開、關(guān)閉測試”可以繼續(xù)分解:

“覆蓋不同中斷信號隨機打開關(guān)閉以及不同信號間的交叉場景”

“覆蓋中斷信號使能全關(guān)閉,通過輪詢寄存器方式處理中斷場景”

……

例如“覆蓋延遲清除中斷測試”可以繼續(xù)分解:

“覆蓋延遲清中斷,延遲時間小范圍隨機”

“覆蓋延遲清中斷,延遲時間等到下一個中斷來之后再清除” ……

我們不再繼續(xù)細化贅述,相信大家從舉例中已經(jīng)有點感覺了,什么叫“粗”,什么叫“細”,這里說到的粗細,其實就是指的是驗證feature的顆粒度。

杰瑞IC驗證認為,一個好的驗證feature文檔,一定是全面且顆粒度很細的文檔。只有顆粒度很細,借助這個驗證feature文檔才能更好的幫助你把需要覆蓋的測試點思考清楚,更好的衡量你的驗證工作量制定驗證計劃、更好的幫你構(gòu)造定向或隨機case和編寫功能覆蓋率代碼、更好的保證你的驗證完備性。

可想而知,如果你只寫一句這么“博大精深”的驗證feature:“需要覆蓋中斷功能的測試?!?,你看到這條驗證feature也許很難會想到還需要:“覆蓋延遲清中斷,延遲時間等到下一個中斷來之后再清除” 這種測試場景,這樣就有可能會埋下風險。

我們回到“高效戰(zhàn)斗”的主題,怎么又好又快的把這個文檔搞定呢?

從高效的角度杰瑞IC驗證建議一定要“先粗再細”。

一方面:

“粗”可以讓我們站在一個宏觀的角度,不漏掉大的功能點,例如先涵蓋各種需求點、各種設(shè)計文檔核心功能點、應(yīng)用場景、性能點、功耗測試點、壓力測試點、注錯點等等

另一方面:

我們是不可能一蹴而就的。如果一開始就鉆進某一個點,把某個功能的所有細節(jié)驗證feature寫清楚再寫別的,效率顯然會低于先寫的粗一點,再多輪迭代進行細化。正如前面的舉例,每一次的細化都在上一輪細化的思考基礎(chǔ)之上進行的,這樣也會想的更清楚全面。

2

先全再剃

通過剛才講的先粗略提取再不斷細化的方式,相信大家可以高效提取出來一個比較全面的驗證feature文檔。

前面我們提到:“一個好的驗證feature文檔,一定是全面且顆粒度很細的文檔?!钡莾H僅的全面和顆粒度小,就可以叫一個好的驗證feature文檔嗎??

答案是否定的,全面和顆粒度小,只是提取驗證feature的第一步。如果說第一步細化是做加法,第二步更為重要和有難度,那就是做減法。就像本節(jié)的小標題“先全再剃”,這里的“剃”,講的就是“剃刀原則”的“剃”,關(guān)注的是驗證的執(zhí)行層面,“剃”就是學(xué)會取舍,就是抓驗證重點和主要矛盾,就是高效的體現(xiàn)。

(1)“剃”,刪除掉不必要的驗證feature。

有時候,我們需要刪除和精簡一些沒有必要的驗證feature。

最簡單的例如,對于已經(jīng)多次流片實踐驗證穩(wěn)定的ip,沒有必要覆蓋非常細致的驗證feature,這部分完全可以舍去不驗證。

再舉一個例子:如針對某個參數(shù)我們通過確定邊界值、典型值、劃分等價類等方式進行驗證feature細化:

“A參數(shù)取值[0:1000],需要覆蓋邊界值0,1000,典型值200、500、600、900……(例如100個),隨機覆蓋a模式[0:200),b模式[200:700),c模式[700:1000]”

“B參數(shù)取值[0:8880],需要覆蓋邊界值0,8880,典型值200、500、600、900……(例如300個),隨機覆蓋a模式[0:1000),b模式[1000:300),c模式[3000:8880]”

……

這樣的參數(shù)有20個,然后有一條:

“需要覆蓋這20個參數(shù)取值的所有交叉場景”

這個“交叉場景”是很全面了(當然你如果想“修身養(yǎng)性”可以用一整天時間進一步具體細化出來怎么交叉的)。但是這條有意義嗎?

對于EDA仿真驗證來說,這條可以說是沒有意義的,因為這個需要覆蓋的驗證空間太大了,大到不能執(zhí)行,即使你通過腳本交叉參數(shù)一鍵生成批量case,這么大的case量大概率不能在有限的時間跑完,就算能跑完,這樣的參數(shù)交叉測試是否真的有意義,是否在浪費測試時間?我們有這樣的時間,放在更重要的測試點上努力是否更有價值?

所以,對于這樣的驗證feature我們一定要做以權(quán)衡。是否可以通過深入分析實際應(yīng)用場景和設(shè)計思路,精簡這些驗證feature,是不是哪些點可以刪除?是不是哪些點不需要交叉覆蓋?當然也可以思考是不是我們可以嘗試啟用形式驗證工具?

(2)“剃”,給驗證feature選擇一個更好的歸宿。

舉一個例子,有這樣一條驗證feature:“需要覆蓋連續(xù)不間斷運行10000次場景的壓力測試”。

這條驗證feature考慮的沒有問題,顆粒度很細,需求也很明確。但是對于EDA驗證來說,又是一個不可能完成的任務(wù),這么一個case可能跑幾個月都結(jié)束不了。對于這樣的驗證feature,不需要從文檔中刪除,因為FPGA測試是可以辦到的,這種情況可以增加備注,指明在FPGA測試的時候進行覆蓋,并且負責跟蹤這個點是否在FPGA驗證計劃中列出以及測試時候是否確實落實。

同理,例如有的驗證feature可能不適合在單元級驗證時候測試,適合在更高層次的驗證階段中測試,都可以像上面的例子給驗證feature一個更好的測試“歸宿”,用最適合的方式覆蓋,從而提高項目總體的驗證效率。當然了,給驗證feature更好的歸宿前提是需要驗證者了解和把握驗證的不同驗證階段以及不同驗證層次的側(cè)重點和優(yōu)劣勢,有一個驗證的全局觀念。

(3)“剃”,給驗證feature刮骨,設(shè)置不同的優(yōu)先級。

有這么兩條驗證feature:

“需要覆蓋中斷功能的測試”

“覆蓋用于debug的狀態(tài)寄存器”

很明顯,第一個驗證feature是核心功能,第二條重要程度遠遠不如第一條。如果我們的驗證時間有限,那我們至少要通過完備的激勵和檢查機制保證第一條核心功能,而不是先編寫大量的checker去自動化檢查各種debug狀態(tài)寄存器。

也就是說,不同的驗證feature含金量和優(yōu)先級也是不一樣的,我們在提取驗證feature的時候,要想清楚和標注不同驗證feature的優(yōu)先級。

3

不斷迭代

驗證feature列表在驗證開始前就是寫好固定死了不能變的嗎?

不是的,驗證feature文檔是動態(tài)變化迭代的

在正式驗證開展之前,我們會出一個當時認為最完善的版本,但是在驗證過程中我們還是要定期迭代我們的驗證feature文檔,例如:

當需求和設(shè)計的變更,我們需要相應(yīng)的修改和增刪驗證feature;

當功能應(yīng)用場景、典型參數(shù)增加或改變時,及時增加驗證feature;

性能功耗的場景驗證feature也可能常常需要修改文檔;

隨著驗證過程中對設(shè)計理解更加深入,也需要及時的記錄和補充細化驗證feature。

4

定期反思

驗證feature需要定期反思,有兩層含義,一方面是對已有驗證feature的不斷反思,其實類似于上面說的迭代,定期反思之前提取出的驗證feature是否合理或有缺少,這里不過多解釋;另一方面,是要利用好我們的驗證feature文檔,定期反思驗證進度和質(zhì)量。

a. 依據(jù)我們的驗證feature列表和優(yōu)先級等信息來制定我們的驗證計劃,并且不斷的修改更正我們的驗證計劃。

b.定期的把測試用例與驗證feature列表做一個對應(yīng)和反標,心里清楚哪些驗證feature已經(jīng)有case覆蓋住了,哪些還沒有,在驗證項目最后要保證所有驗證feature都有定向或隨機case可以對應(yīng)。

c. 功能覆蓋率覆蓋點的規(guī)劃和收集工作,也需要定期利用驗證feature文檔進行規(guī)劃和反思,確定哪些點是一定需要寫功能覆蓋率收集代碼的,也是驗證完備性和質(zhì)量的保證。

結(jié)語

今天我們用了一句口訣來回答“如何又快又好的梳理和利用驗證feature文檔?”

這個問題,即“先粗再細、先全再剃、不斷迭代、定期反思”。

驗證feature文檔的地位絕對是驗證過程中金字塔的頂端,篇幅有限,這其中很多的細節(jié)還希望各位進一步探索、感悟、交流~





審核編輯:劉清

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

    關(guān)注

    9

    文章

    428

    瀏覽量

    26452
  • EDA工具
    +關(guān)注

    關(guān)注

    4

    文章

    264

    瀏覽量

    31639
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    894

    瀏覽量

    41327

原文標題:驗證feature文檔梳理

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

收藏 人收藏

    評論

    相關(guān)推薦

    機器學(xué)習(xí)中的交叉驗證方法

    在機器學(xué)習(xí)中,交叉驗證(Cross-Validation)是一種重要的評估方法,它通過將數(shù)據(jù)集分割成多個部分來評估模型的性能,從而避免過擬合或欠擬合問題,并幫助選擇最優(yōu)的超參數(shù)。本文將詳細探討幾種
    的頭像 發(fā)表于 07-10 16:08 ?606次閱讀

    生物識別驗證在哪里開啟

    生物識別驗證是一種利用生物特征進行身份驗證的技術(shù),包括指紋、面部、虹膜、聲音等。隨著科技的發(fā)展,生物識別驗證已經(jīng)被廣泛應(yīng)用于各個領(lǐng)域,如手機解鎖、銀行交易、門禁系統(tǒng)等。 一、生物識別
    的頭像 發(fā)表于 07-08 10:26 ?625次閱讀

    FPGA開發(fā)如何降低成本,比如利用免費的IP內(nèi)核

    。 了解IP內(nèi)核的特性和使用方式:在選定IP內(nèi)核后,應(yīng)詳細閱讀其文檔,了解內(nèi)核的功能、性能、接口以及使用限制等。這有助于在設(shè)計中更好地利用這些內(nèi)核,避免潛在的問題。 集成IP內(nèi)核到FPGA設(shè)計中:在
    發(fā)表于 04-28 09:41

    labview文檔教程資料(四)

    電子發(fā)燒友網(wǎng)站提供《labview文檔教程資料(四).zip》資料免費下載
    發(fā)表于 04-23 09:29 ?11次下載

    labview文檔教程資料(三)

    電子發(fā)燒友網(wǎng)站提供《labview文檔教程資料(三).zip》資料免費下載
    發(fā)表于 04-23 09:29 ?5次下載

    labview文檔教程資料(二)

    電子發(fā)燒友網(wǎng)站提供《labview文檔教程資料(二).zip》資料免費下載
    發(fā)表于 04-23 09:28 ?15次下載

    labview文檔教程資料(一)

    電子發(fā)燒友網(wǎng)站提供《labview文檔教程資料(一).zip》資料免費下載
    發(fā)表于 04-23 09:27 ?30次下載

    如何選擇IP DV與SOC DV

    IP DV的主要工作是根據(jù)IP的spec,提取testplan,搭建驗證環(huán)境,收斂覆蓋率。但是上述的過程多見于新的IP,對于已經(jīng)成熟的IP,IP DV的主要工作是針對 改動的feature 提取testplan,增加驗證用例。
    的頭像 發(fā)表于 03-21 10:02 ?760次閱讀

    fpga驗證和uvm驗證的區(qū)別

    FPGA驗證和UVM驗證在芯片設(shè)計和驗證過程中都扮演著重要的角色,但它們之間存在明顯的區(qū)別。
    的頭像 發(fā)表于 03-15 15:00 ?1319次閱讀

    Azentio Software 和 Regula 合作強化數(shù)字化入職的身份驗證

    攜手利用 Regula 全球領(lǐng)先的文檔認證和人臉活體檢測技術(shù) 新加坡2024年1月23日 /美通社/ -- 隸屬于 Apax Partners 名下基金會,總部位于新加坡的 Azentio
    的頭像 發(fā)表于 01-23 21:27 ?422次閱讀

    金剛石晶體的不同類型及應(yīng)用梳理

    金剛石是我們都非常熟悉的超硬材料,人造金剛石晶體有多種不同的類型,大致可分為單形和聚形,每種類型都具有不同的特性和應(yīng)用。本文梳理了金剛石晶體的不同類型及應(yīng)用。
    的頭像 發(fā)表于 01-02 15:47 ?2093次閱讀

    UVVM(通用 VHDL 驗證方法)

    UVVM(通用 VHDL 驗證方法) 簡介? UVVM(通用 VHDL 驗證方法)是一種免費的開源方法和庫,用于開發(fā)非常結(jié)構(gòu)化的基于 VHDL 的測試平臺。 概述、可讀性、可維護性、可擴展性和重用性
    發(fā)表于 01-02 12:59

    芯片驗證中l(wèi)inux的用法詳解

    本文主要針對芯片驗證工作中常用的linux知識做了一個總結(jié)和梳理,內(nèi)容雖然比較基礎(chǔ),但確實是非常實用。全文8000多字,為了方便大家閱讀和查閱,我把文章的目錄截圖放下面。如果您是老手,看看目錄是不是都掌握了;如果您是新手,也不用焦慮,山高千仞,只登一步。
    的頭像 發(fā)表于 12-03 14:23 ?936次閱讀
    芯片<b class='flag-5'>驗證</b>中l(wèi)inux的用法詳解

    基于Feature架構(gòu)設(shè)計的百兆以太網(wǎng)交換機項目

    第二代交換機有更豐富的feature,更貼近真正使用的功能,除rtl代碼,詳細設(shè)計文檔外,還會包括驗證環(huán)境、驗證代碼,最后項目完成后,會全部開源供大家學(xué)習(xí),順利的話,希望還能上FPGA
    的頭像 發(fā)表于 11-20 09:22 ?672次閱讀
    基于<b class='flag-5'>Feature</b>架構(gòu)設(shè)計的百兆以太網(wǎng)交換機項目

    功率放大電路知識的梳理

    電子發(fā)燒友網(wǎng)站提供《功率放大電路知識的梳理.pdf》資料免費下載
    發(fā)表于 11-17 15:41 ?0次下載
    功率放大電路知識的<b class='flag-5'>梳理</b>