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;
field_automation源码分析的更多相关文章
- ABP源码分析一:整体项目结构及目录
ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module ...
- HashMap与TreeMap源码分析
1. 引言 在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...
- nginx源码分析之网络初始化
nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...
- zookeeper源码分析之五服务端(集群leader)处理请求流程
leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...
- zookeeper源码分析之四服务端(单机)处理请求流程
上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...
- zookeeper源码分析之三客户端发送请求流程
znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...
- java使用websocket,并且获取HttpSession,源码分析
转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...
- ABP源码分析二:ABP中配置的注册和初始化
一般来说,ASP.NET Web应用程序的第一个执行的方法是Global.asax下定义的Start方法.执行这个方法前HttpApplication 实例必须存在,也就是说其构造函数的执行必然是完成 ...
- ABP源码分析三:ABP Module
Abp是一种基于模块化设计的思想构建的.开发人员可以将自定义的功能以模块(module)的形式集成到ABP中.具体的功能都可以设计成一个单独的Module.Abp底层框架提供便捷的方法集成每个Modu ...
随机推荐
- base64简单使用
加密: import base64 import random str ="aqwertyuiopasdfghjklzxcvbnm963.0852741,.;'" a = '人生苦 ...
- 在Linux下用C语言实现短信收发
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lyserver/archive/2008/10/01/3007090.aspx 首先,我根据功能需要创建了几个头文件 ...
- nodejs 学习一 process.execPath 、 __dirname、process.cwd()的区别
process.execPath node.exe的绝对路径 __dirname 当前执行到__dirname文件文件路径 process.cwd() 启动node命令的目录的绝对路劲
- 催希凡javaweb 学习28天
看到这样的博客,自己也在看传智播客的视频,收藏一下 催希凡javaweb 学习28天 http://www.cnblogs.com/Prozhu/category/824899.html
- 【SQL】from a,b。表a 和b之间是什么关系?
1.select a.id from a,b……——>这里a和b用逗号隔开,a,b之间默认是inner join的关系.
- 【托业】【新托业TOEIC新题型真题】学习笔记1--题库一-->P1~4
P1~4--------------------------------------单词-------------------------------------- status 雕像 couple ...
- mysql 数据操作 目录
mysql 记录的增删改查 mysql 数据操作 单表查询 mysql 数据操作 多表查询
- 前端 HTML form表单标签 input标签 type属性 重置按钮 reset
input type="reset" value="重置" reset重置 还原到默认状态 <!DOCTYPE html> <html lan ...
- jenkins的pipeline的使用
1.安装Pipeline Maven Integration Plugin 2.新建任务 3.编写pipeline代码 node { stage('get clone') { checkout([$c ...
- JS中函数表达式与函数声明的区别
hello,沐晴又来更新啦,今天呢,跟大家讲讲让人头疼的函数表达式和函数声明,反正我当初看那本高级程序的时候,是没怎么看太透,哈哈.我是个比较重基础的人,跟我一起探讨函数表达式和函数声明的世界吧. 首 ...