精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何優雅地結束UVM Test

芯片驗證日記 ? 來源:芯片驗證日記 ? 作者:芯片驗證日記 ? 2022-12-17 11:23 ? 次閱讀

1. 前言

眾所周知,在傳統的測試平臺中,通常在完成復位、配置、數據傳輸和自動檢查等所有步驟后,通過調用verilog的系統函數$finish來結束仿真

但相對于傳統的測試平臺,UVM在Testbench架構的幾乎每個方面都做了創新,當然結束仿真的控制也發生了很大變化。在UVM驗證環境中結束仿真最常用的就是drop_objection機制,當然所有phase都結束后,還是調用系統函數$finish來結束仿真。

下面,分享一下在UVM驗證環境中,結束仿真的幾種方式,這些結束方式,適用于不同的應用場景。我的表達能力不強,大家重點看代碼。

2. 本文的內容目錄

poYBAGOdNEiAfn2wAAOe6MAtDt0572.png

3. Raising & Droping Objection機制

3.1 drop_objection的函數原型

下圖是uvm1.1d源碼中關于drop_objection函數的定義,如下圖所示。

poYBAGOdNGaAKN2eAAFbYfqfbmU984.png

3.2 在seq中使用drop_objection

下圖是在sequence中調用drop_objection的示例,如下圖所示,同樣來自于uvm源碼。

pYYBAGOdNJqAPNWZAAJFCKzvWno024.png

3.3 在scoreboard中使用drop_objection

poYBAGOdNMqAJC2yAAFaKB6Hi5I742.png

3.4 在test中使用drop_objection

pYYBAGOdNOWAbKM_AANHPedUyeY723.png

3.5 使用drop_objection總結

結合上面的例子,強調兩點:

一是:drop_objection可以用在任何一個component中;當然也可以用在sequence中,但不可以用在其他uvm_object類里面,因為uvm_object里面沒有phase的概念,那sequence其實也沒有phase的概念,為什么可以?這也是一個小知識點,有的面試官問的仔細了,也可能問到,我就不展開了。

二是:在實際項目中的整個驗證環境中,最好只用一對raise_objection/drop_objection,不要在很多組件中都使用它,否則很容易造成死鎖,而且很難debug,盡管uvm的語法也允許這么做。

4. phase_ready_to_end(微信公眾號《芯片驗證日記》)

4.1 phase_ready_to_end的官方解釋

pYYBAGOdNQWAXAc6AAUfPlx5xnI936.png

4.2 phase_ready_to_end的理解

phase_ready_to_end(uvm_phase phase)是組件類的回調方法(函數),當相應phase的所有objection均被放下并且該phase將要結束時,會調用該方法。組件類可以使用此回調方法來定義phase即將結束時需要執行的任何功能。例如,如果某個組件希望將phase結束延遲到某個條件,甚至在所有objections均被放下之后,也可以使用此回調方法來完成。再比如,如果一個激勵或應答sequence正在運行,在主sequence結束之前,則可以使用main_phase()中的phase_ready_to_end()回調方法來停止那些激勵或應答sequence。再比如一個component想要延遲某個run-time phase的生命周期,那么可以在所有的objection都被dropped之后使用這個回調方法。

對于sequences, tests和許多完整的測試平臺,在phase的正常壽命期間phase objections的提起和撤銷是足夠的。但是,有時某個組件不希望在phase的正常生命周期內主動提起和撤銷objections,但確實希望延遲從一個phase到下一類phase的過渡。這在事務中經常出現這種情況,出于性能原因,不能針對每筆事務提出objection,并且通常情況下是端到端的記分板。為了在所有其他組件同意該phase應該結束之后延遲phase結束,該組件應該在phase_ready_to_end方法中提出objections。然后它負責在組件的主體中或在phase_ready_end_method的任務fork / join none中撤銷這些objections。

4.3 在env中使用的一個示例

注意,phase_ready_to_end是一個function,但用fork/join_none將wait_for_ok_to_finish和drop_objection進行了處理,這允許function立即返回。

poYBAGOdNSiAfmMUAAM51dfE5Uc973.png

4.4 在scoreboard中使用的一個示例

poYBAGOdNUaAFK_mAAOmz44csMs988.png

4.5 在scoreboard中使用的另一個示例

pYYBAGOdNWeARDaJAALV90F4FJU540.png

5. set_drain_time

5.1 set_drain_time的解釋

下圖是官方對set_drain_time的解釋,以及函數原型的定義。

pYYBAGOdNYSAdYcVAAM0DOY2s3o766.png

5.2 set_drain_time的使用示例

set_drain_time的使用方法,同樣來自最權威的source code.

poYBAGOdNZ2AVrUeAAHgoDdHvmQ904.png

5.3 set_drain_time的另一個示例

