真实面经题目 · 原创解析

模块级验证和系统级验证的关注点有什么不一样?

这题考验证层级思维,回答要说明模块级重协议和边界,系统级重集成、配置、跨模块交互和真实场景。

出现于:平头哥 · IC 验证

60 秒回答模板

模块级验证关注单个 block 是否满足局部 spec,重点是接口协议、寄存器、状态机、异常输入、边界条件、功能覆盖和局部 scoreboard,激励可以更强约束、更精确、更容易打到 corner。系统级验证关注多个模块集成后是否按场景协同工作,重点是地址映射、中断、DMA、总线仲裁、复位时钟、低功耗、性能、资源竞争和端到端数据路径。模块级更容易定位 bug、覆盖细节;系统级更接近真实使用,但可控性和可观测性较差,调试成本更高。好的策略是模块级打深打细,系统级验证集成和关键场景,并复用 agent、sequence 和 coverage。

考点 模块打细
难度 真实面经题
回答目标 区分模块级和系统级在目标、激励、可观测性、覆盖和调试策略上的差异。

深入解析

01

模块级关注局部正确性

模块级 testbench 直接连接 DUT 接口,容易产生非法、边界和压力激励。它验证协议时序、寄存器字段、状态跳转、错误处理和局部数据变换。

02

系统级关注集成

系统级把多个模块、总线、存储、中断、时钟复位和软件配置放在一起,验证端到端数据流、模块协作、资源冲突和真实用例。

03

可控性和可观测性不同

模块级可直接驱动内部接口并观察输出,定位快;系统级刺激往往从外部入口进入,内部状态不易观察,bug 可能跨多个模块传播。

04

覆盖策略不同

模块级追求细粒度功能覆盖和 corner 覆盖,系统级追求配置组合、业务场景、集成路径和性能指标覆盖。两者覆盖目标不能简单相加替代。

易错点

  • 认为模块级通过就等于系统级一定通过。
  • 系统级仍然追求所有内部 corner,导致激励复杂但效率低。
  • 模块级只跑正常路径,异常和边界留到系统级才发现。
  • 验证资产不复用,每个层级重复造 agent 和 sequence。

面试官追问

系统级发现 bug 后怎么定位?

先用日志、scoreboard、关键断言和 trace 定位端到端失败点,再缩小到模块接口,必要时把系统场景降维成模块级复现用例。

模块级覆盖很高还需要系统级吗?

需要。模块级不能充分证明地址映射、时钟复位、中断、总线竞争、软件配置和跨模块场景都正确。

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

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