该行业最终采用了Verilog和VHDL。多年以后,Verilog在SystemVerilog的抽象中向上扩展。虽然VHDL用户声称Verilog终于赶上了,但SystemVerilog中的“System”让用户相信可能会与当时已经出现的SystemC有重叠。
这两种改进的共同之处,即使用事务和高级验证功能扩展RTL,导致不同的技术支持非常相似的功能。这些技术互相竞争,然后标准化出现了,使一些过程变得平滑。但最终,用户面临着竞争技术,不得不做出选择。
今天的风景
讨论已经转移到系统级别,越来越多的功能已经转移到软件上。开发团队的一个大问题是如何最好地使软件开发和执行真正的设计,包括系统级验证复杂systems-on-a-chip (soc)投入非常复杂在(多氯联苯),一块印刷电路板的对外接口,当然,执行非常复杂的软件。
在开发过程中,特别是在衍生设计中,开发人员最终会为组成他们设计的各个模块管理大量的知识产权(IP)资产。他们将在C或SystemC中为设计的新部分建立高级模型,或者从一个新的新领域开发的高级模型开始。
Verilog、VHDL和SystemVerilog中的RTL可以用于几乎所有授权的IP,也可以用于从前设计中重用的部件。断言、监视器和检查器等工具是RTL仿真和加速的连接点。其他资产包括连接到在线仿真的环境的测试芯片,以及连接到真实接口(如USB、PCI Express和MIPI)的测试芯片。
所有这些代表设计部分的IP资产针对不同的技术和不同的系统级验证环境可用。虚拟原型是基于抽象模型的,它支持早期的软件开发和测试台的开发,甚至是在RTL中实现测试设计之前。
有几个引擎允许在开发完成后执行RTL。传统的RTL模拟在Linux主机上运行,存在速度上的局限性。但由于在软件中执行,它允许使用非常先进的仪器、监视和使用断言和先进的测试台进行检查。
一旦RTL可用并且相当稳定,模拟加速至少可以加速被测设计的执行。根据硬件加速部分和试验台之间的接口方法,可以达到10khz或其倍数范围内的执行速度。因为模拟涉及到测试平台的执行,调试和分析仍然是非常先进的。
在流程的后面,在线仿真在系统环境的上下文中执行芯片或至少它的大部分。该芯片通过速率适配器(通常称为“速度桥”)与环境连接。现在我们讨论的是兆赫范围的执行速度。但是,当一个bug被识别出来后,为了找到它的根源,用户通常需要在模拟加速或甚至只是模拟中重现它,以便使用更高级的分析功能来了解bug。
最后,基于FPGA的原型也执行RTL,但它实际上在大多数情况下用于软件开发而不是验证。它运行在几十兆赫的范围内,这对于软件来说非常好,但它的分析和调试能力相当有限。如果要分析bug的根本原因,则需要在其他环境中复制它们。
竞争与合作
所有这些技术都支持用于系统级验证和软件启用的环境。但他们真的在竞争吗?我认为他们不是!他们都有各自的优点和缺点。此外,现代设计的复杂性使得为每个环境完全建模一个系统的所有组件是不可能的。
成本、工作和所需的项目时间实在是太高了。再现在一个以更高速度运行的环境中发现的bug,而在另一个具有分析能力,仅分析这些bug的根本原因的较慢的环境中发现的bug,对于与我交谈的客户来说已经成为一个巨大的问题。最后,维护所有这些环境的成本变得太高了。
那么解决方案是什么呢?作为一个行业,我们需要致力于一个异构的、系统级的验证环境,该环境允许用户使用他们现有的单个IP资产,而不是需要大量的重塑。我们需要消除将在一个环境中发现的bug复制到另一个环境中的需求,而是在不同的验证环境之间实现更紧密的连接,有效地结合两者的优点。
回顾用不同语言表示寄存器转移的日子,系统级验证并没有一种单一的万能解决方案,可以通过竞争来解决。它将需要环境和技术之间的合作,为开发团队提供个人世界的最佳体验。