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

SOC/IP验证工程师

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

公告

View Post

UVM中uvm_sequence的方法总结

类声明

virtual class uvm_sequence #(
  type REQ = uvm_sequence_item,
  type RSP = REQ
) extends uvm_sequence_base

变量

变量 说明
rsp 此sequence包含被称为rsp请求类型的字段
req 此sequence包含被称为req响应类型的字段

方法

方法 说明
new 创建并初始化一个新的sequence对象
send_request 这个方法将sequence item发送给sequencer,sequencer将把它转发给driver。
get_current_item 返回当前被sequencer执行的request item。
get_response 默认情况下,sequence必须通过调用get_response回收响应。

变量
req
REQ req
此sequence包含被称为req请求类型的字段。如果需要,用户可以使用这个字段或创建另外一个字段使用。默认的do_pirnt将打印这个字段。

rsp
RSP rsp
此sequence包含被称为响应类型的字段。如果需要,用户可以使用这个字段或创建另外一个字段使用。默认的do_print将打印这个字段。

方法
new
function new (string name = "uvm_sequence")
创建并初始化一个新的sequence对象。

send_request

function void send_request(
  uvm_sequence_item request,
  bit rerandomize = 0
)

这个方法将发送request item给sequencer, sequencer转发它给driver。如果设置了rerandomize位,此item将在被发送给driver之前随机化。 send_request函数只能在uvm_sequence_base::wait_for_grant返回后调用。

get_current_item
function REQ get_current_item()
返回当前被sequencer执行的request item。如果sequencer不是正在执行一个item,此方法将返回null。sequencer从调用get_next_item或peek的时间开始执行一个项,直到调用get或item_done的时间。注意,一个只调用get的driver将永远不会显示当前项,因为该项在被请求的同时被完成。

get_response

virtual task get_response(
  output RSP response,
  input int transaction_id = -1
)

默认情况下,sequence必须通过调用get_response来回收响应。如果没有指定transaction_id, 这个任务将返回发送给这个sequence的下一个响应。如果在响应队列中没有可以利用的响应,此方法将会阻塞,直到收到一个响应。
如果transaction_id参数被指定,此任务将会阻塞,直到在响应队列中这个transaction_id被收到。
响应队列默认大小是8。get_response方法必须尽快被调用,从而避免响应队列的溢出,防止响应被删除。
如果一个响应在响应队列中被删除,将会报告一个错误,除非错误报告通过set_response_queue_error_report_disabled禁用。

posted on 2022-04-23 16:56  SOC验证工程师  阅读(583)  评论(0)    收藏  举报

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