当前位置:首页 > > 芯片验证工程师
[导读]配置对象可以通过使用uvm_config_db::set方法中的路径参数来分别控制,更常见的做法是层次化配置对象和配置过程。这样中间验证组件也可以进行一些配置,即在中间组件中对上层的配置对象进行解析,然后再打包相应的配置对象给下层组件。 下面是一个SPIblocklevel验证环...

配置对象可以通过使用uvm_config_db::set方法中的路径参数来分别控制,更常见的做法是层次化配置对象和配置过程


这样中间验证组件也可以进行一些配置,即在中间组件中对上层的配置对象进行解析,然后再打包相应的配置对象给下层组件。

 

下面是一个SPI block level验证环境的一个层次化配置案例,其中每一个agent都有一个单独的配置对象。

 


envs配置对象中针对每一个agent都有一个配置对象的句柄。在test case中构建和配置env配置对象,然后将实际的agent配置对象赋值给env配置对象内的句柄。


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


整个配置过程对于所有测试用例都是一样的,所以通常会先创建一个base test,然后基于此基类扩展出其他的测试用例。


在上述的配置中,spi_env的配置对象包含针对SPI agent和APB agent配置对象的句柄,这允许使用env配置对象将所有agent配置对象传递下去。这种“俄罗斯套娃”式的配置方式非常适合扩展到多个层次,但是如果不考虑验证环境的多层次复用就无需这样做了


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