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