中文 英语
18lickc新利
的意见

IP质量的三个关键方面

IP的功能正确性、健壮性和可读性对于高质量、可重用的设计至关重要。

受欢迎程度

众所周知,如今的大型片上系统(SoC)项目需要大量的设计重用。没有一个团队,无论多么有才华,可以从零开始设计十亿或更多的大门。他们大量借用了以前和相关项目的RTL代码,以及来自内部库、开源存储库、开发合作伙伴和商业提供商的数十万实例化IP块。并不是所有的IP块都是同样可重用的;太多的游戏存在挥之不去的漏洞和限制。SoC集成商完全有权利期望和要求IP开发人员生产高质量的设计。

IP质量主要有三个方面。最明显的是功能的正确性:设计必须做到它的规范所承诺的,并且符合任何相关的行业标准。这需要一个复杂的模拟测试平台和测试,几乎总是建立在通用验证方法(UVM)上,以实现高覆盖率。一组经过正式验证的全面属性(断言)也是非常需要的。IP提供商必须采用健壮的验证过程,至少结合静态检查、形式化分析和模拟(可能通过仿真或FPGA原型进行增强),并记录对IP用户实现的覆盖。

通常,IP提供者包括测试台、测试、属性和运行脚本以及RTL设计和用户文档,以交付完整的IP包。这使用户能够运行开箱即用的测试来观察使用中的IP设计,这可能是更好地理解它的一种非常有效的方法。IP测试台上的一些组件与全芯片级相关,因此SoC验证团队可以将这些组件集成到他们的顶级测试台上。断言几乎总是可以在更高的级别上重用,包括完整的SoC。如果用户对IP RTL代码进行了任何更改,则测试台组件、测试和断言也可能需要修改,以反映更改或增强的功能,并确保最终设计的功能正确性。

另外两个方面不那么明显,但也非常重要。一个是IP健壮性,它有几个方面。设计和验证代码必须能够在任何商业模拟器中有效运行,并且属性必须在任何正式的验证工具中工作。RTL代码必须是逻辑合成工具可以接受的,并且可以映射到任何目标硅技术,以满足所需的功率、性能和面积(PPA)结果。代码不能包含任何可能导致意外行为或使IP用户难以在不意外破坏其功能的情况下修改和自定义IP块的麻烦语言结构。

对代码的任何更改都需要最后一个属性:IP可读性。如果IP用户不能理解代码,就不可能添加新功能或删除SoC目标应用程序不需要的功能。即使没有更改IP,调试芯片级验证测试失败也可能需要了解IP块内部发生了什么。慷慨和信息丰富的评论是解决方案的一部分,但IP提供商还可以提供更多帮助。使用标准的编码风格、适当的变量名和一致的格式使设计和测试代码更易于理解和维护。

IP用户文档实际上是可读性属性的一部分。从RTL代码中可能很难看出设计的某些方面,最好使用用户指南中的词语来解释。文档必须描述用户如何连接IP块并将其集成到SoC中。IP提供商必须确保文档与设计完全一致,并随着设计的发展和新功能的添加而更新。完成这一任务的一种越来越流行的方式是自动从IP设计生成部分或全部用户文档,通常由RTL代码中嵌入的pragmas(特殊注释)指导。


图1:IP质量的关键方面。来源:AMIQ EDA

当提供商使用集成开发环境(IDE)和相关的linter(两者都针对硬件设计和验证代码进行了调优)时,可以更容易地交付IP质量的所有三个方面。IDE检测并在输入许多类型的设计错误时“动态”提供“快速修复”建议,以便可以立即解决这些错误。这比在IP验证中发现的测试失败要有效得多,或者更糟糕的是,在用户站点的IP部署过程中。IDE通过为标识符和通用语言构造的模板提供自动补全功能,帮助创建按构造纠正的设计和测试平台代码。

如上所述,代码可能在功能上是正确的,但质量仍然不能接受。IDE的检查会对可疑的构造发出警告,包括那些不受所有流行模拟和合成工具支持的构造,那些解释不同的构造,以及那些运行效率低的构造。IDE提供了自动重构,在不改变代码功能的情况下改进代码。检测器执行额外的检查,不仅包括语言结构,还包括UVM测试台代码。IDE检查是否符合相关标准,包括SystemVerilog和UVM,特别警告使用已弃用或标记为将来删除的结构。所有这些类型的检查都可以以批处理模式或在IDE中交互式地运行。

IDE通过自动重新格式化来支持IP的可读性和可维护性,以满足行业最佳实践并符合项目范围或公司范围的编码指南。IP提供者可以自定义如何处理空白、结构对齐以及如何拆分长行。IDE提供了广泛的不同视图,以帮助IP提供商更快速、更有效地开发设计,同时满足质量要求。它为设计生成原理图和状态机图,并通过多个块跟踪信号。它还显示了设计和测试台层次结构,帮助导航,并提供了在同步视图之间轻松跳转的超链接。


图2:IP和SoC质量检查示例。来源:AMIQ EDA

IP用户也受益于使用IDE。不同的视图和导航特性使理解RTL和测试台代码变得更加容易。当修改IP块和为SoC的自定义部分编写代码时,用户应该同时运行IDE和linter,以获得与IP提供者相同的所有优势。例如,如果用户想要重命名一个信号,IDE可以在设计层次结构的所有级别自动且一致地执行此操作。正确、健壮、可读的设计和验证代码是每个IP和SoC项目的必要条件。IDE和linter使开发团队能够在每个级别上交付设计质量的所有三个方面,从最小的IP块到最大的SoC。

Tom Anderson为AMIQ EDA创建了这篇文章。本文由ClioSoft作为客座博客撰写。



留下回复


(注:此名称将公开显示)

Baidu