用AI设计芯片,阁下该如何应对?

60年前,一家名叫仙童的公司造出了一个包含四个晶体管的新产品。60年后,这个名叫『芯片』的东西已经彻底改变了世界,而它其中包含的晶体管的数量已经超过1000亿。

《芯片战争》这本书里写到:2021年,芯片行业生产晶体管的数量,已经超过了人类历史上所有其他行业的公司生产所有产品的总和。

为了支持如此大的规模,芯片设计的方法也经历了很多阶段。早年间,芯片里所有的电路和晶体管都是用手画出来的;但随着芯片的规模和复杂度的指数级增长,芯片工程师开始使用计算机和EDA软件来辅助进行芯片设计。EDA这种工业软件,也成为了芯片产业至关重要的核心环节。

现在人工智能大爆发,那我是不是可以用AI来帮我设计芯片呢?如果可以的话,AI能用在哪些芯片设计环节?每次产业发生变革,都将带来洗牌的机会,那么对于普通人来说,AI和EDA的结合又带来了我们能抓住的新机遇?今天这篇文章,就带大家一起来看看这几个问题;全都是硬核干货,记得点赞收藏,保存起来慢慢看。

芯片设计的一般流程

为了说清楚AI如何帮助芯片设计,我们就得先说清楚芯片设计的流程和步骤。虽然芯片的功能五花八门,但设计一颗芯片通常遵循着非常类似的流程和步骤。像苹果、高通、英伟达这些公司,基本都是按照我接下来介绍的步骤来设计一颗芯片的。

总体来看,芯片可以分成前端设计和后端设计两个部分。前端说的是这个芯片是什么、它有哪些部分,后端说的是这个芯片的各个部分长什么样。

具体来说,前端负责芯片的逻辑电路设计,包括系统架构定义、RTL编码、逻辑综合,在这个过程中会进行多次的仿真验证,最终得到门级的网表;后端主要负责芯片的物理设计,包括布局布线、性能优化、功能测试等等步骤,最终会得到一个芯片电路的物理版图,提供给晶圆厂制造。

其实设计芯片和盖房子很像,前端设计就是做出房子的设计图,比如包含几个房间,每个房间的功能是什么、餐厅还是卧室。而后端设计就是按设计图画出这个房子的施工图纸,包括建筑施工的步骤,用钢结构还是砖混,怎么拉网线走水电等等。这样建筑队,也就是晶圆代工厂,就可以拿施工图纸去把芯片造出来了。

在前面说的这些步骤中,AI已经几乎无处不在了,我们一个一个来看。

用AI生成RTL代码

编写RTL代码,是芯片设计万里长征的第一步,它主要目的是定义芯片的功能和结构。

RTL是一种硬件描述语言,它能精确的描述组成芯片电路的各种信号、逻辑操作、数据传输和电路结构。就像写软件的编程语言有C、C++、Python一样,常见的RTL语言也有很多,比如Verilog、VHDL、SystemVerilog,还有最近几年比较流行的Chisel等等。通常芯片工程师都是人肉写RTL,非常痛苦,但大语言模型出来之后,人们就开始探索使用ChatGPT这样的大模型来直接生成RTL代码,我的课题组也做过一些这样的尝试。

我们目前的结论是,大模型肯定可以帮助提升写RTL代码的效率,用它来写一些比较常见或者规模比较小的电路模块是没问题的;但是,当前的效率提升还比较有限。

为什么这么说呢?我们都知道,大模型的表现很依赖于训练语料的数量和质量。对于软件来说它有很多高质量的开源代码,所以就出现了像copilot这样的杀手级应用,极大提升了软件工程师的开发效率。

但芯片硬件的RTL代码是各家芯片公司最核心的技术机密,我们从来也没看到英伟达苹果开源他们的芯片设计吧。缺少高质量的硬件代码做训练数据,那大模型的能力自然就会比较弱了,这也是使用AI辅助芯片设计的一个比较大的问题。

我们组做过一个定量的评测,看大模型生成的芯片电路到底有多能打,回头单独写一下,感兴趣的朋友别忘了给我一个免费的赞,点赞越多更新越快。

