UVM 知识网络

按概念组织的独立复习卡片。每篇包含核心解释、机制、局部示例、易错点、有理由的双向关联,以及返回原章节和已有面试题的链接。长代码和详细推导保留在章节笔记中。

从具体问题进入,沿“关联知识”跳到相邻概念,再回原文核对细节。编号用于索引,不要求顺序阅读。

版本与示例约定:依据本仓库《UVM 实战》第1~9章和现有八股整理,教材主要采用 UVM 1.1d。starting_phase、旧式配置接口、sequence library 等需核对项目版本。代码均为带上下文说明的局部片段,用户类型、接口、驱动 task 和完成标志由平台提供。原文5.1.5对 super.phase 的内容仍标注待复习,此处保留该状态。

关系总图

箭头表示值得继续追问的机制联系,不统一代表继承、调用或数据流,具体含义见卡片说明。图展示主要跨主题关系,完整概念和普通链接见下方。

flowchart LR
  subgraph A[平台与对象]
    test["test与启动"]
    tree["组件树与路径"]
    agent["env与agent"]
    driver["driver与virtual interface"]
    mon["monitor"]
    scb["reference model与scoreboard"]
  end
  subgraph B[配置与通信]
    cfg["config_db"]
    ana["analysis广播"]
    fifo["TLM FIFO"]
  end
  subgraph C[运行与激励]
    phase["phase"]
    obj["objection"]
    seq["sequence与sequencer"]
    hs["请求握手"]
    rsp["response"]
    vseq["virtual sequence"]
    seqcfg["sequence配置与句柄"]
  end
  subgraph D[寄存器与复用]
    ral["RAL结构"]
    front["前门与adapter"]
    back["后门与HDL路径"]
    pred["镜像与预测"]
    factory["factory"]
    reuse["平台复用"]
  end
  test --> agent
  test --> phase
  tree --> cfg
  cfg --> seqcfg
  seqcfg --> seq
  cfg --> driver
  phase --> obj
  obj --> seq
  vseq --> seq
  seq --> hs
  hs --> driver
  hs --> rsp
  agent --> mon
  mon --> ana
  ana --> fifo
  fifo --> scb
  ana --> pred
  ral --> front
  ral --> back
  front --> seq
  front --> rsp
  front --> pred
  pred --> scb
  factory --> test
  agent --> reuse
  vseq --> reuse
  ral --> reuse

三条阅读路线

每一站均可直接点击,不依赖图表渲染;右侧局部图谱也会展示卡片之间的关联。

平台搭建

从角色分工走到能运行、检查并正确结束的最小环境。

UVM方法学与平台全貌 → object与component → env与agent → 组件树与实例路径 → config_db → driver与virtual_interface → monitor → TLM与port_export_imp → analysis广播 → TLM_FIFO → reference_model与scoreboard → test与启动流程 → sequence与sequencer → 请求握手 → objection

机制理解

串起创建、配置、阶段、请求、应答与寄存器访问。

object与component → 组件树与实例路径 → factory注册_创建与override → config_db → phase → objection → sequence与sequencer → sequence生命周期与宏 → 仲裁与lock_grab → 请求握手 → response → sequence配置与sequencer句柄 → virtual_sequence → RAL模型结构 → 前门_adapter与总线链路 → 期望值_镜像值与预测 → 后门与HDL路径 → domain与phase跳转

面试复习

围绕概念区别、完整链路和故障定位组织回答,各卡片底部直达现有问题。

UVM方法学与平台全貌 → object与component → 组件树与实例路径 → config_db → report日志机制 → TLM与port_export_imp → TLM_FIFO → phase → objection → sequence与sequencer → 请求握手 → sequence生命周期与宏 → sequence配置与sequencer句柄 → virtual_sequence → response → factory注册_创建与override → callback → 参数化与平台复用

概念索引

平台与对象

卡片复习时回答的问题
UVM方法学与平台全貌平台如何形成检查闭环?
object与component谁挂组件树,谁需显式启动?
组件树与实例路径路径与变量名、HDL 层次有何区别?
transaction与字段操作句柄共享和字段操作如何配合?
test与启动流程run_test 怎样建平台并启动场景?
env与agentactive/passive 如何封装协议能力?
driver与virtual_interface事务如何变时序,vif 如何传入?
monitor为什么检查依赖真实观测?
reference_model与scoreboard如何匹配比较并发现遗漏?

配置与通信

卡片复习时回答的问题
config_db配置如何匹配、覆盖和共享?
report日志机制严重性与详细级别有何区别?
TLM与port_export_imp谁调用、转接与实现?
analysis广播如何广播,为什么不能耗时或改共享对象?
TLM_FIFO如何缓存,条目是副本吗?

运行与激励

卡片复习时回答的问题
phaserun 与 main 如何运行?
objection谁保持场景存活,何时能结束?
domain与phase跳转跳回 reset 还要清理什么?
sequence与sequencer启动 sequence 与发送 item 有何区别?
请求握手授权、提交、取请求和完成如何配对?
仲裁与lock_grab怎样仲裁和独占,能否抢断事务?
sequence生命周期与宏宏封装什么,哪些回调可能跳过?
virtual_sequence多接口怎样并发与同步?
sequence配置与sequencer句柄sequence 如何取配置和具体句柄?
response谁产生响应,如何路由消费?
sequence_library候选场景如何组合复现?

寄存器与复用

卡片复习时回答的问题
RAL模型结构field/reg/block/map 表达什么?
前门_adapter与总线链路reg.read 怎样到引脚再返回?
后门与HDL路径HDL path 怎样拼接,后门 API 如何区分?
期望值_镜像值与预测三种值为何不同,如何预测?
寄存器内建测试与常用API通用测试有什么前提与限制?
factory注册_创建与override注册、create、override 如何配合?
callback如何在组件钩子插入行为?
参数化与平台复用block 到 chip 复用什么、重组什么?

按问题进入网络

回到章节与面试题

来源与章节学习

本栏目根据配套 UVM 章节笔记按概念重新整理,保留其教材版本与待复习提示。原文作者 qingxuanxx,原仓库采用 MIT 许可;详细来源见 UVM 章节来源与许可,完整许可证见 MIT 许可证。

返回知识卡片 · 按章节学习 UVM

后续维护

  • 新卡片加入索引,并补至少一组有理由的双向关系。
  • 章节标题或八股题号变化时同步核对出处锚点。
  • 新版本结论明确适用背景,未确认内容保留待复习标注。

此文件夹下有33条笔记。