1
芯片验证是什么?
芯片设计可以划分为前端(逻辑设计)与后端(物理设计),验证环节则是个特殊的存在,就像一条支线,相对独立但与需求定义到综合到物理实现的这个过程又是并行的,贯穿着芯片设计流程的始末。而验证存在的意义在于不断地给设计或者实现过程提供迭代的关键意见,即验证过程中发现的性能不满足、设计代码功能bug、整芯片集成错误等问题。
随着进度的推进,一颗芯片表现形式会发生变化,它从RTL代码转换为各种网表,再到最后的版图。在这个过程中,验证可以分为前仿真(基于RTL代码)和后仿真(基于门级网表)。而大部分设计问题都应该会在前仿真的时候就暴露出来,毕竟越到后面设计的迭代成本越高,风险也会越大。
2
为什么要验证?
时间与成本
目前先进工艺的芯片设计环节成本及其高昂,从千万美元级到亿美元不等,在芯片设计过程中的笔误或者设计bug至少有上千个,开发者甚至连做梦都担心芯片变成石头。一款成功的产品是需要在正确的时间投放市场,如果由于芯片的延期而错过最佳投放市场的时间,或者不幸要重新投片,那么这就是一个氪金的故事,对于商业公司所带来的损失是不可接受的。因此,先进工艺的芯片设计成本高昂,在流片之前通过验证活动发现所有的设计缺陷和错误是非常重要的,毕竟没有流片的保险可以买。
质量与安全
芯片的质量有很大程度上依赖于验证,当然制造工艺也很关键。为了缩短芯片的上市时间,节约开发成本,SoC(系统级芯片,System on Chip)这一将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)等多家IP核集成在单一芯片上的形式成为了主流。随着5G、AI等众多应用的不断涌现,芯片功能复杂度爆发式增长,不同的芯片更需适配不同的应用场景。比质量更重要的是芯片的安全性、可靠性,当芯片、系统和软件环境融合在一起,无数的“应用模式”都需要从安全角度进行充分的验证。随着系统集成度的提高,系统自身的复杂性也在随之增加,而系统复杂度的提高对于功能验证的要求是首当其冲的——以智能汽车使用的自动驾驶芯片为例,它的复杂程度并不低于一架小型飞机,汽车行业要求系统能够准确运行以避免危险情况的发生,并能够实时监测和管理故障。
3
如何进行验证?
验证的直观反馈是需要仰赖验证工具的,利用工具找出BUG,你猜对了,是EDA没错。
数字电路的验证随着集成电路设计与制造的发展逐渐细化,形成庞大的技能树中的一个重要分支,其包含系统级验证、硬件逻辑功能验证、混合信号验证、软件功能验证、物理层验证、时序验证等等。
目前验证方式主要有动态仿真(Dynamic Simulation)、虚拟原型/硬件加速(Prototyping and Emulation)和形式化验证(Formal Verification)等。今天主要介绍已然成为新刚需的两种验证工具。
4
硬件仿真
硬件仿真其实由来已久,它给设计人员在流片前提供了一种更为准确的电路行为描述,因为硬件仿真是通过真实的电路和逻辑来实现设计。硬件仿真始于 20 世纪 80 年代末,在 20 世纪 90 年代末盛行,当时主要是通过商业 FPGA 进行实现,用于验证需要较长测试周期的处理器和图形设计。它们也遇到诸如电路建模难度高以及可靠性低等各种问题。其成本也较为高昂,并且作为单用户资源,其投资回报较低。然而,硬件仿真器的出色执行速度仍使其成为长处理周期的必要工具。
1980年代,所有早期的硬件仿真器都是由大量商用FPGA构建而成的,这些FPGA通常成千上万,并大量安装在大型板上被装在大机柜中,并通过复杂的FPGA背板互连,通过大量电缆插入目标系统来实现对仿真器的输入/输出,这种部署方案被称为ICE(In-circuit-emulation),这一方式繁琐不可靠,且相当耗时,业界因此发明了仿真时间(TTE)一词,以表达并衡量将设计输入到编译器与仿真器后所花费的部署时间;导致其无法被推广的原因还有高拥有成本,以及由于设备可靠性不佳,需要一批经验丰富的应用工程师来支持其部署。
仿真先驱Quickturn在90年代与IBM合作,引入新技术以解决其调试功能差、部署和编译时间长、性能无法随着设计规模线性扩展等缺点;1999年,由中国人于硅谷所创办的Axis推出能将设计从仿真器交换到专有仿真器以做调试的加速器;2000年,四名法国工程师创办了EVE(Emulation Verification Engineering)并推出了一款名为Zebu for Zero-Bugs的模拟器。
发展到2000年左右,通过基于定制ASIC的新体系结构,硬件仿真器得到了显着改善,支持软件改进,支持Verilog和VDHL语言,并设计了新的部署模式,客户群扩展到了处理器和图形的市场之外,在多机箱配置下总容量能扩展到1亿门,接近1MHz的仿真速度。
ZeBu-Server4
如今,随着芯片集成度提高,SoC逐渐成为常态,到2015年左右,设计已经达到十亿门的规模,硬件仿真已成为所有验证策略的基础、SoC设计中必备的工具。在这段期间经过多次并购整合,我们也于2012年收购了EVE并在两年后推出了基于Xilinx Virtex-7 FPGA的ZeBu-Server3。
5
FPGA原型验证
早期开发者想验证其设计,只有等待极其漫长的模拟结果,或是等待流片成果,而一旦结果不如预期,不管是再次模拟或是二次流片,都将产生极高的成本。因此,当Xilinx和Altera推出可重新编程门阵列(FPGA)时,开发者通过用FPGA板拼凑出有效的流程来对设计进行验证,这一比流片便宜、比仿真要快的方式成为开发者选择的第三种方式。
FPGA作为一种特殊的存在,由电路进行编程,可以通过软件手段更改、配置器件内部连接结构和逻辑单元,完成既定设计功能。这一内部电路可重构的特点几乎可以完全映射芯片的逻辑设计。那么重构的特点意味着需要开发者在此过程中对设计进行分区,而FPGA上有更多的信号在各个分区之间传输,需要对引脚进行多路复用,门的数量呈平方增长,而引脚的数量呈线性增长,这意味着每个引脚有数千个门,这一方法要求工程师具备大量设计及FPGA的知识,以及对FPGA工具流程的熟悉。
因此,2000年,一家创立于瑞典的公司Hardi Electronics正式推出一款基于FPGA的原型系统HAPS,HAPS可以通过多种方式快速组装ASIC原型系统,为客户在关键验证阶段节省数月的时间。2007年,Synplicity以2400万美元的金额收购了这家公司,而我们在2008年以2.27亿美元收购了Synplicity,HAPS经历几代后发展至HAPS-80,至今仍是业界最快的原型验证加速平台。
目前ASIC的设计变得越来越大,越来越复杂,单片FPGA已不能满足原型验证要求,多片FPGA验证应运而生。
RTL逻辑的分割、多片FPGA之间的互联拓扑结构、I/O分配、高速接口都对应用FPGA原型验证的芯片开发者提出了更高的要求也带来了前所未有的挑战。
所以是时候好好晒一下宝藏HAPS原型验证解决方案了。
HAPS-80
担心Partition?HAPS原型验证解决方案,具有独一无二的自动可干预分割功能并对应设计了自动可干预分割功能,同时提供系统级跨FPGA的时序分析工具,为HSTDM IP、缆线和I/O提供时序模型,以方便地处理TDM路径上的多个约束,为多FPGA的设计提供了优化且可靠的时序,保证了平台的高速性能和稳定性。
迭代方面也可以交给HAPS,基于HAPS原型验证解决方案,在对设计进行分割和时序优化的同时,也充分考虑到后续FPGA布局布线的挑战,在综合时,HAPS采用独特的技术,增强和优化单FPGA的综合结果,可以有效的减少后期Vivado布局布线的时间,并结合多核多进程综合等技术,有效减少各个环节的时间,加快迭代速度。
接口方案也顺便科普一下吧,HAPS原型验证解决方案设计了多种灵活的接口方案,提供丰富的外部子卡集合,降速桥方案;还和业界伙伴通过HAPS Connect Program,为使用者提供了更广泛的扩展空间。
观测性也什么不是问题,HAPS原型验证平台提供了多种灵活的调试手段。DTD(深度跟踪调试)功能,为用户提供了多FPGA实时速度的RTL级别信号联合波形调试,可以观测上千信号秒级的波形,进一步结合Verdi/Siloti的关键信号提取功能,可显著的扩大信号观测的范围。GSV是另外一个被用户广泛采用的调试功能,它可以提供设计内部所有寄存器的快照,在多种实际调试场景有效的帮助软硬件团队分析定位系统问题。
显而易见,HAPS原型验证解决方案,在全面性,成熟度,和对大规模设计的支持上,都占有绝对明显的优势。
终极总结,纳米级的旅程,一颗芯片要“走”至少两年,不仅要经过无数道工序的“千锤百炼”,更是涉及到高昂的研发成本、流片成本,这使得芯片设计的每个环节都不容许出现丝毫差错。而验证是保证芯片一次成功的关键基石,HAPS,你绝对值得拥有。
至此,芯片验证的科普就到这了,其实如果没有时间与资源的限制,大规模芯片的验证工作是可以一直做下去的,直到天荒地老海枯石烂。所以现在我要去发现Bug,发现所有的Bug,证明没有Bug了。