AI辅助芯片验证

接下来再来说功能验证,这其实是整个芯片设计环节中最重要、但最容易被初学者忽视的环节。验证顾名思义就是要确保芯片的功能是正确的。比如你做了一个加法电路a+b=c,就需要验证当a=1、b=1的时候,c=2.

验证之所以非常重要,是因为它已经成为整个芯片开发周期中最耗时、消耗算力最多的环节。说个数据大家就知道了。全球最大的EDA公司Synopsys新思科技发过一个技术报告,里面说验证已经占据了整个芯片开发周期高达70%的时间。做一次芯片的流片、也就是去制造一次的成本要上亿美元,如果因为一个bug导致整个芯片报废,那损失就大了。

这个事情不是没发生过,1994年美国林奇堡学院的一位数学系教授Thomas Nicely发现,使用奔腾处理器做特定的浮点数除法的时候,总会出现错误的答案。比如他用一个数字去除以824,633,702,441时,答案一直是错误的。后来蓝厂证实是因为奔腾处理器的一个用于浮点运算的预编程算法存在bug,平均每做90亿次长除法就会出现一次错误结果,相当于七百年一遇。后来蓝厂召回了所有受到影响的奔腾处理器,并且损失了5亿美元。

30年过去了,现在的芯片变的越来越复杂,那要在验证上花的力气就越多了。比如验证一个Arm处理器核,就需要10的15次方个验证周期。什么概念呢?如果用软件仿真器的话,需要15000年才能跑完、做到完全验证,这显然是不现实的。

通常来说,芯片验证并不是要穷举验证所有的功能,而是要定义最关键的功能和代码,确保这些内容要被充分验证到。这其实就是在定义一个验证的状态空间。也就是说,我们把汪洋大海缩小到一个大明湖,这样就能在有限的时间、人力、算力的情况下,保证芯片的功能正确。而覆盖率就是用来评估验证完成度的指标。

但在实际的验证过程中,达成100%的覆盖率是很困难的,它主要面临三个问题。第一,如何定义覆盖率本身。通常要覆盖的内容是由经验丰富的工程师人工定义的,并不一定全面。第二,覆盖率在收敛的过程中会越来越难。在做验证的过程中,需要上千次的仿真测试。随着覆盖率的提升,简单的随机测试就不够用了——这是因为低处的果子被摘得差不多了,如果想要摘到更高的果子,就要搭更高的梯子、用更专业的工具、有时候也要靠运气才行。第三,如何确定验证已经完成。达到100%的覆盖率并不代表芯片功能100%正确,可能是你设置的标准太低了。所以需要对仿真中收集到的海量数据进行分析,并且判断到底是不是真正实现了最终的验证收敛。

所以,芯片工程师这帮大聪明们就想用人工智能来帮助做芯片验证。比如Synopsys新思科技就提出了一个VSO.ai工具,使用AI来优化验证空间,从而加快覆盖率的收敛速度。比如,针对定义覆盖率目标的难题,VSO.ai就能够推断出一些不同的覆盖率类型,不再拘泥于传统的代码覆盖率,而是和芯片工程师指定的覆盖率形成互补。AI还能从验证的经验中不断学习,然后不断优化覆盖率的目标。

为了加快覆盖率的收敛速度,AI可以解放验证工程师,不用做手动优化,而是自动去学习和调整各种测试,同时消除那些重复劳动,在加快覆盖率收敛的同时节省计算资源。

AI还能自动分析覆盖结果,分析导致bug的根本原因,或者尝试推理为什么没有达到某些特定的覆盖点,这样帮助验证工程师更快的判断验证是否完成。

有了AI之后,就会大大缩短覆盖率的收敛时间。比如在验证OpenTitan HMAC这个IP的时候,使用了VSO.ai就能将测试次数缩减到之前的1/3,覆盖率结果的质量也提升了10%。瑞萨电子在减少功能覆盖盲区方面实现了10倍优化,并将IP验证效率提高了30%。对于一个动辄需要几周甚至几个月才能跑完的验证工程来说,缩短1/3的时间带来的效率提升是巨大的。

