wenhuajianyuan的个人空间 https://blog.eetop.cn/1635120 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

UVM学习基础篇(三)

已有 3260 次阅读| 2021-3-11 00:08 |系统分类:芯片设计

1.UVM打印信息默认冗余度阈值是什么?

  


默认冗余度阈值为UVM_MEDIUM,当打印信息冗余度级别低于阈值时(如UVM_LOW),则打印,否则不打印。可以通过get_report_verbosity_level()来获得component内打印信息冗余度阈值,该函数返回值为整数。 

typedef enum {

UVM_NONE = 0,

UVM_LOW = 100,

 UVM_MEDIUM = 200,

 UVM_HIGH = 300,

 UVM_FULL = 400,

 UVM_DEBUG = 500

} uvm_verbosity;


另外可以通过set_report_verbosity_level()对冗余度阈值进行设置,如设置当前component打印信息冗余度阈值,可在connect_phase之前,如设置其他component(需要层次化引用),需在connect_phase中设置。


2.设置打印信息冗余度阈值的方式有哪些?



  • set_report_verbosity_level()函数;


  • 通过命令行+UVM_VERBOSITY=  进行设置(相当于在base_test中通过set_report_verbosity_level_hier()函数将base_test及其以下所有component冗余度阈值设置为指定级别)。



3.信息严重性可以重载吗?

可以,可通过以下两种方式实现:

  • 通过set_report_severity_override()实现,可以指定id和component;


  • 在命令行+uvm_set_severity=<comp>,<id>,<current severity>,<new severity>。


4.如何设置最大error数量退出数?


  • set_report_max_quit_count();

  • 命令行+UVM_MAX_QUIT_COUNT=<num>,NO(NO代表不可重载,YES代表可以)


5.uvm_config_db各个参数的意义是什么?


  • uvm_config_db#()::set(A,B,C,D)中第一个参数和第二个参数合起来组成寄信的相对路径,其中第一个参数应为component实例的指针;第三个参数代表寄信的目标成员;第四个参数代表具体的值。当set的第一个参数为null时,代表uvm_top,等价于uvm_root::get().

      

  • uvm_config_db#()::get(A,B,C,D)中的第一个参数和第二个参数合起来组成收信的相对路径(因此通常设置为this,""),其中第一个参数应为component实例的指针;第三个参数应与set中的第三个参数保持一致,第四个参数是设置的变量。第三个参数可以理解为变量的代号,第四个参数理解为变量本身,通常情况下二者保持一致更方便。


6.uvm_config_db::get()可以省略的前提是什么?


  • 所在component使用uvm_component_utils进行注册;

  • 传递的变量使用filed_automation机制注册;

  • 对应的set函数的第三个参数与get函数的变量名称相同(即所省略的get函数的第三四个参数保持一致)。

    满足以上条件时,调用super.build_phase时会自动执行省略的get语句。



7.uvm_config_db::set()可以省略的前提是什么?


set语句不可以省略。


8.uvm_component_utils_begin/uvm_object_utils_begin的作用?


供需要同时使用factory机制和field_automation注册的类使用,与uvm_xxx_utils_end成对出现。


9.function phase和task phase是依据什么进行区分的?


是否消耗仿真时间。


10.UVM中哪些phase是task phase,哪些是function phase?


task phase 包括:run_phase及与其并行的12个run-time phase(包括pre_reset_phase,reset_phase,post_reset_phase,pre_configure_phase,configure_phase,post_configure_phase,pre_main_phase,main_phase,post_main_phase,pre_shutdown_phase,shutdown_phase,post_shutdown_phase

function phase包括:build_phase,connect_phase,end_of_elaboration_phase,start_of_simulation_phase,extract_phase,check_phase,report_phase,final_phase等。



11.phase的执行顺序?


对于不同phase之间来说,自上而下执行。

对于不同component的同一phase来说,function phase中的build_phase是自上而下执行的(此处自上而下指UVM层次结构的自上而下),其他phase都是自下而上执行;task phase中同一phase自下而上执行,但不同的是只是自下而上启动,无需等待其他component执行完毕(相当于fork...join_none)。如果是同一层次兄弟关系,按照实例化名字的字典顺序执行。对于叔侄关系的component,深度优先原则。



12.phase之间的跳转有何限制?


run-time phase向前跳转只能跳往run_time phase中的phase,向后可跳转run-time phase中的phase或者function phase,不可跳往run_phase。




欢迎扫描二维码关注


图片


点赞

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 16

    粉丝
  • 5

    好友
  • 0

    获赞
  • 3

    评论
  • 1850

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 13:25 , Processed in 0.010487 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部