您的位置:首页 > 其它

深入理解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 macro