近年来验证对于芯片行业来说越来越重要了,也是普通人进入芯片行业值得考虑的方向。我对验证算是略懂,因为我现在就在做芯片验证相关的学术研究,目标也是通过人工智能和硬件加速这些方法,让芯片验证的过程更快、更高效。这里打个小广告,我的研究团队一直招收工程师和实习同学,我每年也有研究生指标,欢迎感兴趣的同学和朋友加入我们,一起搞有意思的事情。

AI辅助芯片布局布线

2021年,谷歌在自然杂志上发表了一篇工作,介绍了谷歌使用深度强化学习方法,把芯片布局设计从原来的数周缩短到了6个小时。

布局布线指的是,芯片上有各种各样的组件和模块,需要把他们合理的放置在芯片上有限的空间内,并且用导线连接起来,在满足各种电气规则和限制的前提下,尽可能的达到最好的功率、性能和面积。

通常来说,这个工作是由EDA工具完成的,但为了性能的最优化,需要芯片工程师不断进行手工调整。调整之后再给EDA工具再做一版,然后不断循环这个过程。这就像家里软装的时候放各种家具,看怎么摆放才能达到空间利用率最优、动线最合理,只不过每调整一次就要把家具都拿出去然后重新来一遍,非常费时费力。

于是谷歌就想,能不能像做游戏一样去做芯片的布局布线呢?比如把性能优化的条件看成是游戏的获胜条件,用包含状态、动作、状态转移、奖励四个关键要素的强化学习方法,通过训练一个智能体,用累计奖励最大化,让AI优化芯片布局的能力持续增强。于是他们开了10000局游戏,让AI在1万个芯片上练习布局布线并收集数据,同时不断学习优化。最终他们发现和人类工程师相比,而AI在面积、功率和电线长度方面优于或媲美手动布局,同时满足设计标准所需的时间要少得多。

为了得到一个最优的芯片设计,核心其实是优化芯片的功耗(Power)、性能(Performance)和面积(Area)这三个衡量芯片设计质量的关键指标。这个问题也叫做设计空间探索。

功耗优化指的是减少芯片在运行时消耗的能量,这意味着更长的电池寿命和更低的运行成本。功耗优化可以通过多种方式实现,包括低功耗电路设计技术、先进的电源管理技术等等。性能优化更关注提高芯片的处理速度和响应能力,可以通过改进处理器架构、增加核心数量、增加流水线级数等方式实现。面积优化就是要减少芯片所占的物理空间,从而减少制造成本、提高芯片集成度。面积优化通常通过更紧凑的布局设计、或者采用更先进的制造工艺来实现。

有位哲人(我)曾经说过,高富帅易得,但PPA难得。在实际的芯片设计中,PPA三个因素往往相互制约,比如提升性能就会增加功耗和面积,这就需要根据具体的应用在三个关键指标中取得最佳的平衡。比如对于智能手机芯片,低功耗和小面积可能就是首先要考虑的因素;而对于高性能计算或者服务器芯片来说,性能就是最关键的。但是一个芯片的PPA参数不计其数,需要芯片工程师花费大量的时间去探索和寻找最优的组合,有点大海捞针的那个味儿了。

说到这里大家应该也能想到了,这种不断尝试和搜索的问题,其实都可以用AI来帮忙解决。比如把AI和用来做PPA探索的EDA工具结合,让AI来自动找到最优的芯片设计。AI还能把从一个项目里学到的经验用在未来的项目,大幅提升了芯片的设计效率。基于这些思路,工业界已经在开发类似的产品了。比如Synopsys新思科技就在2020年推出了DSO.ai,它是业界首个AI+EDA的芯片设计解决方案,采用强化学习技术,通过AI来自主搜索设计空间的最佳平衡,不需要人工介入。

这个工具已经在很多芯片大厂落地使用了。比如采用了DSO.ai之后,微软将芯片模块的功耗降低了10%-15%、但性能指标没有下降;意法半导体将PPA的探索效率提升3倍以上;存储芯片大厂SK海力士将芯片面积减小了5%。根据Synopsys的数据,现在DSO.ai已经成功实现超过300次商业流片,这其实也标志着AI能够帮助真正的芯片设计与生产。

