當(dāng)前位置:首頁 > 公眾號(hào)精選 > 芯片驗(yàn)證工程師
[導(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)的句柄。


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ù)用就無需這樣做了


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