2014-01-30 58 views

回答

5

這不是分析端口連接的UVM要求。但是,某些UVM組件在其分析端口未連接時無法正常工作。

對於這些情況,我推薦end_of_elaboration_phase期間檢查分析進口連接:

`CHECK_PORT_CONNECTION(my_analysis_imp) 

當上述宏像定義:

`define CHECK_PORT_CONNECTION(PORT) \ 
    begin \ 
    uvm_port_list list; \ 
    PORT.get_provided_to(list); \ 
    if (!list.size()) begin \ 
     `uvm_fatal("AP_CONNECT", \ 
     $sformatf("Analysis port %s not connected.", PORT.get_full_name())); \ 
    end \ 
    end 

與一個連接端口和一個完整的工作例子未連接:http://www.edaplayground.com/x/2YG

1

感謝Victor舉例說明。我不知道你給的邏輯。 這個例子中有一個小問題,Victor給出了uvm_analysis_imp聲明。多個分析實現應該使用宏uvm_analysis_imp_decl。 請參閱下面的鏈接瞭解更正的示例。 http://www.edaplayground.com/x/3qx

注:發帖的答案,因爲我不能發表評論:(

+1

是的,你應該使用'uvm_analysis_impl_decl'是正確的:)我最初使用了它們,但是爲了使示例更簡單,我刪除了它們。我會將它們添加回來。 –

1

我認爲,這應該是不必要的,因爲這種檢查已經在uvm_port_base :: resolve_bindings但是,我相信,有一個bug存在。這個錯誤是因爲一個imp大小()沒有報告綁定到imp的端口的數量,所以如果3個端口綁定到imp,那麼大小報告1,即使端口列表正確大小爲3。