随着人工智能最近几年的进步,如何将人工智能应用到芯片设计也成为了一个半导体行业热门的话题。而随着相关讨论的展开,人工智能对于芯片行业赋能的切入点也越来越多地聚焦在了EDA领域,即如何利用人工智能强大的能力来帮助更高效地实现芯片设计、验证和测试。人工智能从2016年开始腾飞以来,有两个标志性的事件,即使用强化学习模型并击败李世石的AlphaGO,以及最近横空出世,基于大语言模型技术的ChatGPT。有趣的是,这两个技术也恰恰是人工智能为为EDA赋能的关键技术。
在EDA领域,人工智能得到最多关注的领域是如何实现设计的优化。这里的设计优化,指的是如何在一个搜索空间巨大的设计空间中,高效地搜索到*解。这里的具体任务可以包括*布局布线,以及验证和测试的输入组合等。
对于这些问题的人工智能解决方案,目前工业界大致又可以分为两类。*类是规模足够大并且自身就有强大人工智能研发能力以及芯片设计流程定制化能力的巨头。这类巨头公司可以有能力自主研发相关的人工智能技术并且应用在自研的芯片设计流程中,以改善设计流程的效率和芯片质量。在这类公司中,*有代表性的就是谷歌。谷歌拥有全球最*的人工智能团队,同时也拥有自研的芯片TPU,最关键的是谷歌的团队还非常热衷于将人工智能应用在各种新的应用场景,因此谷歌使用人工智能来提升芯片设计也是情理之中。根据谷歌发表在*期刊《Nature》上的论文《A graph placement methodology for fast chip design》,我们知道它已经应用了人工智能来大幅改善自研芯片布局布线的能力,其使用强化学习模型的布局布线算法实现的性能已经超越了人工布局布线的结果,最关键的是该技术已经使用在了多代谷歌TPU中。换句话说,谷歌使用人工智能来设计自研的人工智能芯片(TPU),从而用来进一步训练更强大的人工智能来设计更下一代的人工智能芯片——这样的正向循环目前看起来至少在谷歌这边已经是初见端倪。
(相关资料图)
除了谷歌之外,Nvidia在人工智能布局布线技术上也有了不少积累,其研究团队上个月发表的研究结果表明,其自研的人工智能算法DREAMPlace/AutoDMP可以在短短2.5小时内完成256核RISC-V处理器的布局任务,其性能并且超越了其他的相关算法。当然,这里的人工智能模型是运行在了Nvidia强大的多卡GPU服务器上面,虽然Nvidia并没有明确表示这个自研人工智能布局算法的商用化情况但是我们认为当它足够成熟后非常有希望能改善下一代Nvidia GPU的设计效率和质量。
除了自研芯片和AI算法的巨头之外,另一个业界相关领域有重要动作的就是传统的EDA厂商。无论是Cadence还是Synopsys都已经宣布大力投入人工智能研发数年之久,而在最近Cadence 和Synopsys都有相关的产品发布。在不久前举办的SNUG 2023上,Synopsys发布了称为Synopsys.ai的由人工智能驱动的新一代EDA工具,其中包括了用于优化设计的DSO.ai,用于高效生成验证向量并提高debug效率的VSO.ai,以及用于生成测试向量的TSO.ai。根据Synopsys的官方数据,DSO.ai主要用于提升设计空间的优化从而实现PPA的提升,目前已经有160个使用DSO.ai流片的芯片,DSO.ai可以实现多达15%的功率降低,并可以大大降低设计时间(多达三倍)。而使用VSO.ai和TSO.ai,用户也可以大大降低验证和测试所需要的时间并提升效率。Cadence则也在四月初发布了Allegro X,其中的人工智能特性可以自动高效生成PCB设计的布局和关键信号的布线,从而减少设计时间。
如果说设计/验证优化是传统EDA工具最关注的领域的话,那么另一个重要但是并没有在传统EDA工具中得到足够重视的就是设计输入,尤其是数字逻辑设计相关的RTL代码编写辅助。这个领域之前一直被认为使用任何一个文本编辑器都可以做,因此一直不在EDA公司的视野之内;但是最近,随着大语言模型的火热以及使用大语言模型为Python等计算机代码编写提供辅助的copilot得到越来越多的应用,事实上在RTL代码编写中使用类似的copilot技术也正在成为一个潜在的热门方向。Copilot技术根据用户编写代码的上下文自动提示和补全可能的代码,从而减少用户需要输入的代码量并且减少用户代码编写过程中出现bug的可能性,从而大大增加用户代码编写的效率,未来随着能力的提升甚至可以越来越多地自动完成RTL代码编写,从而用户只需要给出一个简短的提示(prompt),人工智能就可以给出一份代码草稿供用户使用。
综上,目前EDA行业已经正式进入了AI时代,未来我们可望看到更多人工智能赋能的EDA出现。
人工智能EDA背后的核心技术
如前所述,人工智能赋能EDA背后的核心技术分别是两大里程碑式的技术,即强化学习和大语言模型。
首先,强化学习主要用于EDA中的优化问题,包括最有布局布线,以及测试/验证向量生成等。这类问题的主要挑战点在于参数的优化空间巨大,如果使用暴力搜索遍历所有可能的参数组合并不现实(例如在布局问题中,每一个设计中的逻辑门都可以放在几乎版图上的任何地方,对于目前逻辑门数量规模轻易就上数千万的设计来说暴力搜索恐怕等到地球上的生物灭绝也无法完成)。
传统EDA使用的是启发式的算法例如退火算法,应当说这类算法是取得了巨大的成功,它将布局布线问题的计算时间变得可控,从而创造了今天芯片领域的繁荣。启发式算法的主要优势是计算速度较快,对于计算需求量较小,但是未必能找到全局*的设计参数。另一方面,强化学习的主要原理是从数据中学习不同参数组合的结果,从而能以数据驱动的方式学习到较为高效的参数空间搜索方法,如果算法设计得当而且训练数据足够好的话,可以实现比启发式算法更好的效果。
2016年Deepmind的AlphaGo击败李世石使用的就是强化学习模型,该模型从现有的海量围棋对弈数据中进行学习,从而能够实现对人类的超越。事实上,围棋的优化问题和EDA的优化问题相类似,都是在一个巨大的搜索空间(例如围棋中每一步都有非常高的自由度导致了很大的搜索空间,而EDA中布局布线和测试/验证向量的生成也是类似)中以高效的形式找到*解,因此事实上在AlphaGO获得成功的那段时间,学术界就已经有不少关于将强化学习使用在EDA领域的探索,而到了今天我们终于看到强化学习技术落地在了EDA领域中。
除了强化学习之外,另一个关键的人工智能技术是大语言模型,它对于EDA行业的主要帮助在于能够帮助工程师能加快代码编写的速度并降低出错几率。以ChatGPT为代表的大语言模型(Large Language Model,LLM)通过从海量的文本中学习规律,从而可以理解用户以自然语言表达的需求,并且生成用户可以理解的自然语言文本。这里的“自然语言”不仅包括了我们平时说的语言,还包括了我们编写的编程语言,包括在电路设计中常用的Verilog等。目前,基于LLM的代码编写辅助工具中最成功的是Github的copilot,它可以帮助用户自动完成代码(例如用户在输入一行代码的前几个字符后,copilot就能预估用户想要编写的是什么样的代码并且提示用户自动完成)以及自动寻找代码中的bug。我们认为,通过将大语言模型在已有的RTL代码上进行微调,未来非常有希望能出现一个帮助芯片设计工程师快速完成代码编写的工具,从而大大提升工程师的效率。
人工智能会如何影响工程师的工作?
人工智能驱动的EDA毫无疑问将会进一步推动半导体行业发展,然而芯片工程师会不会被人工智能抢了饭碗呢?我们认为,总体来说就如同之前EDA出现并没有抢了当年的芯片工程师饭碗一样,下一代人工智能赋能的EDA也主要是一种提高效率的工具,并不会取代人类工程师。
首先,我们从前端设计领域说起。对于芯片来说,人工智能EDA主要能帮助的是使用大语言模型来提升数字逻辑设计的代码编写效率和质量,因此并不存在取代的关系,而是提供了一个更加顺手的工具。对于数字设计工程师来说,其最本质的工作是把完成电路设计,例如将一个大的系统拆分为多个较小的功能模块,完成每个模块的功能和接口定义,并且使用代码实现这些模块。目前来看,人工智能大语言模型主要还是帮助完成代码,而并非直接写代码;而且即使在未来人工智能能自动写代码了,它并不能取代数字设计工程师的本质工作,即完成数字模块的定义和设计。
在后端设计领域,基于强化学习的人工智能已经能大幅提升布局布线的效率和质量。目前,大多数芯片的设计流程是首先由工程师人工完成高层面的布局(floorplan),在预估性能能达到目标之后,再由EDA工具进行下一步的具体布局和布线,并且由工程师进行验证和微调。我们认为,随着人工智能实现的布局布线效率和质量进一步提升,floorplan的工作有可能越来越多地交给EDA工具来做,工程师的职责越来越多的变为给EDA工具提供合理的constraint和优化目标,并且验证EDA工具生成的设计的质量。从这个角度来说,人工智能确实有可能会做更多目前工程师手工做的工作,但是这并不代表人工智能会取代这些工程师,而是可以让这些工程师有了另外的职责(即给工具提供合理的输入并验证输出),并且提升整体的效率。对于其他的布局布线流程来说,人工智能更多的是提供一个质量更高的工具,并不会取代工程师。
事实上,人工智能有可能会给芯片行业提供更多的岗位。我们知道,人工智能模型训练需要大量的数据,而且人工智能模型对于不同的设计可能会需要不同的微调训练。因此,芯片设计行业可能会需要更多能有针对性优化人工智能的工程师。
人工智能EDA带来的行业动态
最后,我们分析一下人工智能未来会如何进一步赋能EDA。
首先,芯片设计的规模越来越大,从另一个角度来看也就是设计的搜索空间也在越来越大。此外,随着摩尔定律越来越接近物理极限,整体行业对于芯片设计PPA的要求也越来越高。因此,使用人工智能来驱动芯片设计性能的进一步提升会得到越来越多的应用,而且我们认为在设计复杂度和自由度越高的地方,人工智能就能起到更大的作用。这些领域包括高级封装,尤其是3D封装;以及移动芯片、高性能计算芯片等对于芯片设计PPA有非常高要求的领域——这也是为什么我们看到谷歌和Nvidia这些主打高性能计算芯片的公司都在人工智能EDA领域有很大的投入,未来我们预计会有更多的这类公司使用人工智能EDA来改善PPA。
此外,另一个值得关注的要点是人工智能可能会给行业带来新的变化,就是人工智能需要大量的数据去训练,而目前来看芯片设计的数据都是每个公司的知识产权,如何来确保训练出*的模型同时又确保知识产权不会被侵犯也是一个需要行业处理的问题。我们认为,拥有大量设计积累的大公司会是*批使用人工智能EDA的客户,因为他们基于自己的设计数据已经能训练出性能不错的模型。至于设计积累较少的中小型公司或者成力时间较短的初创公司如何来使用人工智能EDA将会是一个值得整个行业思考的问题,例如是否会出现一些数据共享的组织,用来分享一些并不怎么敏感的设计来一起训练模型并共同使用,还是会有一些基于加密计算训练的方法可以在尽可能保护设计知识产权的同时让模型能使用尽可能多的数据来完成训练,都是有可能的方向。