(1)PORT 和 EXPORT 體現(xiàn)的是一種控制流,在這種控制流中熙尉,PORT 具有高優(yōu)先級(jí)锨推,而EXPORT 具有低優(yōu)先級(jí)谭贪,只有高優(yōu)先級(jí)的端口才能向低優(yōu)先級(jí)的端口發(fā)起三種操作:put, get, transport慨削。
(2)在UVM中,只有 IMP 才能作為連接關(guān)系的終點(diǎn)浆熔。如果是 PORT 或者 EXPORT 作為終點(diǎn)叶骨, 則會(huì)報(bào)錯(cuò)跪帝。
(3)UVM還有兩種特殊的端口:analysis_port 和 analysis_export伞剑。
? ? ? ? ? ? ? ? (a) 默認(rèn)情況下赖钞,一個(gè)analysis_port (analysis_export) 可以連接多個(gè)IMP。
? ? ? ? ? ? ? ? (b) put和get系列端口都有阻塞和非阻塞的區(qū)分镣陕,但是analysis_port和analysis_export沒有阻塞和非阻塞的概念鹊碍,因?yàn)樗旧砭褪菑V播,不必等待與其相連的其他端口的相應(yīng)楼眷,所以不存在阻塞和非阻塞罐柳。
? ? ? ? ? ? ? ? (c) 一個(gè)analysis_port相連的IMP的類型必須是uvm_analysis_imp芦拿,否則會(huì)報(bào)錯(cuò)蔗崎。
? ? ? ? ? ? ? ? (d) 對(duì)于analysis_port和analysis_export來說,只有一種操作:write冬耿。
(4)宏 uvm_analysis_imp_decl 用來解決一個(gè)component內(nèi)有多個(gè)IMP的問題:
? ? ? ? ? ? ? ? `uvm_analysis_imp_decl(_monitor)
? ? ? ? ? ? ? ? `uvm_analysis_imp_decl(_model)
(5)使用FIFO通信
? ? ? ? ? ? ? ? uvm_tlm_analysis_fifo #(my_transaction) agt_mdl_fifo;
? ? ? ? ? ? ? ? i_agt.ap.connect(agt_mdl_fifo.analysis_export);
? ? ? ? ? ? ? ? mdl.port.connect(agt_mdl_fifo.blocking_get_export);
? ? ? ? ? ? ? ? FIFO中有兩個(gè) IMP 和一塊緩存日月。FIFO中的 analysis_export 和 blocking_get_export 雖然名字中有關(guān)鍵字 export精拟,但是其類型卻是 IMP串前。UVM為了掩飾 IMP 的存在,在它們的命名中加入了 export 關(guān)鍵字哆姻。
? ? ? ? ? ? ? ? 上圖所有以圓圈表示的EXPORT本質(zhì)上都是IMP。
? ? ? ? ? ? ? ? used 函數(shù)用于查詢FIFO緩存中有多少transaction。
? ? ? ? ? ? ? ? is_empty 函數(shù)用于判斷當(dāng)前FIFO緩存是否為空蟹地。與is_empty對(duì)應(yīng)的是is_full。
? ? ? ? ? ? ? ? flush 函數(shù)用于清空FIFO緩存中的所有數(shù)據(jù)纫雁。