本文移植於tutortecho 2020年6月6日 撰寫
這一章節提到了許多 uvm_component 與 uvm_object 的差異
並且提到使用 uvm_component 來建構整個驗證環境的設計理念
- uvm_component 比 uvm_object 多了兩個 attribute,一是 new 時的 parent 參數,二是自動執行的 phase
- uvm_driver 比 uvm_component 多了uvm_seq_item_pull_port seq_item_port, uvm_analysis_port rsp_port通道物件,以兩宣告兩個 uvm_sequence_item req 和 rsp物件
- uvm_agent 比 uvm_component 多了 is_active enum member來切換此 agent 是否需要 driver
- uvm_object 的 clone method 無法用在 uvm_component ,因 parent 無法指定
- uvm_component instantiate 時一定要給 parent 的原因是要設定 parent 內部的m_children pointer ,因此才能夠在compile時檢查此 component 是否有這個 member
- uvm component 是使用 tree data structure ,如第五點,每個 node 都儲存children’s pointers
- 如果 uvm_component 的 parent 被設成 NULL,則此 component 將會被設成 uvm_top (uvm_root),這種方式可以保證整個平台只有一個 tree,所以 UVM 在產生整個環境時會使用一個 uvm_top instance 來當作 uvm_test 的 parent
發表留言