UVM的各種port(六)

2021-07-27 22:16:22 字數 3386 閱讀 6623

tlm:transaction level modeling

uvm中常見的port:

前6個定義引數就是port中的資料流型別,而後3個定義中引數則表示(request-response)中發起請求時傳輸的資料型別和返回的資料型別。

前6個定義引數就是port中的資料流型別,而後3個定義中引數則表示(request-response)中發起請求時傳輸的資料型別和返回的資料型別。

在前6個imp傳輸的資料型別中,第乙個t表示imp傳輸的資料型別。

傳輸表示方法:

uvm中各種port的連線

1、 使用connect建立連線關係

a.connect(b);

2、port與imp連線

在這三種埠中,port是最高優先順序,imp是最低優先順序。

現在要把a中的port和b中的imp連線起來,如圖:

則在a中需要這樣定義:

則在b中的定義為:

b中的imp中有兩個引數,第乙個引數是將要傳輸的transaction,第二個引數是實現介面的uvm_component。

當a和b中定義好後,則需要在c中將a_port和b_port連線起來。

export與imp的連線和port與imp連線完全一樣。

uvm中的analysis port和analysis export

他們與port和export的區別:

1、 預設情況下,analysis port(analysis export)可以連線多個imp,也就是說analysis port(analysis export)是一對多的通訊,而port和export是一對一通訊。

2、 port和export對應於有三種操作(get、put、transport_port),而analysis port(analysis export)則對應於一種操作write。write的意思是廣播一下,剩下的事情就與其他無關。

3、 port和export都有阻塞和非阻塞的區分。對於analysis port(analysis export)來說沒有相應的概念。

用analysis port實現monitor和scoreboard的通訊

在monitor中,我們定義如下:

class monitor extends uvm_monitor;

uvm_analysis_port#(mac_transaction) ap;

task main_phase(uvm_phase phase);

super.main_phase(phase);

mac_transaction tr;

…… ap.write(tr);

…. endtask

endclass

在scoreboard中,我們需要定義write的task,

class scoreboard extends uvm_scoreboard;

uvm_analysis_imp#(mac_transaction,scoreboard) scb_imp;

task write (mac_transaction tr);

//do something on tr

endtask

endclass

在agent中,定義analysis port,並把其指向monitor的ap;

class agent extends uvm_agent;

uvm_analysis_port#(mac_transaction) ap;

…… function void connect_phase(uvm_phase phase);

super.connect(phase);

this.ap = monitor.ap;

endfunction

endclass

在env中的定於:

function void env::connect_phase(uvm_phase);

super.connect(phase);

agent.ap.connect(scoreboard.scb_imp);

endfunction

當存在多個uvm_analysis_imp的情況

scoreboard要接收monitor和model的資料,則需要如下定義:

uvm_analysis_imp_decl(_monitor)

uvm_analysis_imp_decl(_model)

class scoreboard extends uvm_scoreboard;

uvm_analysis_imp_monitor#(mac_transaction,scoreboard) monitor_imp;

task write_monitor(mac_transaction tr);

//do something on tr

endtask

task write_model(mac_transaction tr);

//do something on tr

endtask

endclass

通過巨集uvm_analysis_imp_decl,宣告了兩個字尾_monitor和_model,uvm會根據這兩個字尾內建兩個新的imp

用fifo實現monitor和scoreboard的通訊

在scoreboard中定義:

在env裡面的定義:

UVM 關於UVM的路徑問題

3.5 config db機制 3.5.1 uvm中的路徑 在 清單2 3中已經介紹過,乙個component 如my driver 內通過get full name 函式可以得到此component的路徑 清單 3 91 function void my driver build phase su...

UVM驗證培訓 factory 實用的UVM機制

路科驗證官網 路科驗證 專注於數字晶元驗證的系統思想和前沿工程領域 eetop路科首頁 eetop 路科驗證 ic驗證培訓 csdn路科首頁 csdn 路科驗證 ic驗證培訓 uvm鼓勵工程師建立模組化 可復用的測試平台。uvm通過tlm介面,把乙個元件及其他與之相連的元件隔離開來,以此實現模組化。...

uvm類庫搜尋 UVM的類庫

乙個uvm驗證平台可以看成由多個模組組合在一起的,這和以前的verilog 以及verilog結合其它各種語言的驗證手段在理念上是一樣的,最大的不同就是這些模組不再是函式或者過程,而是乙個個物件,其實仔細想想如果想實現繼承,多型等等這些功能,類的概念勢必要引入的,這一點在學習systemverilo...