SoC Verification Flow

本文将简要介绍SoC验证流程,具体步骤如下:

1. 特征提取

在 SoC 验证阶段,需要在顶层查看设计并在spec阶段提取其 SoC 级功能/特性以进行验证。在这个阶段,需要彻底了解 SoC 功能及其架构,因为对spec的误解可能是造成错误的主要原因,这将导致可能会在并非真正的 RTL bug的问题上浪费不必要的时间。

2. SOC级验证计划

  • 在 SoC 和 IP 之间划清界限

在制定 SoC 级验证计划期间,必须明确定义/识别需要在 SoC 级和子块或子 IP 或子集群级别验证的功能。在审查期间需要与各自的验证团队确认相同的验证,以避免任何最后时刻的意外。

  • 识别可重用组件

需要在可重用的角度检查哪些块或子块级别的验证组件/环境和场景可以在 SoC 级别重用,以减少其在 SoC 级别的额外开发时间。

  • 验证互连

在 SoC 级别,需要关注 SoC 的顶级功能以及验证子模块之间的互通是否正常,此外还必须验证子模块与顶部的连接。

  • 保留占位符以进行更新

有时候 SoC 的所有功能都没有在 SoC 验证计划的初始阶段定义。对于这些类型的功能,需要在稍后阶段更新验证计划。因此,在验证计划开发期间,可以为其放置占位符或 FIXME,以便在以后需要时更新功能。

3. SOC级验证环境和SOC验证

SoC 级验证环境包含子块级验证组件/环境以及专用的 SoC 级验证组件/环境。

  • SoC级验证方法

对于 SoC 验证,必须选择最适合其彻底验证的正确验证方法。除此之外,还必须检查它的可重用性及其与旧验证环境的兼容性。

  • 子IPs/Blocks/Modules/Clusters的集成

在实际的 SoC 验证开始之前,第一步是将 sub-blocks/sub-IPs/sub-clusters 集成到 SoC 级验证环境中,还必须开发连接checks,以确保sub-blocks与 SoC 的集成是否正确完成,这在 SoC 级验证中发挥关键作用。

  • 遗留环境/可重用性和新验证环境开发

首先检查是否有通用的遗留验证环境可用,可以将其重用于验证。

例如,如果你正在开发 SoC,请检查它是否是其先前 SoC 的增强版本,其中包含一些附加功能和增强功能。因此可以重用其遗留环境并对其进行增强以验证其中的更新功能,还可以重用子块的monitors、checkers、asserations和可重用/可扩展的test case。

作为 SoC 验证环境开发的一部分,需要开发标准验证组件,例如 SoC 级Driver、Monitor、Scoreboards/Checkers/Assertions、Reference Models、Functional Coverage和Top-level Test Bench。对于基于处理器的 SoC,通常使用一个处理器来配置整个 SoC和其子模块,并驱动 SoC 级激励。对于标准协议(如 PCIe、Ethernet、USB 等),可以使用市场上可用的第三方 VIP(验证 IP)来加快验证速度。

  • SoC级场景

在 SoC 级别验证中,可能需要开发 SoC 级别场景,以从最终用户的角度在顶层验证其功能。如果 IP 级别团队开发了可重用/可扩展的 SoC 级别测试用例场景,那么可以在 SoC 级别重用相同的场景,这将加快 SoC 验证。还可以重用遗留测试用例场景,并对 SoC 之前版本中存在的类似功能进行一些修改。

  • SoC 级调试

Debugging是一个耗时的过程,尤其是涉及到复杂的 SoC 验证时。正确理解详细架构或需要在 SoC 级别验证的模块,将帮助你在很大程度上减少不必要的调试时间。

使用适当的编码风格和具有用户控制详细度的智能消息打印,打开所需的子 IP 级别消息,启用验证方法的调试开关,并使用 EDA 工具的适当调试功能,这也将帮助您快速调试 RTL作为 SoC 级别的测试平台/验证环境问题。例如,如果使用 UVM,那么可以使用 +UVM_OBJECTION_TRACE 以及命令行上的参数来跟踪objection activities。

在提交错误或任何 RTL 问题报告期间,应提供所有细节,包括重现此问题的步骤和波形,这样可以帮助设计人员快速解决问题!

4. 功能和代码覆盖封闭

功能和代码覆盖率关闭是 SoC 成功流片的主要里程碑之一。正确分析和审查功能/代码覆盖率是达到 100%的关键。一般来说,在 SoC 层面,使用累积回归结果/连续回归结果的合并来关闭功能和代码覆盖。在未覆盖的代码中,应该有理由去解释它是冗余 RTL 代码,或者该代码将永远不会在 SoC 级别执行,或者在功能验证期间它没有被覆盖。如果代码不会在 SoC 级别覆盖或不用于此 SoC,则必须在设计人员确认后将这些类型的代码添加到排除列表中。

5. 最终验证关闭

对于最终的功能验证关闭,必须满足功能验证sign-off列表中定义的所有功能验证标准。例如,100% 的功能和代码覆盖率、回归数量、所有已关闭/修复的错误等。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值