芯片设计随着时间推移正在变得越来越复杂是业界人士的共识,但是究竟“复杂”体现在哪些方面,并且随着复杂度提升,还有哪些没有解决的问题,这就需要深入的考察和研究。
上周,西门子EDA和Wilson Research完整公布了2022年两家公司一起合作的芯片设计报告,该报告的定量分析为我们提供了一些重要的洞见。在研究了该报告后,我们认为,芯片设计变得更复杂不仅仅体现在芯片晶体管规模变大上,还体现在SoC复杂度的提升上,而SoC复杂度提升会带来一系列的改变,包括设计方法学的变化,以及设计验证方面的新需求。这些新的变化和新需求将会驱动未来几年芯片设计的变革。
01
芯片设计概述
芯片设计分为前端设计和后端设计,前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界限,涉及到与工艺有关的设计就是后端设计。
1、规格制定
芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。
2、详细设计
Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。
3、HDL编码
使用硬件描述语言(VHDL,Verilog HDL,业界公司一般都是使用后者)将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL(寄存器传输级)代码。
4、仿真验证
仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。看设计是否精确地满足了规格中的所有要求 。规格是设计正确与否的黄金标准,一切违反,不符合规格要求的,就需要重新修改设计和编码。设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。
仿真验证工具Synopsys的VCS,还有Cadence的NC-Verilog。
5、逻辑综合――Design Compiler
仿真验证通过,进行逻辑综合。逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表netlist。综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。 逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)。
逻辑综合工具Synopsys的Design Compiler。
6、STA
Static Timing Analysis(STA),静态时序分析,这也属于验证范畴,它主要是 在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。这个是数字电路基础知识,一个寄存器出现这两个时序违例时,是没有办法正确采样数据和输出数据的,所以以寄存器为基础的数字芯片功能肯定会出现问题。
STA工具有Synopsys的Prime Time。
7、形式验证
这也是验证范畴,它是从功能上(STA是时序上)对综合后的网表进行验证。 常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。
形式验证工具有Synopsys的Formality。
02
芯片复杂度的多维度提升
随着人工智能、智能汽车等新应用的出现,芯片复杂度正在慢慢提升。芯片复杂度的提升可以是一件多维度的事情,一方面,它可以体现在晶体管数量的增大上;另一方面,它也可以体现在芯片中复杂子系统的数量上。
从芯片的晶体管数的角度,西门子/Wilson的研究报告中,36%以上的芯片项目门数达到了千万级,而门数在百万级以下的项目仅占30%,因此从晶体管数的角度,今天芯片的复杂度确实已经大大提升。
但是晶体管数并非唯一考量。例如,在一些芯片中,片上内存(如缓存)可以占据相当大的门数,但是其整体设计复杂度未必会很高。因此,另一个芯片复杂度的观察角度是芯片子系统的数量。在SoC中,每一个芯片子系统都有其独特的功能,而且当芯片子系统数量更多时,如何让这些子系统能很好地工作在一起就是一件具有挑战性的事情。因此,芯片的子系统数量也是衡量整体芯片复杂度的一个重要指标。然而,芯片子系统的数量并不容易统计,而一个可以和这个数字挂钩的数据就是芯片上使用的处理器数量。通常,当芯片子系统的复杂度超过一定程度时,都会单独配有一个为它服务的嵌入式处理器。因此,统计一个芯片上嵌入式处理器的数量可以从一定程度上体现芯片上复杂系统的数量,从而体现芯片设计复杂度。
从芯片上嵌入式处理器数量的角度,首先我们可以看到今天74%的芯片拥有至少一个嵌入式处理器;而一半以上的芯片项目拥有两个以上的嵌入式处理器,15%的处理器有8个以上的嵌入式处理器。从这个角度来看,今天的芯片设计从系统角度也确实是越来越复杂。
综上所述,我们认为芯片设计的复杂度提升不仅仅体现在晶体管数量上,还体现在系统复杂度上。这些复杂度的提升是由于应用端的驱动(例如人工智能,智能驾驶,下一代智能设备等),在未来随着这些系统的进一步普及,我们预计会进一步推高芯片系统的复杂度,这也会给芯片设计行业带来相应的变化。
03
芯片系统复杂度正在改变芯片设计生态
芯片系统复杂度对于芯片设计生态的影响是多方位的。首先,如前所述,随着应用的驱动,芯片系统复杂度上升,整个芯片系统上复杂度较高的子系统数量上升,这也就让芯片上需要的嵌入式处理器数量提升。一方面,应用驱动了对于嵌入式处理器需求的提升;另一方面,如果有成本较低、设计较为灵活的嵌入式处理器,也将能进一步赋能这样的复杂度提升。
从这一方面来看,RISC-V可谓是切中了芯片设计复杂度提升的需求,未来可望会越来越多地得到应用,并且从另一个角度越来越多地满足复杂芯片系统对于嵌入式处理器的需求。RISC-V是一种开源处理器指令集,任何人有能够自由使用该指令集,并且在其基础上进一步定制满足自己需求的额外指令集。对于有实力的厂商来说,使用RISC-V指令集可以自主开发属于自己的处理器,并且使用在自己的产品中;而对于中小厂商,也可以选择SiFive等公司提供的RISC-V处理器IP来使用。目前,使用RISC-V作为对于计算性能要求不高的嵌入式处理器/MCU已经成为越来越多芯片的选择,其背后的主要原因就是基于RISC-V处理器的成本和灵活性。而西门子/Wilson的2022年芯片设计报告也进一步证实了这一观点:2022年有30%的芯片使用了RISC-V处理器,而这一数字在2020年仅为23%。在未来,我们预期RISC-V得到进一步广泛的应用,并且从另一方面也进一步赋能芯片系统复杂的提升。
除了嵌入式处理器之外,随着芯片系统复杂度提升,对于芯片系统设计的另一个改变就是如何把这些系统用高效而可靠的方法连接到一起,可以互相通信,互相访问内存等。这就需要越来越多地使用NoC(network-on-chip)。NoC将会越来越多地成为SoC系统上的基础IP,来确保芯片系统设计能更加高效地拓展其复杂度和设计规模。根据市场研究公司Brainy Insights的研究,未来十年内NoC的年复合增长率可达7.9%,因此我们也预期会在未来越来越多的大规模高复杂度芯片中看到NoC的使用。
因此,我们认为从设计IP角度,新的嵌入式处理器(RISC-V)和片上互连(NoC)将会成为重要的新看点,来驱动和赋能芯片系统复杂度进一步提升。
04
新兴市场不只是炒作
尽管一些新兴市场如今不过是炒作,但它们可能是未来的沃土。他们还可以创造新的需求,为行业的其他部分提供动力,然后创新可以提升行业的所有部分。
Semtech 信号完整性产品部高级市场经理 Raza Khan 表示:“元宇宙席卷了技术行业,并正在突破以前认为数字社区可能实现的界限。” “这种全沉浸式技术将给 5G 基础设施带来前所未有的压力。对 5G 的这种不断增长的需求需要以极低的延迟、低功耗和高性能提供更高的带宽传输能力。
光学技术将在实现通过 5G 无线技术高效且有效地传输数据方面发挥关键作用。光学技术提供了 Metaverse 应用程序所需的成本效益、小尺寸、低功耗和性能。为了让元宇宙在未来几年得到广泛采用,很多人都把目光投向了量子。PathWave Software 副总裁兼总经理 Niels Faché 表示:“到 2023 年,量子即服务 (QaaS) 的产品将会增加,大公司和初创企业将为客户提供对其量子平台的云访问。” “Quantum EDA 将成为提高这些基于云的平台的计算能力的关键推动因素,其简化的工作流程可以处理增加量子位的数量。同时,本地定制 QPU(量子处理单元)的服务有望从设计到制造和集成解决方案得到提升,以满足对本地量子模拟解决方案的需求。从这个角度来看,量子 EDA 也将通过这些定制 QPU 产品看到强劲的需求。”
05
芯片验证将成为重中之重
除了新的设计IP之外,复杂芯片的验证将会成为另一个挑战。如前所述,复杂芯片包括了越来越多的子系统,首先每一个子系统的验证随着其复杂度的提升会越来越具有挑战性。其次,多个复杂子系统的协同工作和验证将会成为另一个芯片验证的难点。最后,芯片系统中每个子系统存在异质性,例如,高性能模拟/混合信号模块(例如内存接口等)越来越多地使用在复杂芯片系统中,这也给整体芯片系统的验证带来了挑战,因为不同的子系统的验证方法并不一致。
芯片验证首先需要提高效率,降低需要的时间。根据西门子/Wilson的报告,2022年的芯片项目中,高达三分之二的项目没能按照原定的时间交付,这也说明了目前的芯片验证系统对于复杂芯片尚需更多效率提升。
除此之外,芯片首次流片成功的比例也在下降,在2022年高达76%的项目需要两次或更多的流片才能实现设计目标。在导致芯片需要多次流片的原因中,首要原因是逻辑功能问题,而另一个值得注意的原因是模拟模块出现问题:该项目在2020年和2022年占到从几年前的20%一跃到了40%,这也说明模拟设计相关的验证,以及模拟模块和其他模块的协同验证将会成为未来复杂芯片验证领域非常重要的尚需解决的问题。
展望未来,复杂芯片的验证首先需要更加高效率的验证流程,例如使用更加高效的testbench描述语言(使用C++/Python等),从而保证芯片项目能定期交付。在效率之外,由于逻辑功能仍然是芯片流片失败的首要问题,而随着芯片系统复杂度提升这方面的问题会越来越大,因此对于可靠的验证方式(例如emulator)提出了要求,emulator需要能进一步降低成本,并且提升对于复杂系统的支持,从而确保复杂芯片系统的质量。最后,模拟验证预计会成为未来复杂芯片系统中的关键一环,这包括了模拟验证,以及模拟和数字系统的协同验证(例如模拟系统建模放到数字系统中验证等),这对于新验证方法论的采用和新的EDA系统都提出了新的需求,预计会成为未来几年验证领域的另一个重头戏。