概述UVM驗(yàn)證環(huán)境中的Component
時(shí)間:2021-11-05 13:44:31
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]一個(gè)UVMtestbench是由從uvm_component基類(lèi)擴(kuò)展出來(lái)的對(duì)象構(gòu)建的。當(dāng)創(chuàng)建一個(gè)uvm_component對(duì)象時(shí),它將成為testbench層次結(jié)構(gòu)的一部分,并在仿真期間保持不變。與此不同的是,uvmsequence類(lèi)層次結(jié)構(gòu)分支中的對(duì)象是短暫的,即在仿真過(guò)程中它...
一個(gè)UVM testbench是由從uvm_component基類(lèi)擴(kuò)展出來(lái)的對(duì)象構(gòu)建的。當(dāng)創(chuàng)建一個(gè)uvm_component對(duì)象時(shí),它將成為testbench 層次結(jié)構(gòu)的一部分,并在仿真期間保持不變。
與此不同的是,uvm sequence 類(lèi)層次結(jié)構(gòu)分支中的對(duì)象是短暫的,即在仿真過(guò)程中它們會(huì)被創(chuàng)建,使用,然后內(nèi)存回收。
uvm_component靜態(tài)層次結(jié)構(gòu)由一個(gè)鏈表表示,該鏈表在創(chuàng)建每個(gè)組件時(shí)構(gòu)建,層次結(jié)構(gòu)中的組件位置由傳遞給其create 方法的參數(shù)決定。
例如,在spi_env中創(chuàng)建一個(gè)apb_agent組件,那么到apb_agent的層次結(jié)構(gòu)路徑將是“uvm_test_top.m_env.m_apb_agent”。
uvm_component基類(lèi)針對(duì)每個(gè)UVM Phases都有一個(gè)虛擬方法,這些方法會(huì)根據(jù)需要重載,如果沒(méi)有實(shí)現(xiàn)相應(yīng)phase的虛擬方法,那么該組件就不參與該phase。
為了提供testbench 組件構(gòu)建和配置的靈活性,可以將uvm_components注冊(cè)到UVM factory中,其可以支持將該組件替換為派生類(lèi)型。
UVM package 包含了很多對(duì)uvm_component的擴(kuò)展,但是這些擴(kuò)展大多非常薄,可能僅僅只是代表不同的組件類(lèi)型。下表總結(jié)了一些uvm_component派生類(lèi)。
與此不同的是,uvm sequence 類(lèi)層次結(jié)構(gòu)分支中的對(duì)象是短暫的,即在仿真過(guò)程中它們會(huì)被創(chuàng)建,使用,然后內(nèi)存回收。
uvm_component靜態(tài)層次結(jié)構(gòu)由一個(gè)鏈表表示,該鏈表在創(chuàng)建每個(gè)組件時(shí)構(gòu)建,層次結(jié)構(gòu)中的組件位置由傳遞給其create 方法的參數(shù)決定。
例如,在spi_env中創(chuàng)建一個(gè)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類(lèi)繼承自u(píng)vm_report_object,其中包含支持UVM消息傳遞所需的功能,可將組件的路徑添加到report字符串信息中。uvm_component基類(lèi)針對(duì)每個(gè)UVM Phases都有一個(gè)虛擬方法,這些方法會(huì)根據(jù)需要重載,如果沒(méi)有實(shí)現(xiàn)相應(yīng)phase的虛擬方法,那么該組件就不參與該phase。
為了提供testbench 組件構(gòu)建和配置的靈活性,可以將uvm_components注冊(cè)到UVM factory中,其可以支持將該組件替換為派生類(lèi)型。
UVM package 包含了很多對(duì)uvm_component的擴(kuò)展,但是這些擴(kuò)展大多非常薄,可能僅僅只是代表不同的組件類(lèi)型。下表總結(jié)了一些uvm_component派生類(lèi)。





