深入理解uvm宏机制
2018-02-27 17:09
148 查看
本文以uvm_info宏来展开说明uvm宏机制。
基础是uvm_report_object类的使用,该类继承uvm_object。理解uvm_info宏,需要了解uvm_report_info 和 uvm_report_enabled方法。
uvm_report_enabled就像开关一样,管着是否输出信息。笔者可能说得较为笼统,大体意思是一样的。这里面有个比较抽象的东西,verbosity。刚开始直接把它理解为等级。举个更为普遍的例子,平常考试会评优秀,良好,及格,不及格等等级来划分学生的层次。如果我们开始把这四层进行编号:优秀 以上为0;良好以上为 1;及格以上为 2;不及格以上为 3。如果定义一种方法,目的实现查询成绩信息,其参数为x,那就很容易实现输出x等级以上的统计信息。例如取x为2,就可以输出及格以上成绩信息。verbosity正是这个意思。
对于uvm_report_info的定义请看http://blog.csdn.net/weixin_41241296/article/details/79383663。
接下来就介绍宏机制。
`define uvm_info(A,B,C) A:ID B:MSG C:VERBOSITY
begin
if(uvm_report_enabled(C,UVM_INFO,A )
uvm_report_info(A,B,C,...,...);
end
类似的宏还有uvm_error,uvm_warning,uvm_fatal等,一个开关肯定不行啊。于是在uvm_report_enabled中加入分别不同宏的办法。看UVM_INFO。类比分析,如果是uvm_fatal,那就替换参数UVM_INFO为UVM_FATAL。可是uvm_report_info中还有其他参数啊,文中用省略号表示。这些参数是内部运行纠错用的,并没有带进宏中。
好了,笔者抛砖引玉,本文的目的在于获悉uvm宏的运行机制,对于内部封装好的方法的使用并不是本文重点。
基础是uvm_report_object类的使用,该类继承uvm_object。理解uvm_info宏,需要了解uvm_report_info 和 uvm_report_enabled方法。
uvm_report_enabled就像开关一样,管着是否输出信息。笔者可能说得较为笼统,大体意思是一样的。这里面有个比较抽象的东西,verbosity。刚开始直接把它理解为等级。举个更为普遍的例子,平常考试会评优秀,良好,及格,不及格等等级来划分学生的层次。如果我们开始把这四层进行编号:优秀 以上为0;良好以上为 1;及格以上为 2;不及格以上为 3。如果定义一种方法,目的实现查询成绩信息,其参数为x,那就很容易实现输出x等级以上的统计信息。例如取x为2,就可以输出及格以上成绩信息。verbosity正是这个意思。
对于uvm_report_info的定义请看http://blog.csdn.net/weixin_41241296/article/details/79383663。
接下来就介绍宏机制。
`define uvm_info(A,B,C) A:ID B:MSG C:VERBOSITY
begin
if(uvm_report_enabled(C,UVM_INFO,A )
uvm_report_info(A,B,C,...,...);
end
类似的宏还有uvm_error,uvm_warning,uvm_fatal等,一个开关肯定不行啊。于是在uvm_report_enabled中加入分别不同宏的办法。看UVM_INFO。类比分析,如果是uvm_fatal,那就替换参数UVM_INFO为UVM_FATAL。可是uvm_report_info中还有其他参数啊,文中用省略号表示。这些参数是内部运行纠错用的,并没有带进宏中。
好了,笔者抛砖引玉,本文的目的在于获悉uvm宏的运行机制,对于内部封装好的方法的使用并不是本文重点。
相关文章推荐
- 深入理解java虚拟机-4 虚拟机类加载机制
- 深入理解JavaScript编程中的同步与异步机制
- Android消息机制之Handler的深入理解
- 深入理解 Java 垃圾回收机制
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- JavaScript可否多线程? 深入理解JavaScript定时机制
- 《深入理解mybatis原理》 MyBatis缓存机制的设计与实现
- 通过源码深入理解和使用 MyBatis 插件机制
- 深入理解信号槽机制(一)(大局观,讲的不错)
- 深入理解ASP.NET的内部运行机制
- 深入理解和改进JSP/Servlet会话管理机制
- 深入VCL 理解BCB的消息机制(二)
- 深入理解JDK动态代理机制
- 深入VCL理解BCB的消息机制2
- 深入理解PHP之:Nginx 与 FPM 的工作机制
- SQL Server深入理解“锁”机制
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- 深入理解C++面向对象机制(零)单继承
- JavaScript可否多线程? 深入理解JavaScript定时机制
- 阅读《深入理解JavaScript定时机制》