智能EDA海潮即未来袭,ChatGPT若何助力设想芯片
机器之心专栏
做者:常开颜(中科院计算所处置器全国重点尝试室博士生)
除了人机对话,ChatGPT 的代码生成才能或许能让它在 EDA 范畴大显神通。
提到 ChatGPT,你会想到什么?提到芯片,你又会想到什么?能够把你脑海中浮现的第一个词记下来,看完那篇文章,必定会改动你的观点。假设你是一个科技喜好者,那么你的第一印象是 ChatGPT 是一个高智能的对话模子,能够和人对话,而芯片财产是个复杂的整体,不行有上层的系统构造设想者,还有底层流片的工程师。你或许不会把两者连系起来,因为两者看起来风马牛不相及。
但现实上,ChatGPT 模子独有的代码生成才能极大地加速了设想芯片的速度。由传统 EDA(电子设想主动化)向智能 EDA 的转型海潮即将开启,今天那篇文章,我们就来一窥 ChatGPT 驱动下传统 EDA 是若何演酿成智能 EDA 的,ChatGPT 是若何驱动芯片设想财产链的立异。
起首我们来看 ChatGPT 在芯片财产前沿上的一个利用:量子掌握处置器是量子计算机的核心掌握部门。用 ChatGPT 合成的一个量子掌握处置器的代码如下所示。
module QuantumControlProcessor (
input clk,
input reset,
input [7:0] instruction,
input [7:0] control,
output reg [7:0] qubit_pulse,
output reg [7:0] timing_pulse
// 此处因为篇幅原因省略实现
endmodule
现实上那段代码也许会有些小问题,好比 ChatGPT 其实不能很好地实现时序的掌握,会呈现浪费时钟周期的现象,但是那段代码能够准确编译,而且是一个有效的设想计划。也许你会很惊异,那是怎么做的呢?如许做有什么前景呢?本文接下来的部门会给你谜底。
ChatGPT 可能对芯片设想流程带来的改动
ChatGPT 将为芯片行业供给足够的可复用代码
芯片行业需要的浩荡设想代码量亟需一个高效的开发东西。芯片设想是一个需要大量代码堆砌的行业,好比阿里的玄铁 OpenC910 的核心开源代码就有 351KLOC 摆布。如图 1 所示,工业界一般从最顶端的 verilog 起头设想,利用 EDA 的前端和后端东西生成邦畿。verilog 的编写需要设想时序,凡是较为复杂,因而 ChatGPT 生成那一块的代码能够降低很大的人力成本。芯片的时序要求较为严厉,因而也有大量的功用相对固定的时序相关模块,好比 AXI 接口、FIFO 等。那些模块都能够利用 ChatGPT 来降低人力成本。固然目前已经有 Chisel、Spatial、MyHDL 等新的硬件设想语言,但是那些语言很大水平上受造于宿主语言的限造,也无法用接近天然语言的体例描述电路。
展开全文
图 1:智能 EDA 和传统 EDA 流程图
ChatGPT 在代码生成方面展现出了优良的表达才能。只需要给它一个使命提醒,就能够主动生成对应的代码。比拟软件和算法的合成而言,因为硬件设想代码其实不像软件营业代码具有场景多样性,而且其参数化和时序掌握相对人类的认知才能固然复杂,但是有固定的形式能够遵照,因而 ChatGPT 做硬件设想代码主动生成的优势更为明显。它关于已经有的硬件具有很好的回纳才能,可以准确地提炼出设想模板中可参数化的设置装备摆设点。
笔者的批示教师中科院计算所副研究员王颖博士认为,短期内即使是一个完全行业化的 ChatGPT 版本也无法带来抱负中的全主动化设想才能,但是共同云化 EDA 的趋向,有看快做为一个设想助手大幅提拔设想验证效率并降低开发门槛,出格关于教学工做将带来重要改动,此外,ChatGPT 在各项流程中表示出来的主动化程度,eda 范畴并不是没有比他更好的 SOTA 点手艺,只是在完全性和交互天然上 ChatGPT 有天然的优势。最初,ChatGPT 验证了大模子在主动化芯片设想范畴的潜力,可以驱动开发者进一步地在此之上设想 Prompt 范式,从而存在进一步提拔设想的功用准确度和生成芯片的性能的空间。
ChatGPT 在芯片设想范畴的智力程度远超之前的类似工做
ChatGPT 实的有替代人工的准确性吗?
ChatGPT 和之前更好的代码主动生成的办法比起来好了几呢?
能够把之前的代码生成办法分为三类,一类是以编程语言社区为代表的基于规则 [11,12,13] 的办法,第二类是基于测试用例的生成办法 [5, 6, 7, 8, 9, 10],第三类是以天然语言处置社区为代表的基于文本和模子的生成办法 [1, 2, 3, 4]。
表:比力 OpenAI 两种最新模子用于代码生成
ChatGPT 和 CodeX 都是 OpenAI 公司基于 GPT-3 研发的模子,从上面的阐发中能够看出,ChatGPT 的范畴更广,而且 Copilot 的用处单一,仅仅为代码补全。那就为基于 ChatGPT 开发智能代码相关东西供给了更宽广的空间。
ChatGPT 极大地驱动了智能 EDA 手艺的开展
在 ChatGPT 呈现之前,就有许多主动化代码生成体例,他们为什么不克不及够驱动智能 EDA 手艺呢?
ChatGPT 在芯片设想代码上有一系列潜在的利用
ChatGPT 可以远远地超越传统办法,而且它能够做到零样本进修(Zero-shot learning),比拟传统的法式合成其实不需要专门的操练(因为 OpenAI 已经完成了),而且共同详尽的功用描述,他浩荡的常识储蓄也能够使能高准确率的代码生成。如表 1 所示,ChatGPT 将会逐步演变成芯片前端的主动化流程中极为关键的一步,在将来很有可能演酿成为继 HLS 创始 C 语言设想芯片后的又一种新的范式。在后文,我们将会介绍若何利用 ChatGPT 做 Verilog 的代码生成。
表 1:ChatGPT 在芯片主动生成各个范畴的创始性立异(以 Hardware Design Language 为例,软件语言能够参照阐发)
若何利用 ChatGPT 生成芯片代码
与芯片设想相关的法式合成办法包罗两类,高条理法式生成和时序相关硬件描述代码生成。高条理法式生成能够生成 HLS 等不具有显式时序掌握的 C/C++ 代码等,而低条理法式生成能够生成具有显式时序掌握的 Verilog 代码。因为 HLS 在现实工业界设想芯片时较少摘用,因而我们摘用 Verilog 做为次要的目标语言。关于 ChatGPT 而言,我们以天然语言描述做为输进,就能够获得契合要求的芯片描述代码。详细来说,应该若何做呢?我们以 Verilog 为例介绍若何用 ChatGPT 生成代码。
基于 ChatGPT 的通用生成步调
act as a professional verilog programmer
因为 ChatGPT 是个通用的代码生成东西,而 Verilog 是个公用范畴,我们需要先 “催眠” ChatGPT,使得它可以生成 Verilog 法式。向 ChatGPT 中输进下面的 prompt,之后的生成城市是以 Verilog 代码为根底的。
我们接下来的部门都是以片上彀络 NoC 模块为例论述代码生成办法的通用步调。
因为版面有限,那里就不列举 ChatGPT 生成的完全代码了。但是我们能够看出,On-Chip Network 那个关键字有良多种差别的理解体例,ChatGPT 拔取了基于总线的理解体例。假设我们想要其他的语义理解体例,我们就应该摸索出差别的输进即发问体例。
组合生成模块步调
前面只是生成了有限的模块,但是能否把模块组合起来呢?我们的目标是用两个本来不存在的 strange module 组合成一个 no strange module。下面生成一个顶层模块 strange,底层有两个加法器,他们的输出毗连着一个减法器,我们把那个工具喊做 strange module。
ChatGPT 为什么能在芯片生成范畴获得胜利
ChatGPT 可以在芯片合成上获得胜利应该回功于它对代码的理解和对天然语言语义的准确辨识。
ChatGPT 生成芯片设想就万事具备了吗
固然 ChatGPT 模子能够完成芯片设想前端的部门工做,但是还存在如下挑战,需要人工和 EDA 东西链的结合调优才气生成一个契合标准的芯片。
硅工行业若何应对智能 EDA 危机
ChatGPT 做为一种智能 EDA 流程,既是一个危机,也是一种机遇。它可以替代一部门 EDA 前端的工做,但是因为 EDA 后端很大水平上依靠于确定性和对细节的阐发,才气得到更好的优化构造,因而关于撑持 EDA 后端优化的工做存在困难。但是它也创造了新的岗位,好比可能呈现的模子提醒工程师,错误批改工程师。
图 5:根据工程师岗位区分的可替代
为了更清晰地分类差别岗位上硅工行业的可替代性趋向,我们根据 EDA 的流程自顶向下划分了四个阶段,即系统构造设想阶段 - 芯片代码实现阶段 - 芯片 PPA 调优阶段 - 芯片验证阶段如图 5 所示。重视那里的芯片调优指的是在前端通过改动部门硬件构造和算法实现的调优,因而列举在芯片验证前面。蓝色方框代表很难替代的岗位,黄色方框代表随便被替代岗位,灰色方框代表新增加的岗位。下面阐发根据详细流程区分的替代性,显示为什么有的岗位的工程师随便被 ChatGPT 替代,而有的岗位的工程师很难被 ChatGPT 替代。
中科院计算所智能计算中心主任韩银和研究员认为 ChatGPT 不但能辅助加速芯片设想流程,也对芯片自己带来一系列挑战,也许是当下热点如存算一体、芯粒集成以及大芯片架构等手艺带来迫切期待的杀手级利用。
较难替代的流程
新增加的流程
错误批改工程师。因为 ChatGPT 生成的法式可能存在细节上的问题,有的处所不契合时序或是模块间的毗连原则,因而就需要错误批改工程师对其批改。
模子提醒工程师。ChatGPT 生成代码的量量和输进的 prompt 密切相关,因而需要有一部门熟悉 ChatGPT “脾性” 的人专门设想 prompt 以便生成契合标准的代码。
将来的开展趋向
在智能 EDA 的海潮下,有些岗位不成制止地会被替代,那么将来会以什么样的次序被替代呢?畴前后端散布上看,后端因为有邦畿设想等精巧化的使命,因而不成替代性较强。关于前端来说,更先替代的是芯片实现中的模块工程师,因为从上面生成芯片的理论中能够发现,根本模块代码生成那一部门最为曲看。在它之后会呈现的替代岗位有组件设想工程师,那一部门会在工程师们熟悉用 ChatGPT 组拆模块后替代。关于其他的工程师而言,ChatGPT 更多地只是具有辅助价值,而不克不及完全地替代。
因而我们能够看到,越是上层的,涉及到架构笼统的部门越不随便替代;越是底层的,涉及准确性的部门也不随便被替代。中间部门的替代挨次将会是自底向上,从根本模块向上层组件逐次地替代。
政策上要侵占智能 EDA 先机
自力更生与足够吸收世界前沿并不是不矛盾。传统 EDA 和大模子在 OpenAI 首发而其他公司尚未跟上当然有着复杂的原因。但是政策上仍然需要分出一只手,让部门过热本钱从处理传统 EDA 和大模子问题的项目中抽出,鼓舞企业挠住智能 EDA 开展初期行业壁垒小的期间,勇猛步进业内,构造出新的手艺壁垒。只要如许,才气处理不竭被新手艺代替的问题。不然,过热本钱涌进已经成熟的财产会形成本钱回报率下降,同时立异手艺无法获得更高的资金撑持,招致立异型企业不敢试错,无形中增加了立异型企业的试错成本,使得立异型企业更倾向于市场证明成熟的手艺。因而,政策上应该恰当鼓舞企业基于 ChatGPT 那类大模子做衍生手艺,出格是在大模子已经展现出强大的代码生成才能之上,基于智能 EDA 手艺的企业更应该侵占先机。
本钱市场的投资目光应该由大模子自己向其衍生手艺转向
在信息手艺范畴,先辈手艺不竭从通用走向公用,逐步走向基于之前手艺的衍生手艺,以处置器设想范畴最为明显。在上个世纪时,CPU 火爆一时,造出了高性能的计算机,本世纪初,GPU 逐渐时髦,驱动了游戏的开发,比来十年,NPU 起头走上舞台,使能高能效的神经收集操练和推理。由此推知,当大模子成熟以后,其衍生手艺也会在之后几年走上舞台。
智能 EDA 手艺是大模子手艺的衍生手艺。固然衍生手艺投资在刚起头看其实不占优势,但是从经济上看,曲到那种手艺首发并构成手艺壁垒时其投资回报率会较高。跟着 ChatGPT 那一类大模子手艺的日渐成熟,对企业的投资会呈现边际效应递加的现象。小我投资者和机构投资者应该熟悉到信息手艺的投资法例,渐渐把目光转向大模子的衍生范畴,出格是存眷基于大模子的算法在芯片范畴的利用问题。财产从业人员应该足够操纵我国为人工智能、集成电路范畴设立的大基金优势,积极申报人工智能和 EDA 穿插的基金。因而,无论是从财产政策上看,仍是从投资法例上看,智能 EDA 范畴非常有需要应该成为我国投资者的投资对象。
相关文献
基于文本模子的代码生成
[1] Zhangyin Feng, Daya Guo, Duyu Tang, Nan Duan, Xiaocheng Feng, Ming Gong, Linjun Shou, Bing Qin, Ting Liu, Daxin Jiang, and Ming Zhou. 2020. [CodeBERT: A Pre-Trained Model for Programming and Natural Languages]. In Findings of the Association for Computational Linguistics: EMNLP 2020, pages 1536–1547, Online. Association for Computational Linguistics.
[2] [GRAPHCODEBERT: PRE-TRAINING CODE REPRESENTATIONS WITH DATA FLOW]
[3] [CodeT5: Identifier-aware Unified Pre-trained Encoder-Decoder Models for Code Understanding and Generation]
[4] [UniXcoder: Unified Cross-Modal Pre-training for Code Representation]
基于测试用例的代码生成
[5] Rajeev Alur, Rastislav Bodík, Garvit Juniwal, Milo M. K. Martin, Mukund Raghothaman, Sanjit A. Seshia, Rishabh Singh, Armando Solar-Lezama, Emina Torlak, Abhishek Udupa, [Syntax-guided synthesis], 2013
[6] Peter-Michael Osera, Steve Zdancewic, [Type-and-example-directed Program Synthesis], 2015
[7] John K. Feser, Swarat Chaudhuri, Isil Dillig, [Synthesizing Data Structure Transformations from Input-output Examples], 2015
[8] Armando Solar-Lezama, [Program Synthesis by Sketching], 2008
[9] [Kensen Shi], [Jacob Steinhardt], [Percy Liang], FrAngel: Component-Based Synthesis with Control Structures, POPL, 2019
[10] Yu Feng, Ruben Martins, Yuepeng Wang, Isil Dillig, Thomas W. Reps, Component-based synthesis for complex APIs, [ACM SIGPLAN Notices], 2017
基于逻辑规则的代码生成
[11] Z. Manna and R. Waldinger, "Synthesis: Dreams → Programs," in IEEE Transactions on Software Engineering, vol. SE-5, no. 4, pp. 294-328, July 1979, doi: 10.1109/TSE.1979.234198.
[12] Bernd Finkbeiner and Sven Schewe, Bounded synthesis, in Int J Softw Tools Technol Transfer, (2013), 15:519–539, DOI: 10.1007/s10009-012-0228-z
[13] Peter Faymonville, Bernd Finkbeiner, and Leander Tentrup, BoSy: An Experimentation Framework for Bounded Synthesis,CAV 2017