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

SOC/IP验证工程师

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

公告

View Post

get_response使用详解

// Task: get_response
// 默认情况下,sequences必须通过调用get_response找回responses。
// 如果没有指定transaction_id, 此任务将返回发送给这个sequence的下一个response。
// 如果在response队列里面没有response,此方法将被阻塞,直到收到一个sequence。

// 如果transaction_id被指定,此任务将阻塞,直到在response队列中具有此transaction_id收到。
// responses队列默认的大小是8。get_response方法必须被尽快调用避免response队列溢出从而阻止response被丢弃。

// 如果在response队列中的一个response被丢弃,错误将会报出,除非错误报告通过set_response_queue_error_report_disabled被禁止。

  virtual task get_response(output RSP response, input int transaction_id = -1);
    uvm_sequence_item rsp;
    get_base_response(rsp, transaction_id);
    $cast(response,rsp);
  endtask

  // Function- put_response
  // Internal method.
  virtual function void put_response(uvm_sequence_item response_item);
    RSP response;
    if (!$cast(response, response_item)) begin
      uvm_report_fatal("PUTRSP", "Failure to cast response in put_response", UVM_NONE);
    end
    put_base_response(response_item);
  endfunction

posted on 2023-06-27 20:53  SOC验证工程师  阅读(1169)  评论(0)    收藏  举报

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