層次化UVM驗(yàn)證環(huán)境中配置
時(shí)間:2021-11-05 13:44:31
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]配置對(duì)象可以通過使用uvm_config_db::set方法中的路徑參數(shù)來分別控制,更常見的做法是層次化配置對(duì)象和配置過程。這樣中間驗(yàn)證組件也可以進(jìn)行一些配置,即在中間組件中對(duì)上層的配置對(duì)象進(jìn)行解析,然后再打包相應(yīng)的配置對(duì)象給下層組件。?下面是一個(gè)SPIblocklevel驗(yàn)證環(huán)...
配置對(duì)象可以通過使用uvm_config_db::set方法中的路徑參數(shù)來分別控制,更常見的做法是層次化配置對(duì)象和配置過程。
這樣中間驗(yàn)證組件也可以進(jìn)行一些配置,即在中間組件中對(duì)上層的配置對(duì)象進(jìn)行解析,然后再打包相應(yīng)的配置對(duì)象給下層組件。?下面是一個(gè)SPI block level驗(yàn)證環(huán)境的一個(gè)層次化配置案例,其中每一個(gè)agent都有一個(gè)單獨(dú)的配置對(duì)象。?
envs配置對(duì)象中針對(duì)每一個(gè)agent都有一個(gè)配置對(duì)象的句柄。在test case中構(gòu)建和配置env配置對(duì)象,然后將實(shí)際的agent配置對(duì)象賦值給env配置對(duì)象內(nèi)的句柄。
在上述的配置中,spi_env的配置對(duì)象包含針對(duì)SPI?agent和APB?agent配置對(duì)象的句柄,這允許使用env配置對(duì)象將所有agent配置對(duì)象傳遞下去。這種“俄羅斯套娃”式的配置方式非常適合擴(kuò)展到多個(gè)層次,但是如果不考慮驗(yàn)證環(huán)境的多層次復(fù)用就無需這樣做了
這樣中間驗(yàn)證組件也可以進(jìn)行一些配置,即在中間組件中對(duì)上層的配置對(duì)象進(jìn)行解析,然后再打包相應(yīng)的配置對(duì)象給下層組件。?下面是一個(gè)SPI block level驗(yàn)證環(huán)境的一個(gè)層次化配置案例,其中每一個(gè)agent都有一個(gè)單獨(dú)的配置對(duì)象。?
envs配置對(duì)象中針對(duì)每一個(gè)agent都有一個(gè)配置對(duì)象的句柄。在test case中構(gòu)建和配置env配置對(duì)象,然后將實(shí)際的agent配置對(duì)象賦值給env配置對(duì)象內(nèi)的句柄。
class spi_env_config extends uvm_object;
`uvm_object_utils(spi_env_config)
bit has_functional_coverage = 1;
bit has_reg_scoreboard = 0;
bit has_spi_scoreboard = 1;
// Configurations for the sub_components
apb_config m_apb_agent_cfg;
spi_agent_config m_spi_agent_cfg;
extern function new(string name = "spi_env_config");
endclass: spi_env_config
function spi_env_config::new(string name = "spi_env_config");
super.new(name);
endfunction
function void spi_test_base::build_phase( uvm_phase phase );
m_env_cfg = spi_env_config::type_id::create("m_env_cfg");
m_apb_cfg = apb_agent_config::type_id::create("m_apb_cfg");
m_env_cfg.m_apb_agent_cfg = m_apb_cfg;
m_spi_cfg = spi_agent_config::type_id::create("m_spi_cfg");
m_env_cfg.m_spi_agent_cfg?=?m_spi_cfg;
endfunction: build_phase
整個(gè)配置過程對(duì)于所有測(cè)試用例都是一樣的,所以通常會(huì)先創(chuàng)建一個(gè)base test,然后基于此基類擴(kuò)展出其他的測(cè)試用例。在上述的配置中,spi_env的配置對(duì)象包含針對(duì)SPI?agent和APB?agent配置對(duì)象的句柄,這允許使用env配置對(duì)象將所有agent配置對(duì)象傳遞下去。這種“俄羅斯套娃”式的配置方式非常適合擴(kuò)展到多個(gè)層次,但是如果不考慮驗(yàn)證環(huán)境的多層次復(fù)用就無需這樣做了