真实面经题目 · 原创解析
Sequence 怎么挂载到 sequencer 上,激励怎么发出来?
这题考 UVM 激励链路,回答要把 sequence.start(sequencer)、sequencer 仲裁、driver 取 item 和接口驱动串起来。
真实面经题目 · 原创解析
这题考 UVM 激励链路,回答要把 sequence.start(sequencer)、sequencer 仲裁、driver 取 item 和接口驱动串起来。
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 更清楚,也更容易控制场景。
sequence 属于对象,不在 component 层级中自动运行。它需要被 test、virtual sequence 或其他 sequence 创建,然后调用 start,并传入目标 sequencer 句柄。
sequencer 是 component,连接 driver 并管理 sequence 请求。多个 sequence 同时运行时,sequencer 负责仲裁谁的 item 先发给 driver。
sequence 在 body 中 create item,start_item 请求发送,randomize 填字段,finish_item 交出 item。driver 通过 get_next_item 获取,驱动完成后 item_done,形成握手。
sequence 只描述事务意图,driver 把事务转换为 pin-level 时序并通过 virtual interface 驱动 DUT。monitor 再采样接口生成观测事务,供 scoreboard 和 coverage 使用。
它协调多个 agent 的 sequencer,组织跨接口场景,本身通常不直接产生某个物理接口的 item,而是启动子 sequence。
它可让某 phase 自动启动 sequence,但路径和启动时机不如显式 start 清楚,复杂环境中调试和复用可能更麻烦。
要看断言、功能覆盖、代码覆盖、错误注入和回归日志是否对应题目里的关键路径;如果只是组件能跑起来,但没有覆盖目标状态和异常分支,验证价值是不够的。