在UVM中,Testcase是一個(gè)類(lèi),它封裝了測(cè)試用例開(kāi)發(fā)者編寫(xiě)的特定激勵(lì)序列。
創(chuàng)建Base Test
下面首先開(kāi)發(fā)了一個(gè)Base Test。這個(gè)Base Test是所有基于ubus_example_env開(kāi)發(fā)的測(cè)試用例的一個(gè)起點(diǎn)。
base test的build_phase()創(chuàng)建了ubus_example_env。任何從ubus_example_base_test派生的Testcase都會(huì)繼承ubus_example_base_test中的所有定義,這意味著如果派生的Testcase調(diào) 用 super.build_phase() , 也會(huì)將構(gòu)建top-levelenvironment。
從Base Test基類(lèi)創(chuàng)建測(cè)試用例
測(cè)試用例編寫(xiě)者可以從Base Test派生出使用相同驗(yàn)證環(huán)境的測(cè)試用例。top-level environment是由Base Test的build_phase()創(chuàng)建的,派生測(cè)試用例可 以 對(duì)run_phase()做一些 調(diào) 整 ( 例 如,改變環(huán)境中執(zhí)行的 default sequence ) 。下 面 是一 個(gè)繼 承 自u(píng)bus_example_base_test 的簡(jiǎn)單測(cè)試用例。
這個(gè)測(cè) 試 用例改變了由masters[0] agent和slaves[0]agent執(zhí) 行 的default sequence。
通過(guò)基類(lèi)super.build_phase(),將創(chuàng)建驗(yàn)證環(huán)境ubus_example_env0以及它的所有驗(yàn)證子組件。因此,任何會(huì)影響這些驗(yàn)證組件構(gòu)建的配置(比如要?jiǎng)?chuàng)建多少個(gè)masters)都必須在調(diào)用super.build_phase()之前設(shè)置好。
對(duì)于這個(gè)例子,由于sequences要到后面的phase才開(kāi)始獲取,所以可以在調(diào)用super.build_phase()之后再調(diào)用uvm_config_db::set。
選擇測(cè)試用例
在定義了擴(kuò)展測(cè)試用例后,需要調(diào)用uvm_pkg::run_test()任務(wù)來(lái)選擇一個(gè)要執(zhí)行仿真的測(cè)試用例。它的原型是:
task run_test(string test_name="");
UVM支持通過(guò)兩種不同的機(jī)制指明要運(yùn)行的測(cè)試用例。
測(cè)試用例(即已經(jīng)向factory注冊(cè)的測(cè)試用例名稱(chēng))可以直接傳遞給run_test()任務(wù),也可以通過(guò)+UVM_TESTNAME在命令行中聲明。
如果兩種機(jī)制都使用,命令行優(yōu)先。一旦選擇了一個(gè)測(cè)試用例名稱(chēng),run_test()任務(wù)就會(huì)調(diào)用factory機(jī)制來(lái)創(chuàng)建一個(gè)測(cè)試用例的實(shí)例,實(shí)例名稱(chēng)為uvm_test_top。最后,run_test()通過(guò)執(zhí)行各個(gè)phase來(lái)啟動(dòng)測(cè)試。
下面的例子顯示了如何通過(guò)仿真器的命令行參數(shù)向run_test()任務(wù)提供類(lèi)型名為test_read_modify_write的測(cè)試。使用命令行參數(shù)可以避免在調(diào)用run_test()的任務(wù)中hardcode指定testcase名稱(chēng)。在一個(gè)initial語(yǔ)句中,調(diào)用run_test()如下:
// DUT, interfaces, and all non-UVM code initial uvm_pkg::run_test();
使用仿真器命令行選項(xiàng)選擇一個(gè)test_read_modify_write類(lèi)型的測(cè)試用例,使用以下命令:
% simulator-command other-options +UVM_TESTNAME=test_read_modify_write
如果提供給run_test()的測(cè)試用例名稱(chēng)不存在,仿真器將立即調(diào)用$fatal報(bào)錯(cuò)退出。如果發(fā)生這種情況,很可能是名字打錯(cuò)了或者是`uvm_component_utils宏沒(méi)有被使用注冊(cè)這個(gè)testcase。
通過(guò)使用這種方法,只改變+UVM_TESTNAME參數(shù),可以運(yùn)行多個(gè)測(cè)試,而不必重新編譯測(cè)試平臺(tái)。
??
審核編輯:劉清
-
仿真器
+關(guān)注
關(guān)注
14文章
1018瀏覽量
83771 -
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19182
原文標(biāo)題:創(chuàng)建UVM Testcase
文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論