UVM(五)

UVM TLM(Transaction level modeling)
TLM爲組件之間的通信建立專門的通信信道,避免通信出現混亂
(例如reference model只能從master_agent的monitor獲取數據)
在這裏插入圖片描述
transaction事務的傳送分爲put(producer主動發起事務的傳輸)和get(consumer主動從producer獲取數據)其中使用port.put()函數(在consumer中定義),以及port.get()函數(在producer中定義)

常見的TLM port:
uvm_put_port #(T);//(port要傳輸的transaction的類型)
uvm_blocking_put_port#(T);
uvm_unblocking_put_port#(T);
uvm_get_port#(T);

put()//put()是一個task,可能會阻塞當前進程直到transaction傳輸成功
try_put()//try_put()是一個function,不會阻塞當前進程,不管transaction是否完成傳輸都會立刻返回
can_put()//can_put()是一個function,不會阻塞當前進程,不會發生transaction傳輸,只是檢查對方是否準備好接受
get()//get()是一個task,會阻塞當前進程直到成功獲取了一個transaction之後返回
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
由於實現操作的方法在import中定義,所以不能將port->export而沒有import
在這裏插入圖片描述
在這裏插入圖片描述
一、put模式的代碼使用方法
在這裏插入圖片描述
reference_model擴展於uvm_component基類;由於reference_model是接收方,需要在其中定義import端口;之後實例化需要構造的對象;

在這裏插入圖片描述
在agent中加入export;連接reference_model和monitor
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
二、get模式的使用方法
在這裏插入圖片描述
在這裏插入圖片描述
monitor將需要發送的事務存放至fifo中,一旦有get函數的調用,立即將事務發送給reference_model
在這裏插入圖片描述
在這裏插入圖片描述
三、FIFO模式的使用方法
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
UVM analysis component

  • reference model(模擬DUT的行爲,並根據輸入計算出相應輸出的組件)
  • scoreboard(將DUT的輸出與從參考模型獲取的期望值相對比,判斷DUT是否正常工作的組件)
    在這裏插入圖片描述
    1、構建slave agent中的monitor
    在這裏插入圖片描述
    使用interface將monitor與DUT相連接,在run phase中,實現monitor對DUT的檢測功能,並將事務打包給scoreboard
    在這裏插入圖片描述
    在這裏插入圖片描述
    2、將monitor放入agent當中,構建agent
    在這裏插入圖片描述
    3、創建scoreboard
    在這裏插入圖片描述
    4、爲reference_model創建一個端口
    在這裏插入圖片描述
    5、創建兩個FIFO,將組件與FIFO連接起來
    在這裏插入圖片描述
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章