真实面经题目 · 原创解析

Sequence 怎么挂载到 sequencer 上,激励怎么发出来?

这题考 UVM 激励链路,回答要把 sequence.start(sequencer)、sequencer 仲裁、driver 取 item 和接口驱动串起来。

出现于:平头哥 · IC 验证

60 秒回答模板

sequence 是 object,不挂在 component 层级树上。常规启动是 test 或 virtual sequence 创建 `seq`,调用 `seq.start(agent.sequencer)`;sequence 的 body 里按 `start_item -> randomize -> finish_item` 产生事务;sequencer 负责多个 sequence 的仲裁;driver 通过 seq_item_port 从 sequencer 取 item,再把 transaction 转成 virtual interface 上的 pin-level 时序。default_sequence 可以让某个 phase 自动启动,但工程上显式 start 更清楚,也更容易控制场景。

考点 start 绑定
难度 真实面经题
回答目标 讲清 sequence 的启动、sequencer 仲裁、item 发送握手、driver 驱动接口和 monitor 回采路径。

深入解析

01

sequence 的启动方式

sequence 属于对象,不在 component 层级中自动运行。它需要被 test、virtual sequence 或其他 sequence 创建,然后调用 start,并传入目标 sequencer 句柄。

02

sequencer 的职责

sequencer 是 component,连接 driver 并管理 sequence 请求。多个 sequence 同时运行时,sequencer 负责仲裁谁的 item 先发给 driver。

03

item 发送路径

sequence 在 body 中 create item,start_item 请求发送,randomize 填字段,finish_item 交出 item。driver 通过 get_next_item 获取,驱动完成后 item_done,形成握手。

04

激励落到接口

sequence 只描述事务意图,driver 把事务转换为 pin-level 时序并通过 virtual interface 驱动 DUT。monitor 再采样接口生成观测事务,供 scoreboard 和 coverage 使用。

易错点

  • 把 sequence 当 component 挂到 env 里。
  • sequence 直接驱动 virtual interface,绕过 driver。
  • driver 和 sequencer 的 TLM 端口没有连接,item 发不出去。
  • 多个 sequence 并发时不理解 sequencer 仲裁,导致激励顺序不可控。

面试官追问

virtual sequence 有什么作用?

它协调多个 agent 的 sequencer,组织跨接口场景,本身通常不直接产生某个物理接口的 item,而是启动子 sequence。

default_sequence 有什么问题?

它可让某 phase 自动启动 sequence,但路径和启动时机不如显式 start 清楚,复杂环境中调试和复用可能更麻烦。

怎样证明这个验证写法真的覆盖到了目标场景?

要看断言、功能覆盖、代码覆盖、错误注入和回归日志是否对应题目里的关键路径;如果只是组件能跑起来,但没有覆盖目标状态和异常分支,验证价值是不够的。