transaction与字段操作

返回知识网络总入口 · 平台与对象

核心结论

transaction 是抽象操作的数据载体。字段操作决定复制、比较、打印和打包行为;句柄赋值不会产生独立副本。

关键机制

  • 常派生自 uvm_sequence_item,包含 rand 字段、约束和协议数据。
  • field automation 登记字段,flags 控制参与哪些操作。
  • copy 向已有对象复制,clone 创建副本并返回 object 句柄,通常要 $cast。
  • 深浅复制由 flags 与实现决定;自定义 do_copy/do_compare 保留父类必要行为。

小例子或流程

packet snapshot;
if (!$cast(snapshot, tr.clone()))
  `uvm_fatal("COPY", "clone type mismatch")

嵌套对象也需正确复制。snapshot = tr 仅共享句柄。

易错点

  • 注册类型不等于全部字段自动参与 compare。
  • clone 名称不保证所有嵌套字段深复制。
  • 修改已发布的同一对象会污染 FIFO 历史条目。

关联知识

  • object与component:transaction 是需要字段操作的典型 object。
  • monitor:发布对象需要稳定生命周期。
  • analysis广播:广播共享句柄,修改前应理解复制策略。
  • TLM_FIFO:FIFO 保存句柄,改写会污染历史事务。
  • 请求握手:握手时机影响 item 安全复用与所有权。

原文出处与已有面试题