1-uvm_root, uvm_top, uvm_test_top


參考資料

(1) UVM使用雙頂層的用法 | 駿的世界 (lujun.org.cn)

1.UVM的根-uvm_root or uvm_test_top?

(1) uvm_test_top實例化時的名字是uvm_test_top,這個名字是由UVMrun_test時自動指定的;

(2) uvm_top的名字是_top_,但是在顯示路徑時,並不會顯示這個名字,而只顯示從uvm_test_top開始的路徑;

2. uvm_root()

(1) uvm_root本質是uvm_component;

(2) uvm_root的存在是為了保證驗證平台只有一棵樹(uvm_root是單實例類,整個UVM驗證平台中,有且只有uvm_root的一個實例存在),並且發揮着phase controller的作用,管理所有componentphase.

(3) 任何沒有指定parentcomponent,默認其parentuvm_top(全局變量, uvm_root的一個實例).

(4) uvm_component的兩大機制(樹形組織結構和phase機制)都離不開uvm_root;

3. uvm_top(uvm_root類的句柄)及常用函數

(1) UVM中真正的樹根,任何組件實例都在它之下(如果組件的parent為null,那么該組件為uvm_top的子組件);

(2) uvm_top是一個全局變量,uvm_root的一個實例,也是uvm_root唯一的實例.

(3) uvm_top的名字是_top_,但是在顯示路徑時,並不會顯示這個名字,而只顯示從uvm_test_top開始的路徑.

(4) uvm_top.find及示例;

uvm_component comp;

comp=uvm_top.find(“*.axi_agt”);

注1:其中*表示匹配任意字符;?表示匹配一個字符;+表示匹配一個或多個字符;

(5) uvm_top.find_all及示例;
uvm_component comps[$];

uvm_top.find_all("*.axi_?",comps);

foreach(comps[i]) begin

  comps[i].print();

end

4. uvm_test_top

(1) 通過run_test語句創建的實例的名字為uvm_test_top.無論傳遞給run_test的參數是什么,創建的實例的名字都為uvm_test_top.

(2) uvm_test_topparentuvm_top,uvm_topparentnull.

(3) UVM,支持uvm_top下有多個葉子節點,但是,多個葉子節點不能都叫uvm_test_top,如下所示.

5.uvm雙頂層

詳見UVM使用雙頂層的用法 | 駿的世界 (lujun.org.cn);

問題:雙頂層中的另外一個頂層是怎么跑起來的?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM