當前位置:首頁 > 公眾號精選 > 芯片驗證工程師
[導讀]一個UVMtestbench是由從uvm_component基類擴展出來的對象構(gòu)建的。當創(chuàng)建一個uvm_component對象時,它將成為testbench層次結(jié)構(gòu)的一部分,并在仿真期間保持不變。與此不同的是,uvmsequence類層次結(jié)構(gòu)分支中的對象是短暫的,即在仿真過程中它...

一個UVM testbench是由從uvm_component基類擴展出來的對象構(gòu)建的。當創(chuàng)建一個uvm_component對象時,它將成為testbench 層次結(jié)構(gòu)的一部分,并在仿真期間保持不變。


與此不同的是,uvm sequence 類層次結(jié)構(gòu)分支中的對象是短暫的,即在仿真過程中它們會被創(chuàng)建,使用,然后內(nèi)存回收。



uvm_component靜態(tài)層次結(jié)構(gòu)由一個鏈表表示,該鏈表在創(chuàng)建每個組件時構(gòu)建,層次結(jié)構(gòu)中的組件位置由傳遞給其create 方法的參數(shù)決定。


例如,在spi_env中創(chuàng)建一個apb_agent組件,那么到apb_agent的層次結(jié)構(gòu)路徑將是“uvm_test_top.m_env.m_apb_agent”。

class?spi_env?extends?uvm_env;apb_agent?m_apb_agent;function void build_phase(uvm_phase phase);m_apb_agent = apb_agent::type_id::create("m_apb_agent", this);endfunction: build_phaseendclass: spi_envuvm_component類繼承自uvm_report_object,其中包含支持UVM消息傳遞所需的功能,將組件的路徑添加到report字符串信息中。


uvm_component基類針對每個UVM Phases都有一個虛擬方法,這些方法會根據(jù)需要重載,如果沒有實現(xiàn)相應phase的虛擬方法,那么該組件就不參與該phase。


為了提供testbench 組件構(gòu)建和配置的靈活性,可以將uvm_components注冊到UVM factory中,其可以支持將該組件替換為派生類型。


UVM package 包含了很多對uvm_component的擴展,但是這些擴展大多非常薄,可能僅僅只是代表不同的組件類型。下表總結(jié)了一些uvm_component派生類。

本站聲明: 本文章由作者或相關機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關閉
關閉