UVM callback
如何改變driver的行爲?
(1)使用UVM的factory機制和override機制實現(過多的擴展可能會引起繼承關係層次出現混亂,應該從哪個類進行擴展?)
call back(回調)
-
function or task(回調函數)
-
在一個對象中使用,在另一個對象中定義
如何使用UVM callback
1、將UVM callback 方法內嵌入組件中
2、創建一個最基本的callback基類(virtual class)
3、從上一步創建的類中擴展出所需的callback類(子類對callback基類進行重載)
4、在頂層實例化並註冊callback對象
UVM Advanced sequence
- 其他sequence可以向sequence library註冊
- 可根據配置產生並執行已經在內部註冊過的sequence
- 具有多種內嵌的選擇sequence算法
- 支持用戶自定義sequence算法
向UVM sequence library 永久註冊sequence
臨時添加sequence到UVM sequence library
(在實際的testcase 中根據實際需求添加sequence到sequence library中)
在一個單獨的sequence library實例中添加sequence
同樣可以使用配置類的方法:
virtual sequence(virtual sequencer)
1、創建virtual sequencer的句柄
2、創建virtual sequence
3、在env中實例化virtual sequencer,並建立關聯關係
4、testcase中啓動virtual sequence
UVM寄存器抽象級(RAL)
register model 對DUT中的寄存器和存儲器進行建模,這樣可以在env實例化一個register model,scoreboard通過register model對寄存器和存儲器訪問
寄存器模型的構成:
1、register model
2、adapter
如何將寄存器模型嵌入測試平臺中:
1、爲DUT創建寄存器模型
之後將整體封裝至reg_model中
2、創建轉換器adapter
3、在env中實例化reference model和adapter
5、在需要進行寄存器讀寫的地方使用API訪問寄存器
RAL的另一種形式,通過monitor返回DUT的值