真实面经题目 · 原创解析
为什么 reference model 不应该直接由设计人员来写?
这题考验证独立性和 oracle 可信度,回答要说明 reference model 应基于规格独立实现,避免和设计共享同一理解错误。
真实面经题目 · 原创解析
这题考验证独立性和 oracle 可信度,回答要说明 reference model 应基于规格独立实现,避免和设计共享同一理解错误。
reference model 是 scoreboard 判断 DUT 对错的 oracle,最重要的是独立性和规格一致性。如果直接由同一设计人员按同一思路写,很容易把设计里的误解、边界遗漏或简化假设复制到 model 里,DUT 和 model 一起错,scoreboard 也比不出来。更合理的做法是验证人员基于 spec、架构文档和协议独立实现,必要时和设计评审接口和模糊点,但不要照抄 RTL 或共享核心算法代码。设计人员可以提供规格解释、算法说明和 review,验证人员负责把它转成独立可检查模型,并用 directed case、随机激励和覆盖率验证模型本身。
scoreboard 用 reference model 的输出判断 DUT 行为是否正确。如果 oracle 本身和 DUT 共享同一错误,验证环境会给出假通过,这是非常危险的。
设计人员写 RTL 时形成的理解、假设和 corner 处理可能被带入 model。独立实现能从不同角度解读 spec,提升发现歧义和错误的概率。
设计人员应参与规格澄清、算法解释和模型评审,但不应直接复制 RTL 思路或代码。验证需要保留独立判断,并记录 spec 冲突和假设。
reference model 需要单元测试、边界用例和与已知结果比对。复杂算法可和高层模型或文档示例互相校验,避免模型自身成为新的错误源。
可以让设计解释算法和规格,或复用经过认证的高层模型,但验证侧仍要独立封装、审查输入输出契约和边界条件。
原则上不应共享核心行为代码,否则会产生共因失效。可以共享协议定义、常量或经过评审的规格描述,但行为判断应独立。
要看断言、功能覆盖、代码覆盖、错误注入和回归日志是否对应题目里的关键路径;如果只是组件能跑起来,但没有覆盖目标状态和异常分支,验证价值是不够的。