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

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

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

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

冬至子 ? 來源:多讀點書 ? 作者:夕文x ? 2023-05-26 14:46 ? 次閱讀

第2章一個簡單的UVM驗證平臺

2.4 UVM的終極大作:sequence

2.4.1 在驗證平臺中加入sequencer

sequence機制作用:用于產(chǎn)生激勵。其分為兩部分,一是sequence,二是sequencer。

在定義driver時指明此driver要驅(qū)動的transaction的類型,這樣定義的好處是可以直接使用uvm_driver中的某些 預(yù)先定義好的成員變量 ,如uvm_driver中有成員變量 req ,它的類型就是傳遞給uvm_driver的參數(shù)。由此帶來的變化如下:(不需要定義中間變量tr了)

圖片

2.4.2 sequence機制

三者關(guān)系:

1.jpg

每一個sequence都有一個body任務(wù),當一個sequence啟動之后,會自動執(zhí)行body中的代碼。body中uvm_do這個宏的作用如下:

  1. 創(chuàng)建一個my_transaction的實例m_trans;
  2. 將其隨機化;
  3. 最終將其送給sequencer。

如果不使用uvm_do宏,也可以直接使用start_item與finish_item的方式產(chǎn)生transaction。

sequencer負責(zé)協(xié)調(diào)sequence和driver的請求

  • sequencer和driver之間
    • 將兩者連接:drv.seq_item_port.connect(sqr.seq_item_export);
    • 在driver中通過get_next_item任務(wù)來得到一個新的req,并且驅(qū)動它,驅(qū)動完成后調(diào)用item_done通知sequencer(完成握手)。
    • 圖片
  • sequencer和sequence之間:
    • sequence中的uvm_do宏發(fā)送transaction后,會一直等待,直到driver返回item_done信號
    • 在某個component(如my_sequencer、 my_env)的main_phase中啟動這個sequence,即可讓sequence向sequencer發(fā)送transaction。
    • 圖片
    • 圖片

get_next_item和try_next_item的比較

  • get_next_item是阻塞的,它會一直等到有新的transaction才會返回;
  • try_next_item則是非阻塞的,它嘗試著詢問sequencer是否有新的transaction,如果有,則得到此transaction,否則就直接返回。其行為更加接近真實driver的行為

2.4.3 default_sequence的使用

引入default_sequence的原因:

  • 在某個component的build_phase階段使用config_db與default sequence替代了在某個component的main_phase階段利用seq.start(i_agt.sqr)啟動sequence,將objection與sequence完全聯(lián)系起來,增加了可移植性。

如何使用default_sequence:

  • 方法一:在某個component(如my_env)的build_phase中設(shè)置如下代碼
  • 圖片
  • 方法二:在top_tb中設(shè)置
  • 圖片

使用default_sequence時 如何提起和撤銷objection ?

  • 因為在sequencer在啟動default_sequence時,uvm_sequence的內(nèi)置變量starting_phase會自動執(zhí)行如下內(nèi)容:
  • 圖片
  • 所以可以在sequence中使用借助starting_phase來提起和撤銷objection。
  • 圖片

2.5 建造測試用例

2.5.1 加入base_test

對my_env進一步封裝,添加一些公司個性化內(nèi)容,舉例如下:

  • 在report_phase中根據(jù)UVM_ERROR的數(shù)量來打印不同的信息。它在main_phase結(jié)束之后執(zhí)行。
  • 設(shè)置整個驗證平臺的超時退出時間
  • 通過config_db設(shè)置驗證平臺中某些參數(shù)的值

2.5.2 UVM中測試用例的啟動

通過傳遞參數(shù)變量值啟動的原因:

  • 保證后加的測試用例不影響已經(jīng)建好的測試用例

如何使用:

  • 定義不同的base_test,讓run_test()使用缺省模式,然后通過在命令中傳遞參數(shù)變量來實現(xiàn)一次編譯執(zhí)行多個用例,如下:
  • +UVM_TEST_NAME=my_case0
聲明:本文內(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

    文章

    181

    瀏覽量

    19121
  • sequence
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    2828
收藏 人收藏

    評論

    相關(guān)推薦

    新手學(xué)習(xí)System Verilog & UVM指南

    新手學(xué)習(xí)SystemVerilog & UVM指南 從剛接觸System Verilog以及后來的VMM,OVM,UVM已經(jīng)有很多年了,隨著電子工業(yè)的逐步發(fā)展,國內(nèi)對驗證人才的需求也會急劇
    發(fā)表于 03-11 16:24

    IC驗證"為什么要學(xué)習(xí)UVM呢"

    目前市面上基于SystemVerilog的驗證主要有種:VMM(Verification Methodology Manual),這是Synopsys在2006年推出的,在初期是閉源的。當OVM
    發(fā)表于 12-01 15:09

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

    ?uvm的特點以及uvm為用戶提供了哪些資源?什么是uvm呢?uvm是通用驗證方法學(xué)的縮寫,是為驗證服務(wù)的,uvm是基于systemveri
    發(fā)表于 01-21 16:00

    什么是uvm?uvm的特點有哪些呢

    大家好,我是一哥,上章內(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的個參數(shù)。  ID是作為message的標記(tag)?! SG就是真正要打印的message文本?! ERBOSITY用于傳遞uvm\_verbosity枚舉類型的數(shù)字。當
    發(fā)表于 03-17 16:41

    UVM之sequence/item見解 sequencer特性及應(yīng)用(下)

    _SEQ_ARB_WEIGHTED;UVM_SEQ_ARB_RANDOM ;UVM_SEQ_ARB_STRICT_FIFO等。出其中種需要特別區(qū)分外其它的模式可以滿足絕大多數(shù)的仲裁需求。
    的頭像 發(fā)表于 02-19 10:14 ?4762次閱讀
    談<b class='flag-5'>UVM</b>之sequence/item見解 sequencer特性及應(yīng)用(下)

    Modelsim uvm庫編譯及執(zhí)行

    第一句話是設(shè)置uvm環(huán)境變量,指定uvm的dpi位置。 第二句話是創(chuàng)建work工作目錄。 第句話是編譯源文件,并且通過-L指定幾個編譯庫。 第句是執(zhí)行仿真,調(diào)用
    的頭像 發(fā)表于 12-01 11:25 ?3806次閱讀
    Modelsim <b class='flag-5'>uvm</b>庫編譯及執(zhí)行

    計算機級嵌入式學(xué)習(xí)筆記

    計算機級嵌入式學(xué)習(xí)筆記)-- 嵌入式系統(tǒng)硬件組成
    發(fā)表于 10-20 16:06 ?14次下載
    計算機<b class='flag-5'>三</b>級嵌入式<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(<b class='flag-5'>三</b>)

    開關(guān)電源學(xué)習(xí)筆記 --- 目錄

    — Buck-Boost變換器的基本原理二.DC-DC變換器的電感設(shè)計開關(guān)電源學(xué)習(xí)筆記4 — DC-DC變換器的儲能電感設(shè)計之電磁學(xué)知識儲備開關(guān)電源學(xué)習(xí)筆記5 — DC-DC變換器的
    發(fā)表于 10-22 09:36 ?34次下載
    開關(guān)電源<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> --- 目錄

    STM32F103學(xué)習(xí)筆記 串口通信

    STM32F103學(xué)習(xí)筆記 串口通信
    發(fā)表于 11-25 09:06 ?71次下載
    STM32F103<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>三</b>   串口通信

    什么是UVM environment?

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

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

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

    UVMuvm_config_db機制背后的大功臣

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

    UVMuvm_config_db機制背后的大功臣

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

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

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