我的UVM白皮书总结(3)

uvm_component与uvm_object

 uvm_object是UVM中最基本的类,uvm_component也派生自uvm_object,但uvm_component有一些uvm_object没有的特性。

1.在new的时候指定parent参数来形成UVM树形结构。

2.phase自动执行。

只有基于uvm_component的派生类才可能成为UVM树的节点。

uvm_object是分子,uvm_component就是高级生命,uvm_sequence_item是血液,uvm_sequence是sequence_item的组合,config是高级生命的行为准则。

uvm_object

transaction是uvm_sequence_item。

sequence派生自uvm_sequence,sequence将一个sequence_item通过sequencer交给driver。

config:所有的config派生自uvm_object,规范验证平台的行为方式,如规定driver在读取总线时,地址信号持续几个时钟,片选信号何时有效。通过config把配置信息放在一个object中,然后通过config_db进行参数配置。

uvm_reg_item:派生自uvm_sequence_item,用于register model中。

uvm_reg_map、uvm_mem、uvm_reg_field、uvm_reg、uvm_reg_file、uvm_reg_block都派生自uvm_object。

uvm_phase:派生自uvm_object,规定uvm_component的行为方式,使得uvm_component平滑地在各个phase中运转。

与uvm_object相关的宏

`uvm_object_utils:把uvm_object注册到factory机制中。

`uvm_object_param_utils:注册参数化的类。

`uvm_object_utils_begin(my_object)//当transaction需要使用field_automation机制时,使用此宏。

`uvm_object_utils_end


uvm_driver:索要transaction,并按照接口时序驱动sequence_item

uvm_monitor:接受数据,转换成transaction级别的sequence_item。

uvm_sequencer:组织管理sequence_item.

uvm_scoreboard:比较结果。

reference model:直接派生自uvm_component。用软件模拟硬件行为。

uvm_agent:封装sequencer、driver、monitor。引入is_active

uvm_env:将验证组件封装,当运行不同测试用例时,只要例化该env即可。

uvm_test:所有case派生自uvm_test

uvm_component相关宏

`uvm_component_utils

`uvm_component_param_utils

`uvm_component_utils_begin

`uvm_component_utils_end


由于clone()等于new+copy,而uvm_component在实例化时必须指定父节点,因此在uvm_component中clone()函数失效。

(1)

class A extends uvm_object;
...
endclass

class my_env extends uvm_env;
    virtual function void build_phase(uvm_phase phase);
        A a1;
        A a2;
        a1 = new("a1");
        a1.data = 8'h9;
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值