改善单片系统(system on chip,SoC)集成电路分析验证质量的解决方案如图所示。主要涉及判断、代码覆盖、验证知识产权(intellectual property,IP)、现场可编程门阵列(field programmable gate array,FPGA)仿真、事务测试、Lint工具、验证加速、协议分析、寄存器传输级(register transfer level,RTL)设计、模块级验证、系统集成和验证、系统级仿真和原型构建。
集成电路分析验证描述语言的主要特征包括:受限/受偏随机测试生成、功能覆盖和覆盖驱动的验证、行覆盖、块覆盖、段覆盖、支路覆盖、表达式覆盖、转换覆盖、有限状态机覆盖、判定语言/方位等。其中,属性描述语言(property specification language,PSL)判断用于辅助模块级和系统级复杂设计的验证。判断嵌入到RTL中,以注释形式存在,不支持PSL的工具不可见。PSL判断可以用于监视信号的正常跳变和非正常跳变。动态仿真软件理解PSL判断,根据PSL判断执行静态分析。动态模式下,仿真器可以报告指定判断触发的次数、通过/失败的次数。PSL判断嵌入在RTL内,在模块级和系统级验证之间是透明的,因此无须另外编写代码。此外PSL判断允许设计团队在设计早期指定和传递块互连和协议的接口信息,这有助于最大限度地降低因为解释的意义性所导致的顶层验证失败的可能性。
随着设计复杂度的增长,传统的行为测试平台的使用变得麻烦和笨拙。在系统级验证中,基于事务的测试平台通过生成完整的通信包或整个读/写周期,提供跨越总线架构的更高层次的抽象。一般通过以伪代码或高级语言缩写的转向文件控制这些测试平台。在系统级集成阶段,向代码中添加更多的PSL判断监视顶层信号和部分内部协议顶层验证的主要方法是基于事务的测试平台。设计测试平台是结合一系列脚本,由高层伪代码缩写的测例驱动。
SoC集成了许多不同类型的IP,其验证变得越来越复杂。验证计划除了考虑SoC整体,还需要覆盖各个IP核的验证。必须很好地理解SoC的全部应用,对其外部接口与SoC之间的交互理解越深,对SoC验证也就越彻底。不同的SoC应用具有不同的外部接口限制条件,验证团队需提早考虑这些限制条件。
SoC的功能可以用数据流和控制流表示。数据流分析根据数据量确定SoC互连的带宽能力和各种组件的要求。SoC的控制流分析考虑外部处理接口的性质和速率,外部数据和事件的控制处于不同时间域,本质上可能完全是异步的。需要确定这些接口上的变化速率,以便SoC内留出足够的处理能力,以在给定延时内在数据流限制条件下对接口变化进行响应。部分响应需要软件处理和/或其他接口的协同。对一个具体SoC进行详细的数据流和控制流分析,从而生成必要的验证策略。
在建立集成电路分析验证方案时需要考虑的因素主要有:①外部接口仿真。在验证复杂SoC时,除逻辑仿真技术外,还应考虑全芯片仿真。应检查每一IP数据接口在内的主要外部接口,评估是否需要对任何SoC进行仿真。该工作对所有IP核同时进行,以评估是否需要提早开展建模工作。②对于处理器类型的IP核必须规划软件/硬件集成,并开发总线功能的模型。③验证资源规划。资源规划是确保SoC验证成功的关键步骤。验证任务的大小可预测仿真硬件资源和所需的人力资源。类似的SoC中IP核的数量和复杂度将决定估算的回归时间、硬件计算资源和仿真授权要求。④由于复杂SoC中会有许多IP核,每个IP核有多个版本,因此验证环境必须使用源代码控制软件。源代码控制软件记录各文件的所有变化,同时保护目录和文件免遭任何意外删除。而且,多个工程师对相同文件操作,源代码控制软件可记录每个操作者所做及所做时间。⑤回归规划。回归测试是验证设计确保早期调试不影响整体功能的过程。回归测试可通过使用批处理文件和脚本自动化,从而确保复杂SoC更可靠。在自动回归过程中,不同的测试任务可分部到多个服务器上进行,并突出报告文件之间的差异。⑥动态时序仿真和静态时序验证。动态时序仿真用于异步设计和同步设计的时序分析。使用动态时序仿真可以验证设计的功能和时序要求,但必须开发复杂的输入向量检查设计中关键路径的时序特性。静态时序验证用于验证设计中的延时,验证每一路径并检测严重问题,如时钟上的毛刺、不符合要求的建立时间和保持时间、慢路径、过度时钟偏斜等。