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

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

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

創(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調(diào) 用 super.build_phase() , 也會將構(gòu)建top-levelenvironment。

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

測試用例編寫者可以從Base Test派生出使用相同驗證環(huán)境的測試用例。top-level environment是由Base Test的build_phase()創(chuàng)建的,派生測試用例可 以 對run_phase()做一些 調(diào) 整 ( 例 如,改變環(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以及它的所有驗證子組件。因此,任何會影響這些驗證組件構(gòu)建的配置(比如要創(chuàng)建多少個masters)都必須在調(diào)用super.build_phase()之前設(shè)置好。

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

選擇測試用例

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

task run_test(string test_name="");

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

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

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

下面的例子顯示了如何通過仿真器的命令行參數(shù)向run_test()任務(wù)提供類型名為test_read_modify_write的測試。使用命令行參數(shù)可以避免在調(diào)用run_test()的任務(wù)中hardcode指定testcase名稱。在一個initial語句中,調(diào)用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()的測試用例名稱不存在,仿真器將立即調(diào)用$fatal報錯退出。如果發(fā)生這種情況,很可能是名字打錯了或者是`uvm_component_utils宏沒有被使用注冊這個testcase。

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

??


審核編輯:劉清

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

    關(guān)注

    14

    文章

    1011

    瀏覽量

    83553
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    181

    瀏覽量

    19111

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    UVM代碼如何把testcase與driver分開

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

    什么是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打印

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

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

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

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

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

    典型的UVM Testbench架構(gòu)

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

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

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

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

    Driver的作用是從sequencer中獲得數(shù)據(jù)項,按照接口協(xié)議將數(shù)據(jù)項驅(qū)動到總線上。
    的頭像 發(fā)表于 05-30 09:22 ?935次閱讀
    <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ù)項驅(qū)動到總線上。UVM類庫提供了uvm_driver基類,所有的Driver類都應(yīng)該直接或間接地從該類中擴展出來。Driver有一個TLM port,通過它與sequencer進行通信。
    的頭像 發(fā)表于 05-30 16:17 ?744次閱讀
    <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 ?4631次閱讀
    <b class='flag-5'>UVM</b>中的<b class='flag-5'>uvm</b>_do宏簡析

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

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

    Testcase在芯片驗證中的作用

    隨著半導(dǎo)體技術(shù)的快速發(fā)展,集成電路芯片的復(fù)雜度日益增加,芯片設(shè)計中的驗證工作變得越來越重要。驗證的目的是確保芯片在各種工況下的功能正確性和性能穩(wěn)定性。在這個過程中,testcase(測試用例)扮演著關(guān)鍵角色。本文將簡要介紹 testcase 的基本概念、設(shè)計方法和在芯片驗
    的頭像 發(fā)表于 09-09 09:32 ?1114次閱讀