UVM(六)

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的值
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章