在UVM中,Testcase是一個類,它封裝了測試用例開發(fā)者編寫的特定激勵序列。
創(chuàng)建Base Test
下面首先開發(fā)了一個Base Test。這個Base Test是所有基于ubus_example_env開發(fā)的測試用例的一個起點。
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 的簡單測試用例。
這個測 試 用例改變了由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()之前設置好。
對于這個例子,由于sequences要到后面的phase才開始獲取,所以可以在調(diào)用super.build_phase()之后再調(diào)用uvm_config_db::set。
選擇測試用例
在定義了擴展測試用例后,需要調(diào)用uvm_pkg::run_test()任務來選擇一個要執(zhí)行仿真的測試用例。它的原型是:
task run_test(string test_name="");
UVM支持通過兩種不同的機制指明要運行的測試用例。
測試用例(即已經(jīng)向factory注冊的測試用例名稱)可以直接傳遞給run_test()任務,也可以通過+UVM_TESTNAME在命令行中聲明。
如果兩種機制都使用,命令行優(yōu)先。一旦選擇了一個測試用例名稱,run_test()任務就會調(diào)用factory機制來創(chuàng)建一個測試用例的實例,實例名稱為uvm_test_top。最后,run_test()通過執(zhí)行各個phase來啟動測試。
下面的例子顯示了如何通過仿真器的命令行參數(shù)向run_test()任務提供類型名為test_read_modify_write的測試。使用命令行參數(shù)可以避免在調(diào)用run_test()的任務中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ù),可以運行多個測試,而不必重新編譯測試平臺。
??
審核編輯:劉清
-
仿真器
+關(guān)注
關(guān)注
14文章
1018瀏覽量
83752 -
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19171
原文標題:創(chuàng)建UVM Testcase
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論