驗證環(huán)境用戶需要創(chuàng)建許多測試用例來驗證一個DUT的功能是否正確,驗證環(huán)境開發(fā)者應該通過以下方式提高測試用例的開發(fā)效率:
在數(shù)據(jù)項類中加入旋鈕,以簡化測試用例開發(fā)控制
創(chuàng)建一些可重用的sequences library。
聲明自定義的Sequences
Sequences是由幾個數(shù)據(jù)項組成的,它們共同構成一個數(shù)據(jù)pattern以觸發(fā)有趣的DUT場景。
驗證組件可以包括一個基本sequences library(而不是單一的數(shù)據(jù)項),測試用例編寫者(驗證環(huán)境使用者)可以調用它。這種方法加強了對常見數(shù)據(jù)pattern的復用,并減少了測試用例的代碼長度。此外,一個Sequences可以調用其他Sequences,從而創(chuàng)造更復雜的場景。
UVM類庫提供了uvm_sequence基類。你應該直接或間接地從這個類派生出所有的Sequences類。要創(chuàng)建一個用戶定義的Sequences:
從uvm_sequence基類派生出一個Sequences,并指定request和response數(shù)據(jù)項類型參數(shù)。在下面的例子中,只指定了request類型,即simple_item,所以response數(shù)據(jù)項類型也是simple_item 。
使用`uvm_object_utils宏來向factory注冊Sequences類型。
如果Sequences需要訪問其相關sequencer,使用'uvm_declare_p_sequencer宏來聲明sequencer指針。
實現(xiàn)Sequences的body任務來觸發(fā)特定的DUT場景。在body任務中,你可以發(fā)送數(shù)據(jù)項或者調用其他Sequences。
下面例子中的simple_seq_do類定義了一個簡單的Sequences。它是由uvm_sequence派生出來的,并 使 用 了 `uvm_object_utils 宏 。這個例子還定義了一個simple_sequencer類,simple_seq_do序列可以在該simple_sequencer上運行。
發(fā)送Sequence Items或者Subsequences的基本流程
要 發(fā) 送 一 個sequence item,sequence的body()任務 需 要create() 該 sequence item , 對 該sequence item調 用start_item(),然后隨機化該sequence item(可選的),最后對該sequence item調用finish_item()。
要發(fā)送一個subsequence,parent sequence的body()任務需要create該subsequence,對其進行隨機化(可選的),最后對該subsequence調用start()。如果subsequence有一個相應的response,parent sequence可以調用get_response()。
上圖顯示了在uvm_do宏中實現(xiàn)的發(fā)送sequence items和sequences的完整流程。uvm_do宏會更根據(jù)傳遞的類型create一個對象,并且根據(jù)發(fā)送sequence items和sequences執(zhí)行對應的流程。
uvm_do宏不會執(zhí)行subsequences的pre_body()和post_body()方法。
?
審核編輯:劉清
-
UVM
+關注
關注
0文章
182瀏覽量
19228 -
DUT
+關注
關注
0文章
189瀏覽量
12490 -
sequence
+關注
關注
0文章
23瀏覽量
2862
原文標題:基于UVM驗證環(huán)境開發(fā)測試用例
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論