• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

UVM中UVM_ERROR到达一定数量后结束

UVM同样支持UVM_ERROR达到一定数量时结束仿真。对于某个测试用例,如果出现了大量的UVM_ERROR,根据这些错误已经可以确定bug所在了,再继续仿真下去意义已经不大,此时就可以结束仿真,而不必等到所有的objection被撤销。
实现这个功能的是set_report_max_quit_count函数,其调用方式为:

//base_test.sv
21 function void base_test::build_phase(uvm_phase phase);
22 super.build_phase(phase);
23 env = my_env::type_id::create("env", this);
24 set_report_max_quit_count(5);
25 endfunction

上述代码把退出阈值设置为5。当出现5个UVM_ERROR时,会自动退出,并显示如下的信息:

# --- UVM Report Summary ---
##
Quit count reached!
# Quit count : 5 of 5

在测试用例中的设置方式与base_test中类似。如果测试用例与base_test中同时设置了,则以测试用例中的设置为准。
此外,除了在build_phase之外,在其他phase设置也是可以的。
与set_max_quit_count相对应的是get_max_quit_count,可以用于查询当前的退出阈值。如果返回值为0则表示无论出现多少个
UVM_ERROR都不会退出仿真:
function int get_max_quit_count();
除了在代码中使用set_max_quit_count设置外,还可以在命令行中设置退出阈值:
<sim command> +UVM_MAX_QUIT_COUNT=6,NO
其中第一个参数6表示退出阈值,而第二个参数NO表示此值是不可以被后面的设置语句重载,其值还可以是YES。

int sim_max_quit_count = 5;
if(!$value$plusargs("UVM_MAX_QUIT_COUNT=%d", sim_max_quit_count)) begin
  set_report_max_quit_count(sim_max_quit_count);
end

posted on 2022-07-07 22:20  SOC验证工程师  阅读(835)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3