poYBAGOdNb6AOof6AALIzE0n7Tc684.png

寫文章不易,如果覺得對您有幫助,麻煩一鍵三連,或者賞個雞腿也行!

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • UVM
    UVM
    +關注

    關注

    0

    文章

    181

    瀏覽量

    19139
收藏 人收藏

    評論

    相關推薦

    IC驗證“UVM驗證平臺加入objection機制和virtual interface機制“(七)

    機制來控制驗證平臺的關閉。細心的讀者可能發現,在上節的例子中,并沒有如**《IC驗證"一個簡單的UVM驗證平臺"是如何搭建的(五)》**所示顯式地調用 finish語句來結束仿真
    發表于 12-09 18:28

    數字IC驗證之“什么是UVM”“UVM的特點”“UVM提供哪些資源”(2)連載中...

    原文鏈接:https://zhuanlan.zhihu.com/p/345775995大家好,我是一哥,上章內容主要講述兩個內容,芯片驗證以及驗證計劃。那本章我們主要講述的內容有介紹什么是uvm
    發表于 01-21 16:00

    什么是uvmuvm的特點有哪些呢

    大家好,我是一哥,上章內容我們介紹什么是uvmuvm的特點以及uvm為用戶提供了哪些資源?本章內容我們來看一看一個典型的uvm驗證平臺應該是什么樣子的,來看一個典型的
    發表于 02-14 06:46

    談談UVM中的uvm_info打印

      uvm_info宏的定義如下:  `define uvm_info(ID,MSG,VERBOSITY) \  begin \  if (uvm_report_enabled(VERBOSITY
    發表于 03-17 16:41

    UVM中seq.start()和default_sequence執行順序

      1. 問題  假如用以下兩種方式啟動sequence,方法1用sequence的start()方法啟動seq1,方法2用UVM的default_sequence機制啟動seq2。那么seq1
    發表于 04-04 17:15

    我的第一個UVM代碼——Hello world

    run_test調用了uvm_test派生出來的testcase(hello_world)。 為什么run_test能夠通過字符串\"hello_world\"找到testcase?與宏定義
    發表于 11-03 10:18

    UVM實戰教材資料分享

    UVM實戰教材資料分享。
    發表于 05-05 15:51 ?17次下載

    什么是UVM environment?

    UVM environment**包含多個可重用的驗證組件,并根據test case的需求進行相應的配置。例如,UVM environment可能具有多個agent(對應不同的interface)、scoreboard、func
    的頭像 發表于 03-21 11:35 ?1050次閱讀
    什么是<b class='flag-5'>UVM</b> environment?

    介紹一個通過GUI方式自動生成UVM環境的工具

    工具來源于DVCon US 2022的一篇論文:Novel GUI Based UVM Test Bench Template Builder。
    的頭像 發表于 05-04 09:23 ?1251次閱讀
    介紹一個通過GUI方式自動生成<b class='flag-5'>UVM</b>環境的工具

    UVM學習筆記(一)

    driver應該派生自uvm_driver,而uvm_driver派生自uvm_component。
    的頭像 發表于 05-26 14:38 ?1336次閱讀
    <b class='flag-5'>UVM</b>學習筆記(一)

    聊一聊所謂的Objection機制

    Objection是UVM框架中用來同步不同組件的相同phase,以及決定當前測試用例什么時候結束(end-of-test)的機制,這也是用戶在拿到UVM之后最直白的使用場景。
    的頭像 發表于 06-09 11:16 ?1978次閱讀
    聊一聊所謂的Objection機制

    管理test case結束機制介紹

    UVM中每個phase都有一個內置的objection ,為components和objects提供了同步方法,指示何時可以安全地結束這個phase, 最終結束整個test case。
    的頭像 發表于 06-11 09:35 ?598次閱讀

    UVMuvm_config_db機制背后的大功臣

    本次講一下UVM中的uvm_config_db,在UVM中提供了一個內部數據庫,可以在其中存儲給定名稱下的值,之后可以由其它TB組件去檢索。
    的頭像 發表于 06-20 17:28 ?1342次閱讀

    UVMuvm_config_db機制背后的大功臣

    本次講一下UVM中的uvm_config_db,在UVM中提供了一個內部數據庫,可以在其中存儲給定名稱下的值,之后可以由其它TB組件去檢索。
    的頭像 發表于 06-29 16:57 ?1231次閱讀

    一文詳解UVM設計模式

    本篇是對UVM設計模式 ( 二 ) 參數化類、靜態變量/方法/類、單例模式、UVM_ROOT、工廠模式、UVM_FACTORY[1]中單例模式的補充,分析靜態類的使用,UVM中資源池的
    的頭像 發表于 08-06 10:38 ?1632次閱讀
    一文詳解<b class='flag-5'>UVM</b>設計模式