99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

如何優(yōu)雅地結(jié)束UVM Test

芯片驗證日記 ? 來源:芯片驗證日記 ? 作者:芯片驗證日記 ? 2022-12-17 11:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 前言

眾所周知,在傳統(tǒng)的測試平臺中,通常在完成復(fù)位、配置、數(shù)據(jù)傳輸和自動檢查等所有步驟后,通過調(diào)用verilog的系統(tǒng)函數(shù)$finish來結(jié)束仿真

但相對于傳統(tǒng)的測試平臺,UVM在Testbench架構(gòu)的幾乎每個方面都做了創(chuàng)新,當(dāng)然結(jié)束仿真的控制也發(fā)生了很大變化。在UVM驗證環(huán)境中結(jié)束仿真最常用的就是drop_objection機制,當(dāng)然所有phase都結(jié)束后,還是調(diào)用系統(tǒng)函數(shù)$finish來結(jié)束仿真。

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

2. 本文的內(nèi)容目錄

poYBAGOdNEiAfn2wAAOe6MAtDt0572.png

3. Raising & Droping Objection機制

3.1 drop_objection的函數(shù)原型

下圖是uvm1.1d源碼中關(guān)于drop_objection函數(shù)的定義,如下圖所示。

poYBAGOdNGaAKN2eAAFbYfqfbmU984.png

3.2 在seq中使用drop_objection

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

pYYBAGOdNJqAPNWZAAJFCKzvWno024.png

3.3 在scoreboard中使用drop_objection

poYBAGOdNMqAJC2yAAFaKB6Hi5I742.png

3.4 在test中使用drop_objection

pYYBAGOdNOWAbKM_AANHPedUyeY723.png

3.5 使用drop_objection總結(jié)

結(jié)合上面的例子,強調(diào)兩點:

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

二是:在實際項目中的整個驗證環(huán)境中,最好只用一對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)是組件類的回調(diào)方法(函數(shù)),當(dāng)相應(yīng)phase的所有objection均被放下并且該phase將要結(jié)束時,會調(diào)用該方法。組件類可以使用此回調(diào)方法來定義phase即將結(jié)束時需要執(zhí)行的任何功能。例如,如果某個組件希望將phase結(jié)束延遲到某個條件,甚至在所有objections均被放下之后,也可以使用此回調(diào)方法來完成。再比如,如果一個激勵或應(yīng)答sequence正在運行,在主sequence結(jié)束之前,則可以使用main_phase()中的phase_ready_to_end()回調(diào)方法來停止那些激勵或應(yīng)答sequence。再比如一個component想要延遲某個run-time phase的生命周期,那么可以在所有的objection都被dropped之后使用這個回調(diào)方法。

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

4.3 在env中使用的一個示例

注意,phase_ready_to_end是一個function,但用fork/join_none將wait_for_ok_to_finish和drop_objection進(jìn)行了處理,這允許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的解釋,以及函數(shù)原型的定義。

pYYBAGOdNYSAdYcVAAM0DOY2s3o766.png

5.2 set_drain_time的使用示例

set_drain_time的使用方法,同樣來自最權(quán)威的source code.

poYBAGOdNZ2AVrUeAAHgoDdHvmQ904.png

5.3 set_drain_time的另一個示例

poYBAGOdNb6AOof6AALIzE0n7Tc684.png

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

審核編輯 黃昊宇

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

    關(guān)注

    0

    文章

    182

    瀏覽量

    19548
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

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

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

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

    什么是uvmuvm的特點有哪些呢

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

    談?wù)?b class='flag-5'>UVM中的uvm_info打印

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

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

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

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

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

    什么是UVM environment?

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

    介紹一個通過GUI方式自動生成UVM環(huán)境的工具

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

    UVM學(xué)習(xí)筆記(一)

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

    UVM driver和sequencer的通信

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

    聊一聊所謂的Objection機制

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

    管理test case結(jié)束機制介紹

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

    UVMuvm_config_db機制背后的大功臣

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

    UVMuvm_config_db機制背后的大功臣

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

    一文詳解UVM設(shè)計模式

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