色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    182

    瀏覽量

    19208
收藏 人收藏

    評論

    相關推薦

    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 environment?

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

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

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

    UVM學習筆記(一)

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

    UVM driver和sequencer的通信

    sequencer生成激勵數據,并將其傳遞給driver執行。UVM類庫提供了uvm_sequencer基類,其參數為request和response數據類型。
    的頭像 發表于 06-07 11:58 ?1773次閱讀
    <b class='flag-5'>UVM</b> driver和sequencer的通信

    聊一聊所謂的Objection機制

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

    管理test case結束機制介紹

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

    UVMuvm_config_db機制背后的大功臣

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

    UVMuvm_config_db機制背后的大功臣

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

    一文詳解UVM設計模式

    本篇是對UVM設計模式 ( 二 ) 參數化類、靜態變量/方法/類、單例模式、UVM_ROOT、工廠模式、UVM_FACTORY[1]中單例模式的補充,分析靜態類的使用,UVM中資源池的
    的頭像 發表于 08-06 10:38 ?2053次閱讀
    一文詳解<b class='flag-5'>UVM</b>設計模式
    主站蜘蛛池模板: 一亲二脱三插 | 99久久做夜夜爱天天做精品 | 国产偷抇久久精品A片蜜臀A | 亚洲欧美一区二区久久 | 美女脱了内裤张开腿让男人桶到爽 | 偷柏自拍亚洲综合在线 | 国产精品免费视频能看 | 李亚男三级| 免费在线视频成人 | 国产高清在线观看视频 | 最近中文字幕免费高清MV视频6 | 美女被黑人巨大进入 | 欧美丰满少妇久久无码精品 | 拍戏被CAO翻了H | 色戒未删减版在线观看完整 | 99久久免费看国产精品 | 国产成人无码免费精品果冻传媒 | 漂亮的保姆3集电影免费观看中文 | 又长又大又粗又硬3p免费视频 | 电影内射视频免费观看 | 午夜影视不充值观看 | 国产无遮挡又黄又爽在线视频 | 纯肉小黄文高H | 国产永不无码精品AV永久 | 国产超碰精久久久久久无码AV | 97午夜精品 | 最近中文字幕完整版免费高清 | 成人网视频在线观看免费 | 无码成人AAAAA毛片含羞草 | 亚洲免费在线播放 | adc年龄确认大驾光临入口 | 国产精品久久人妻无码网站一区L | 麻豆AV蜜桃AV久久 | 免费乱理伦片在线观看夜 | 中文字幕无码他人妻味 | 亚洲欧洲自拍偷拍 | 99视频精品全部 国产 | qvod小电影| 黄色三级图片 | 国产成久久免费精品AV片天堂 | 亚洲 欧美 国产 在线 日韩 |