field_automation源码分析

field_automation主要通过uvm_field_utils_begin和uvm_field_utils_end来加到自己写的class中。

uvm_field_utils_begin,在object和component注册到factory的时候,会自动调用。

uvm_field_utils_end,貌似没有用到,比较奇怪。

 

uvm_field_utils_begin,中主要是重载了一个function:__m_uvm_field_automation。这个类主要用在print

      compare,copy等操作中,实现具体的动作。调用发生在uvm_object的class中的function;

      

      调用过程发生在do_compare等hook之前:

      

      

      

      

函数的具体操作,定义在这些宏中:

      

每一个内部变量都会经过这样的定义,所这个宏展开是一段很长的代码,每个变量都存在一个case...endcase

      比如UVM_COPY,会copy该class中所有注册的变量。(左边的ARG是需要copy到的class,local_data是输入变量参数)

      

 

最后的endfunction,通过uvm_component_utils_end或者uvm_object_utils_end来实现。

      

 

field_automation可以实现的action有:

      

 

在有的action的实现过程中,会有一个class:__m_uvm_status_container,这个class中保存了供automatic使用的全局变量。

uvm_status_container 中的主要变量有:uvm_scope_stack     scope;

                  uvm_comparer      comparer;

                  uvm_packer   packer;

                  uvm_recorder   recorder;

                  uvm_printer    printer;

    变量bitstream表示set_int_local中的变量值;

    变量stringv表示set_string_local中的变量值;

    变量object表示set_object_local中的变量值;

    

这些变量在uvm_object的实现中,都设置为了default_comp;

      

      

转载于:https://www.cnblogs.com/-9-8/p/7571364.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值