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

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

3天內不再提示

創(chuàng)建UVM Testcase的步驟

芯片驗證工程師 ? 來源:芯片驗證工程師 ? 2023-06-15 09:41 ? 次閱讀

在UVM中,Testcase是一個類,它封裝了測試用例開發(fā)者編寫的特定激勵序列。

創(chuàng)建Base Test

下面首先開發(fā)了一個Base Test。這個Base Test是所有基于ubus_example_env開發(fā)的測試用例的一個起點。

108a8c2e-0ace-11ee-962d-dac502259ad0.png

base test的build_phase()創(chuàng)建了ubus_example_env。任何從ubus_example_base_test派生的Testcase都會繼承ubus_example_base_test中的所有定義,這意味著如果派生的Testcase調 用 super.build_phase() , 也會將構建top-levelenvironment。

Base Test基類創(chuàng)建測試用例

測試用例編寫者可以從Base Test派生出使用相同驗證環(huán)境的測試用例。top-level environment是由Base Test的build_phase()創(chuàng)建的,派生測試用例可 以 對run_phase()做一些 調 整 ( 例 如,改變環(huán)境中執(zhí)行的 default sequence ) 。下 面 是一 個繼 承 自ubus_example_base_test 的簡單測試用例。

10b0acc4-0ace-11ee-962d-dac502259ad0.png

這個測 試 用例改變了由masters[0] agent和slaves[0]agent執(zhí) 行 的default sequence。

通過基類super.build_phase(),將創(chuàng)建驗證環(huán)境ubus_example_env0以及它的所有驗證子組件。因此,任何會影響這些驗證組件構建的配置(比如要創(chuàng)建多少個masters)都必須在調用super.build_phase()之前設置好。

對于這個例子,由于sequences要到后面的phase才開始獲取,所以可以在調用super.build_phase()之后再調用uvm_config_db::set。

選擇測試用例

在定義了擴展測試用例后,需要調用uvm_pkg::run_test()任務來選擇一個要執(zhí)行仿真的測試用例。它的原型是:

task run_test(string test_name="");

UVM支持通過兩種不同的機制指明要運行的測試用例。

測試用例(即已經向factory注冊的測試用例名稱)可以直接傳遞給run_test()任務,也可以通過+UVM_TESTNAME在命令行中聲明。

如果兩種機制都使用,命令行優(yōu)先。一旦選擇了一個測試用例名稱,run_test()任務就會調用factory機制來創(chuàng)建一個測試用例的實例,實例名稱為uvm_test_top。最后,run_test()通過執(zhí)行各個phase來啟動測試。

下面的例子顯示了如何通過仿真器的命令行參數(shù)向run_test()任務提供類型名為test_read_modify_write的測試。使用命令行參數(shù)可以避免在調用run_test()的任務中hardcode指定testcase名稱。在一個initial語句中,調用run_test()如下:

// DUT, interfaces, and all non-UVM code
initial
uvm_pkg::run_test();

使用仿真器命令行選項選擇一個test_read_modify_write類型的測試用例,使用以下命令:

% simulator-command other-options +UVM_TESTNAME=test_read_modify_write

如果提供給run_test()的測試用例名稱不存在,仿真器將立即調用$fatal報錯退出。如果發(fā)生這種情況,很可能是名字打錯了或者是`uvm_component_utils宏沒有被使用注冊這個testcase。

通過使用這種方法,只改變+UVM_TESTNAME參數(shù),可以運行多個測試,而不必重新編譯測試平臺。

??


審核編輯:劉清

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

    關注

    14

    文章

    1008

    瀏覽量

    83439
  • UVM
    UVM
    +關注

    關注

    0

    文章

    181

    瀏覽量

    19087

原文標題:創(chuàng)建UVM Testcase

文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    數(shù)字IC驗證之“構成uvm測試平臺的主要組件”(4)連載中...

    擴展于uvm component。下面的類都是以它為基類擴展而來的?! ?b class='flag-5'>uvm test,對應著testcase測試案例,驗證工程師的測試案例都是從這個基類擴展而來?! ?b class='flag-5'>uvm env
    發(fā)表于 01-22 15:33

    UVM代碼如何把testcase與driver分開

    UVM代碼如何把testcase與driver分開
    發(fā)表于 03-11 07:58

    什么是uvmuvm的特點有哪些呢

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

    談談UVM中的uvm_info打印

    , this);  endfunction  m_rh是uvm_report_handler class類型的。在1個基于uvm_report_object繼承過來的class在new的時候,會自動創(chuàng)建出m_rh
    發(fā)表于 03-17 16:41

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

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

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

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

    allegro與PADS的區(qū)別及創(chuàng)建PCB封裝的步驟

    allegro與PADS的區(qū)別及創(chuàng)建PCB封裝的步驟
    發(fā)表于 03-27 10:56 ?66次下載
    allegro與PADS的區(qū)別及<b class='flag-5'>創(chuàng)建</b>PCB封裝的<b class='flag-5'>步驟</b>

    多負載電源解決方案的創(chuàng)建步驟

    多負載電源解決方案的創(chuàng)建步驟
    發(fā)表于 05-28 10:03 ?14次下載

    典型的UVM Testbench架構

    UVM類庫提供了通用的代碼功能,如component hierarchy、transaction level model(TLM),configuration database等等,使用戶能夠創(chuàng)建任何類型的Testbench架構。
    的頭像 發(fā)表于 05-22 10:14 ?1860次閱讀
    典型的<b class='flag-5'>UVM</b> Testbench架構

    UVM學習筆記(一)

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

    創(chuàng)建UVM Driver的步驟

    Driver的作用是從sequencer中獲得數(shù)據(jù)項,按照接口協(xié)議將數(shù)據(jù)項驅動到總線上。
    的頭像 發(fā)表于 05-30 09:22 ?889次閱讀
    <b class='flag-5'>創(chuàng)建</b><b class='flag-5'>UVM</b> Driver的<b class='flag-5'>步驟</b>

    創(chuàng)建UVM Driver

    Driver的作用是從sequencer中獲得數(shù)據(jù)項,按照接口協(xié)議將數(shù)據(jù)項驅動到總線上。UVM類庫提供了uvm_driver基類,所有的Driver類都應該直接或間接地從該類中擴展出來。Driver有一個TLM port,通過它與sequencer進行通信。
    的頭像 發(fā)表于 05-30 16:17 ?697次閱讀
    <b class='flag-5'>創(chuàng)建</b><b class='flag-5'>UVM</b> Driver

    UVM中的uvm_do宏簡析

    uvm_do宏及其變體提供了創(chuàng)建、隨機化和發(fā)送transaction items或者sequence的方法。
    的頭像 發(fā)表于 06-09 09:36 ?4472次閱讀
    <b class='flag-5'>UVM</b>中的<b class='flag-5'>uvm</b>_do宏簡析

    我的第三個UVM代碼—把testcase與driver分開

    testcase里驅動interface,當代碼越來越多,需要考慮把環(huán)境拆分成多個小的環(huán)境,便于修改和維護。
    的頭像 發(fā)表于 06-15 10:54 ?567次閱讀
    我的第三個<b class='flag-5'>UVM</b>代碼—把<b class='flag-5'>testcase</b>與driver分開