除了工业界的工具之外,学术界也有很多探索PPA和设计空间探索的研究工作和开源工具,比如UCLA的丛京生教授团队开发了面向深度学习加速器的AutoDSE和GNNDSE工具等等。这其实也是一个非常热的研究领域,推荐大家关注。

AI辅助芯片测试

芯片完成设计并生产之后,并不是大功告成了。芯片开发者还需要把foundry制造的有缺陷的芯片筛出来。这通常需要把芯片插到特定的测试器设备里,然后运行大量的测试程序。测试的方法就是给芯片输入大量的测试输入,然后看输出是否符合预期。测试输入的数量越多,意味着测试更加全面,但也可能带来更高的测试时间和成本。所以,测试向量的数量不是越多越好,而是在测试效率和各种场景的覆盖率中间找到一个良好的平衡。

这时候AI的能力就又体现出来了,一方面AI可以根据测试的要求,更加精准的自动产生输入;另一方面AI可以不断学习测试指标、设计特性和已经完成的测试之间的关系,对测试输入进行动态调整,用更少的测试向量实现更高的覆盖率,从而减少测试时间和资源。比如Synopsys有一个名叫TSO.ai的工具,就实现了上面这些功能。根据他们的数据,可以将的平均数量减少20%到30%。

能否用AI设计一颗完整芯片?

前面说的都是芯片设计开发的关键环节,以及他们如何与AI进行结合。那么有没有用AI直接设计完整芯片的例子呢?这一步登天目前还有难度,但其实也有国内外的团队在尝试了。比如,纽约大学的学者就用ChatGPT、完全通过对话的方式设计了一颗非常简单的8位处理器芯片。当然从专业的角度来看,这可能只是一个比玩具还简单的例子,计算机领域的大牛、杜克大学的陈怡然老师也说,这更像是一个prompt engineering的功能演示。

不过也有更复杂的AI设计芯片的例子,比如中科院计算所就用AI花了五个小时生成了一个RISC-V处理器芯片「启蒙一号」,它有400万个逻辑门,性能和英特尔的80486相当。总体来看,AI设计完整芯片的能力还比较有限,但这或许也是芯片发展的下一波机遇。

对于各家芯片大厂来说,他们也在开始尝试将AI引入芯片设计的全流程,比如AMD已经在设计测试和验证阶段采用AI,英伟达CEO老黄也表示,芯片制造会是AI的理想应用。为此,EDA工具也在不断进化,再拿Synopsys举例,他们也推出了面向芯片开发全流程的Synopsys.ai,它构建了一个基于AI的全栈式EDA平台,覆盖从架构设计到制造的整个设计流程,也集成了名叫Data Analytics.da的AI大数据分析功能。事实上,2020年发布首个AI驱动的芯片设计方案DSO.ai时,Synopsys的市值是200多亿美元;三年之后,随着Synopsys.ai的推出,Synopsys的市值一路突破八百亿美元。

将EDA和AI进行结合,已经成为未来芯片设计的新范式。

回到一个很多人都很关心的问题,人工智能到底会不会取代芯片工程师?如果AI学会了设计芯片,未来会不会出现像天网那样的超级智能呢?

从前面的介绍不难看到,人工智能主要用来帮助自动寻找和探索最优解,简化和加速重复的任务,并且主要适用于有明确规则的应用领域。相比之下,人类工程师和科学家更擅长设计、创意,或者从微小甚至不相关的领域产生灵感。就像一个从树上掉下来的苹果,会启发牛顿创造出物理学的基础理论一样,对于芯片来说,AI已经带来了一场新的革命。它帮助芯片工程师分担了重复性的芯片设计、验证和测试任务,从而让人们更专注于擅长的事情:创新。

当AI开始设计芯片,阁下该如何应对?其实AI和人会形成很好的互补,AI也会极大提升人们探索新知的能力和效率。而芯片,这个源自于沙子、又汇聚人类最先进知识的小东西,未来或许将会是人类和AI联合创作的艺术品。

关于AI造芯到底靠不靠谱你怎么看,也欢迎评论区说说你的看法。

(注:本文仅代表作者个人观点,与任职单位无关。)