跟踪硬件辅助验证的发展

文章作者:Lauro Rizzatti, Hans van der Schoot, John Stickley

回顾一下硬件仿真是如何发展的,从意大利面条式电缆到缩略词汤,最后以处理器知识碗结束。

我的[Lauro Rizzatti]第一次接触到硬件仿真大约是在1995年,当时我访问了德克萨斯州奥斯汀的一家主要处理器公司。它的实验室从地板到天花板都堆满了巨大的硬件模拟器,这些模拟器来自当时的领导者Quickturn。

令我震惊的是,一束巨大而杂乱的电缆将设计测试(DUT)——模拟器内部的处理器设计——连接到PC主板上的一个插座上,取代了尚未打包的处理器。在业界,这种设置被称为在线仿真(ICE)。在紧闭的门后,工程师们称之为意大利面电缆。它的平均故障间隔时间(MTBF)是几个小时。实验室里到处都是警告人员不要踩到电缆的标志。

当时,ICE是模拟器唯一的部署模式,也是它存在的原因。它允许用真实的流量测试DUT。另一种方法是使用在门级或寄存器传输级(RTL)模拟器上执行的基于软件的测试台生成的测试向量来运行DUT。

在真实世界的测试平台中测试DUT具有任何测试平台都无法比拟的吸引力。这种优势迫使模拟用户忍受痛苦、挫折和挫折,并导致设计经理超支他们的工具预算。早期的模拟器是不可共享的资源,只能在现场使用,价格标签将它们归入资本设备购买类别。

测试台模拟和ICE基于两个独立的测试环境,在当时的ASIC设计中,这两个环境没有任何共性。万博投注网址从设计周期的早期阶段一直到完全asic级验证都使用了仿真。ICE本应是最终系统级验证的锦上添花。但通常情况下,蛋糕上的糖霜还没有准备好。也就是说,在第一批硅样品从铸造厂返回后,DUT已经准备好进行模拟,达到了目的。

在20世纪90年代中期,该行业开始了一段漫长的旅程,以弥合ICE和模拟之间的差距。当时还不知道,解决方案将以ICE虚拟化的形式出现:创建一个与ICE功能相当的试验台。经过多年的仿真、仿真和测试平台技术的改进,协同仿真(也就是协同建模或基于事务的加速)成为ICE之外的主要选择。

具有讽刺意味的是,意大利式电缆已被一堆首字母缩写所取代——考虑到虚拟化的许多优势,这是一种受欢迎的交换。其中包括:

  • PLI:编程语言接口
  • API:应用程序编程语言
  • DPI:直接编程接口
  • SCE-MI:标准协同仿真建模接口
  • BFM:公共汽车功能模型
  • TLM:事务级建模
  • UVM:通用验证方法

…等等。但我们有点超前了。

早期联合仿真加速度

模拟器和模拟器的第一次集成是在20世纪90年代中期设计的。当时,测试台是用Verilog硬件描述语言(HDL)编写的,而且集成是基于IEEE Verilog PLI标准的。PLI为Verilog代码提供了一种机制来调用用C编程语言编写的函数。Verilog PLI标准有几个缺点。它是:

  • 使用起来相当笨拙和困难,
  • 面向信号,拖慢仿真执行,以及显著的仿真速度,
  • 由于值更改检测的基于回调的响应,用户不友好。

当时所有仿真厂商都提供了一种提升为协同仿真或(基于周期的)仿真加速的功能。“加速”一词完全是用词不当。事实上,这就像开着一辆法拉利拉着一辆装满10吨碎石的大拖车。它阻碍了模拟器的性能,降低了3到4个数量级。具体来说,在ICE模式下,仿真器有效地以几兆赫的频率运行。在联合仿真中,最高可达1kHz。

在典型的验证环境中,DUT I/O接口包括数千个信号,在每个时钟周期内有许多切换状态。在仿真中,测试台和DUT通过一个周期精确的、位级或信号级接口进行通信,每次I/O信号过渡在两者之间发生时进行传输。

在联合仿真中,由模拟器处理的测试台和现在在仿真器中的DUT通过相同的周期精确的、信号级接口进行通信,同样,每次I/O信号过渡在测试台和DUT之间进行交换。从实现的角度来看,这当然是一个优势,因为它不需要建模更改,但对性能来说却是一个严重的劣势。事实上,即使模拟器可以以数量级的速度运行,它也必须等待这些传输完成。此外,模拟器经常被测试台停止,因为它必须等待缓慢的测试台对传入信号作出反应并产生下一组刺激。

巨大的通信开销基本上扼杀了整体性能。实际验证性能受限于主机PC的性能、测试台的大小和复杂性,以及/或测试台与DUT之间的信号级接口(图1)。


硬件辅助验证图1 (cr)
图1:*仿真分析表明,DUT占用了80%的CPU时间,剩下的20%被Verilog测试台和PLI占用,在HDL联合仿真中产生了大约5倍的理论最大加速

今天的测试台在模拟中消耗超过50%的CPU时间——有时超过90%——这将联合模拟加速限制为不到两倍。毫无疑问,联合模拟从未起飞,ICE模式从一开始就占据了突出的位置。

C/ c++测试平台的联合仿真和仿真加速

EDA行业从不闲着。一次又一次,新的想法和工程壮举增强了设计验证景观。事实上,新的验证语言被设计来创建更高级的测试台。

一个恰当的例子是使用C/ c++来实现测试台。其目的是提高测试台的抽象级别,并减少Verilog模拟器对测试台设置的影响。

用C/ c++测试平台取代Verilog,省去了测试平台与DUT之间基于pli的通信。供应商采用基于宏的定制api来实现pin级或信号级通信接口。

这种测试台方法有利于部署负责DUT的模拟器。现在,两位数的加速因子是可能的(图2)。


硬件辅助验证图2 (cr)
图2:*仿真分析表明,DUT消耗了99%的CPU时间,剩下的1%由C/ c++测试台和API使用,从而产生了大约100×理论最大加速因子在HDL联合仿真


接下来:编写联合仿真测试平台、事务器

留下你的评论