形式验证供应商OneSpin的总裁兼首席执行官Raik Brinkmann(布林克曼)博士说到,对于芯片和电子设计自动化(EDA)行业的任何人来说,这是一个令人兴奋的时刻。Brinkmann博士以新的计算机架构为例,打破了冯-诺伊曼原则,将计算推到一个不同的水平,并说它们为拥有重要技术组合的敏捷EDA公司提供了机会。
然而,人工智能(AI)吸引了布林克曼博士的想象力,他正在研究人工智能可以做什么来帮助设计和验证芯片。他开始说,在硬件上实现人工智能应用,需要将为人工智能开发的算法映射到一个硬件平台上,这个平台可能是ASIC、FPGA、DSP或更复杂的平台。每个人都有一个验证挑战:验证算法。
一旦工程师决定了一个平台和架构,他们通常会信任执行流程和平台,尽管有时需要采取更严格的方法,例如通过人工智能算法瞄准安全相关的应用。他们可能会对算法本身使用特定的验证技术。挑战在于为应用挑选合适的平台。
一个人工智能平台包括一个通用的处理器,用来管理数据和管理所有需要执行的计算类型。一些加速器是特定于某一应用的;其他加速器可以更通用,支持各种应用。一个内存子系统和一组输入/输出(I/O)来完成人工智能平台的数据进出。这些平台需要稳健,并可能提供一些安全保证,特别是在汽车领域。大多数成熟的处理器公司,以及FPGA公司和云计算公司,都在研究这些类型的架构和平台,以加速其计算。
加速人工智能拥有巨大的前景。超过80家初创公司正在研究人工智能加速器,布林克曼博士惊叹不已,这是一个有趣的、巨大的空间,现在就可以参与其中。在汽车领域,工程师们正在考虑集中的计算机化平台,在系统内具有高内存带宽和高速互连,以实现更多的灵活性和更低的成本开销。
在大多数情况下,驱动人工智能应用选择平台的主要标准是性能和灵活性之间的权衡。FPGA和ASIC在它们能支持的人工智能应用的架构类型方面是僵化的。虽然它们提供更好的性能和吞吐量,更低的延迟,更少的功率和更高的精度,但它们是不灵活的,使得一般算法很难映射到这些架构上。
构建通用算法和改变算法的架构使设计过程变得复杂。挑战在于要有一个高度自动化的流程,将算法映射到硬件平台上。这对CPU、GPU和DSP来说比较容易,但对FPGA来说比较难,对加速器来说更是如此。一般来说,很难通过单一的方法实现处理能力和灵活性。
赛灵思正在开发一种新的自适应计算平台,该平台采用基于FPGA的设备,是FPGA与复杂的DSP加分布式存储器的组合,目标是C++和Python程序员。同时,赛灵思正试图使FPGA更加灵活,更容易针对不同的算法,但也有局限性。赛灵思正试图使架构更加灵活。Xilinx为实现这两个目标所做的努力必须得到检验。
另一个例子可以是大规模并行处理。这采用了通用计算的方法,使其更具可扩展性。例如,Kalray最近发布了一款拥有288个内核的处理器芯片,目标是AI应用以及数据中心。
这两个例子都属于可重构或自适应计算的异构类别,其中通用计算与可编程加速器相结合。这是一个最近的趋势,有一个类似的问题–难以验证的复杂设计。
虽然今天使用不同的验证引擎来验证复杂的设计,但它们通常不足以验证人工智能设计,因为有太多不同的架构需要此类系统的工程师去探索。一个强制性的要求要求快速和可扩展的设计和验证环境,能够管理多层次的验证,在自动化过程中没有容量限制。
一个例子是构建块的块级验证,如带有乘/累加单元的DSP,并验证这些块的聚合。较小的块被组合成大规模的芯片,这对开发这些芯片的公司来说是一个巨大的投资。一个拥有7纳米设计的公司不能冒险在系统芯片(SoC)层面出现问题。为了缓解任何问题,必须在块级和SoC级都有严格的验证过程。
其他应用挑战包括自动驾驶,其中工程师必须考虑功能安全。这是技术中固有的验证挑战,所有在项目的预算和时间范围内执行整个功能安全验证的需要使其更加复杂。
标准验证技术可能适用于块级验证,尽管它需要更高的自动化程度和信心。这也是形式验证可以增加价值的地方。
在DVCon Europe 2016的一篇论文中,博世描述了它如何从指令集架构(ISA)中自动创建一个DSP,然后通过形式化工具使用生成的断言进行验证,其中甚至断言集本身也被测试为规格的差距和信心。这使得博世能够在ISA层面进行设计和验证,并将大量工作自动化,从而加快了设计过程。
另一个例子是支持快速乘法/累加或融合乘法/累加(FMAC)的浮点单元(FPU),它是许多AI实现的核心。今天,神经网络中使用的大多数算法都是基于许多在浮点值上使用乘法和加法的操作,随后需要将这些操作扩展到不同的规模和不同的需求。这就产生了一个很大的验证问题,通过根据IEEE浮点标准自动验证实现来解决。正如最近的DVCon论文中所详述的,赛灵思使用形式化验证IP和一个应用程序来执行这种验证,这是一个例子,设计流程的可扩展性和性能来自自动化和形式化证明复杂断言的能力。
在总体和SoC层面上的大规模设计是传统验证方法崩溃的地方。目前的工具不适合这个目的,这就是EDA必须解决的挑战。不仅仅是设计的规模需要巨大的能力来验证100亿门设计上的模块和模块实例之间的连接,而且人的能力也遇到了限制。指定数万个模块和数百万个具有深层次结构的实例的努力是一种乏味和容易出错的方法。工具和人工努力都是一个很大的挑战,因此需要新的方法–这是EDA公司可以努力和帮助解决的问题。
正如布林克曼博士所指出的,芯片设计验证工程师面临的挑战很多,但机会也很多,特别是在人工智能应用方面。他是对的–这是一个从事芯片设计和EDA行业的好时机!