验证IP(VIP)是一组用于芯片验证的预打包代码。它可以是一组用于验证总线协议的断言,也可以是一个旨在在定义的验证方法(如UVM)中使用的模块。这通常包含case激励、总线功能模型、一组checker、覆盖模型和与设计中的特定块相关联的其他东西,例如USB接口。
验证IP内部的主要机制是trans处理模型——有时被称为master和slave,有时就叫VIP,在一些流程中也可以被称为agent。VIP是一种可重复使用的IP形式,可用于创建缩短SoC验证时间和增加覆盖率所需的测试。虽然它通常用于验证标准总线协议,但它也可用于系统性能分析,并越来越多地用于仿真、模拟和虚拟原型设计。例如,VIP可以用于模拟加速和API的仿真。模拟加速方面使用模拟在UVM测试环境中运行得更快,与UVM中使用的验证IP非常相似,但不是针对在模拟器上运行。
验证IP(VIP)同时用于IP和SoC验证,这是一个新的验证时代。验证IP(VIP)简化了对具有数百万门级的任何复杂SoC进行验证的方式。验证IP(VIP)可以在具有UVM/VMM/OVM方法的系统Verilog中开发。这些VIP在向最终用户提供许可方面价值数百万美元。这些是由Cadence、Synopsys和Mentor Graphics等顶级工具公司开发的。目前,AXI、I2C、APB、PCIe、USB、SATA、SAS、光纤通道和以太网协议是有VIP验证市场的。
这些验证IP(VIP)具有针对性的验证功能,与其他验证技术相比具有独特性。VIP具有最重要的功能,即内置错误注入和配置灵活性,有助于轻松发现设计中的复杂错误。错误注入可以通过回调、工厂方法或特殊的总线监视器功能来完成,这些功能允许它们破坏任何传出的trans。这些回调捕获进入总线的trans,并在到达设计之前将其破坏。还有其他机制,如主动总线监视器(引入随机干扰),也会破坏接口上的trans。
VIP可以采用各种不同的配置可以验证各种不同的设计,相同的VIP可以根据不同的设计要求以不同的模式工作,这些类型的配置机制允许相同的VIP在不同的模式下工作。例如,PCIe的VIP可以配置为用作交换机、端点或具有内置配置类的根复合体(类似PCI系统中的主机桥,根复合体代表处理器生成trans请求,通过本地总线相互连接。)。它使各种设计的集成和验证变得非常简单,并且减少思考的时间。与任何其他验证模式相比,它使测试台的开发更加简单。
VIP的另一个重要功能是内置开发的协议冲突检查器。在设计和VIP之间的接口上集成了VIP监视器。它可以用来监视总线上的trans,也可以用来自动验证协议规则。无论何时从DUT发送或接收任何trans,都有可能违反VIP中开发的内置协议检查器中的协议规则,从而引发违反协议的错误。同时,VIP会告诉你具体违反了哪一条协议规范,并可以帮助验证工程师在不了解任何细节的协议规范的情况下,轻松地根据设计规范归档和改正错误。这种方法可以为每个trans提供协议检查。
除此之外,使用VIP功能可以向验证工程师和调试人员提供各种详细的错误报告,方便我们进行debug。如果出现已知的设计问题,我们可以屏蔽或降级任何错误或协议冲突。此外,如果设计不支持VIP,我们可以将其配置为绕过或启用/禁用任何程序。例如,在设计的初始阶段,我们可以在PCIe的VIP中配置避开LTSSM(链路训练状态机),如果它在PCIe设计中还没有实现实现。这是一个非常重要的功能,可以帮助设计师在其他模块没有完成的情况下,提前开始验证设计,可以一定程度上减小项目完成的周期。此外,VIP具有内置的特定于协议的功能覆盖和实现的断言,可用于该设计验证的覆盖率收集。
总的来说,在现代验证IP(VIP)提供了许多功能,这些功能可用于验证设计。它具有错误注入、协议检查/断言、各种配置、内置功能覆盖和易于测试平台开发等功能。