智能EDA浪潮即將來襲,ChatGPT如何助力設(shè)計芯片
提到 ChatGPT,你會想到什么?提到芯片,你又會想到什么?可以把你腦海中浮現(xiàn)的第一個詞記下來,看完這篇文章,肯定會改變你的看法。如果你是一個科技愛好者,那么你的第一印象是 ChatGPT 是一個高智能的對話模型,可以和人對話,而芯片產(chǎn)業(yè)是個復(fù)雜的整體,不止有上層的體系結(jié)構(gòu)設(shè)計者,還有底層流片的工程師。你或許不會把兩者結(jié)合起來,因為兩者看起來風(fēng)馬牛不相及。
但實際上,ChatGPT 模型獨有的代碼生成能力極大地加速了設(shè)計芯片的速度。由傳統(tǒng) EDA(電子設(shè)計自動化)向智能 EDA 的轉(zhuǎn)型浪潮即將開啟,今天這篇文章,我們就來一窺 ChatGPT 驅(qū)動下傳統(tǒng) EDA 是如何演變成智能 EDA 的,ChatGPT 是如何驅(qū)動芯片設(shè)計產(chǎn)業(yè)鏈的創(chuàng)新。
首先我們來看 ChatGPT 在芯片產(chǎn)業(yè)前沿上的一個應(yīng)用:量子控制處理器是量子計算機的核心控制部分。用 ChatGPT 合成的一個量子控制處理器的代碼如下所示。
實際上這段代碼也許會有些小問題,比如 ChatGPT 并不能很好地實現(xiàn)時序的控制,會出現(xiàn)浪費時鐘周期的現(xiàn)象,但是這段代碼可以正確編譯,并且是一個有效的設(shè)計方案。也許你會很驚奇,這是怎么做的呢?這樣做有什么前景呢?本文接下來的部分會給你答案。
ChatGPT 可能對芯片設(shè)計流程帶來的改變
ChatGPT 將為芯片行業(yè)提供足夠的可復(fù)用代碼
芯片行業(yè)需要的巨大設(shè)計代碼量亟需一個高效的開發(fā)工具。芯片設(shè)計是一個需要大量代碼堆砌的行業(yè),比如阿里的玄鐵 OpenC910 的核心開源代碼就有 351KLOC 左右。如圖 1 所示,工業(yè)界一般從最頂端的 verilog 開始設(shè)計,使用 EDA 的前端和后端工具生成版圖。verilog 的編寫需要設(shè)計時序,通常較為復(fù)雜,因此 ChatGPT 生成這一塊的代碼可以降低很大的人力成本。芯片的時序要求較為嚴(yán)格,因此也有大量的功能相對固定的時序相關(guān)模塊,比如 AXI 接口、FIFO 等。這些模塊都可以使用 ChatGPT 來降低人力成本。雖然目前已經(jīng)有 Chisel、Spatial、MyHDL 等新的硬件設(shè)計語言,但是這些語言很大程度上受制于宿主語言的限制,也無法用接近自然語言的方式描述電路。
ChatGPT 在代碼生成方面顯示出了優(yōu)秀的表達能力。只需要給它一個任務(wù)提示,就可以自動生成對應(yīng)的代碼。相比軟件和算法的合成而言,由于硬件設(shè)計代碼并不像軟件業(yè)務(wù)代碼具有場景多樣性,并且其參數(shù)化和時序控制相對人類的認(rèn)知能力雖然復(fù)雜,但是有固定的模式可以遵循,因此 ChatGPT 做硬件設(shè)計代碼自動生成的優(yōu)勢更為明顯。它對于已經(jīng)有的硬件具有很好的歸納能力,能夠準(zhǔn)確地提煉出設(shè)計模板中可參數(shù)化的配置點。
筆者的指導(dǎo)教師中科院計算所副研究員王穎博士認(rèn)為,短期內(nèi)即便是一個完全行業(yè)化的 ChatGPT 也無法帶來理想中的全自動化設(shè)計能力,但是配合云化 EDA 的趨勢,有望快作為一個設(shè)計助手大幅提升設(shè)計驗證效率并降低開發(fā)門檻,尤其對于教學(xué)工作將帶來重要改變,此外,ChatGPT 在各項流程中表現(xiàn)出來的自動化水平,eda 領(lǐng)域并非沒有比他更好的 SOTA 點技術(shù),只是在完整性和交互自然上 ChatGPT 有天然的優(yōu)勢。最后,ChatGPT 驗證了大模型在自動化芯片設(shè)計領(lǐng)域的潛力,能夠驅(qū)動開發(fā)者進一步地在此之上設(shè)計 Prompt 范式,從而存在進一步提升設(shè)計的功能準(zhǔn)確度和生成芯片的性能的空間。
ChatGPT 在芯片設(shè)計領(lǐng)域的智力水平遠(yuǎn)超之前的相似工作?
ChatGPT 真的有替代人工的準(zhǔn)確性嗎?
ChatGPT 和之前最好的代碼自動生成的方法比起來好了多少呢?
可以把之前的代碼生成方法分為三類,一類是以編程語言社區(qū)為代表的基于規(guī)則 [11,12,13] 的方法,第二類是基于測試用例的生成方法 [5, 6, 7, 8, 9, 10],第三類是以自然語言處理社區(qū)為代表的基于文本和模型的生成方法 [1, 2, 3, 4]。
表:比較 OpenAI 兩種最新模型用于代碼生成
?ChatGPT 和 CodeX 都是 OpenAI 公司基于 GPT-3 研發(fā)的模型,從上面的分析中可以看出,ChatGPT 的范圍更廣,并且 Copilot 的用途單一,僅僅為代碼補全。這就為基于 ChatGPT 開發(fā)智能代碼相關(guān)工具提供了更廣闊的空間。
ChatGPT 極大地驅(qū)動了智能 EDA 技術(shù)的發(fā)展?
在 ChatGPT 出現(xiàn)之前,就有許多自動化代碼生成方式,他們?yōu)槭裁床荒軌蝌?qū)動智能 EDA 技術(shù)呢?
ChatGPT 在芯片設(shè)計代碼上有一系列潛在的應(yīng)用
ChatGPT 能夠遠(yuǎn)遠(yuǎn)地超越傳統(tǒng)方法,并且它可以做到零樣本學(xué)習(xí)(Zero-shot learning),相比傳統(tǒng)的程序合成并不需要專門的訓(xùn)練(因為 OpenAI 已經(jīng)完成了),并且配合細(xì)致的功能描述,他龐大的知識儲備也可以使能高正確率的代碼生成。如表 1 所示,ChatGPT 將會逐漸演變?yōu)樾酒岸说淖詣踊鞒讨袠O為關(guān)鍵的一步,在未來很有可能演變成為繼 HLS 開創(chuàng) C 語言設(shè)計芯片后的又一種新的范式。在后文,我們將會介紹如何使用 ChatGPT 做 Verilog 的代碼生成。
表 1:ChatGPT 在芯片自動生成各個領(lǐng)域的開創(chuàng)性創(chuàng)新(以 Hardware Design Language 為例,軟件語言可以參照分析)
如何使用 ChatGPT 生成芯片代碼
與芯片設(shè)計相關(guān)的程序合成方法包含兩類,高層次程序生成和時序相關(guān)硬件描述代碼生成。高層次程序生成可以生成 HLS 等不具有顯式時序控制的 C/C++ 代碼等,而低層次程序生成可以生成具有顯式時序控制的 Verilog 代碼。由于 HLS 在實際工業(yè)界設(shè)計芯片時較少采用,因此我們采用 Verilog 作為主要的目標(biāo)語言。對于 ChatGPT 而言,我們以自然語言描述作為輸入,就可以獲得符合要求的芯片描述代碼。具體來說,應(yīng)該如何做呢?我們以 Verilog 為例介紹如何用 ChatGPT 生成代碼。
基于 ChatGPT 的通用生成步驟
因為 ChatGPT 是個通用的代碼生成工具,而 Verilog 是個專用領(lǐng)域,我們需要先 “催眠” ChatGPT,使得它能夠生成 Verilog 程序。向 ChatGPT 中輸入下面的 prompt,之后的生成都會是以 Verilog 代碼為基礎(chǔ)的。
我們接下來的部分都是以片上網(wǎng)絡(luò) NoC 模塊為例闡述代碼生成方法的通用步驟。
由于版面有限,這里就不列舉 ChatGPT 生成的完整代碼了。但是我們可以看出,On-Chip Network 這個關(guān)鍵字有很多種不同的理解方式,ChatGPT 選取了基于總線的理解方式。如果我們想要其他的語義理解方式,我們就應(yīng)該探索出不同的輸入即提問方式。
組合生成模塊步驟
前面只是生成了有限的模塊,但是能否把模塊組合起來呢?我們的目標(biāo)是用兩個原本不存在的 strange module 組合成一個 no strange module。下面生成一個頂層模塊 strange,底層有兩個加法器,他們的輸出連接著一個減法器,我們把這個東西叫做 strange module。
ChatGPT 為什么能在芯片生成領(lǐng)域取得成功
ChatGPT 能夠在芯片合成上取得成功應(yīng)該歸功于它對代碼的理解和對自然語言語義的準(zhǔn)確辨識。
ChatGPT 生成芯片設(shè)計就萬事具備了嗎?
雖然 ChatGPT 模型可以完成芯片設(shè)計前端的部分工作,但是還存在如下挑戰(zhàn),需要人工和 EDA 工具鏈的聯(lián)合調(diào)優(yōu)才能生成一個符合規(guī)范的芯片。
硅工行業(yè)如何應(yīng)對智能 EDA 危機?
ChatGPT 作為一種智能 EDA 流程,既是一個危機,也是一種機遇。它能夠替代一部分 EDA 前端的工作,但是由于 EDA 后端很大程度上依賴于確定性和對細(xì)節(jié)的分析,才能得到更好的優(yōu)化結(jié)構(gòu),因此對于支持 EDA 后端優(yōu)化的工作存在困難。但是它也創(chuàng)造了新的崗位,比如可能出現(xiàn)的模型提示工程師,錯誤修正工程師。
圖 5:按照工程師崗位區(qū)分的可替代
為了更清晰地分類不同崗位上硅工行業(yè)的可替代性趨勢,我們按照 EDA 的流程自頂向下劃分了四個階段,即體系結(jié)構(gòu)設(shè)計階段 - 芯片代碼實現(xiàn)階段 - 芯片 PPA 調(diào)優(yōu)階段 - 芯片驗證階段如圖 5 所示。注意這里的芯片調(diào)優(yōu)指的是在前端通過改動部分硬件結(jié)構(gòu)和算法實現(xiàn)的調(diào)優(yōu),因此列舉在芯片驗證前面。藍色方框代表很難替代的崗位,黃色方框代表容易被替代崗位,灰色方框代表新增加的崗位。下面分析按照具體流程區(qū)分的替代性,揭示為什么有的崗位的工程師容易被 ChatGPT 替代,而有的崗位的工程師很難被 ChatGPT 替代。
中科院計算所智能計算中心主任韓銀和研究員認(rèn)為 ChatGPT 不光能輔助加速芯片設(shè)計流程,也對芯片本身帶來一系列挑戰(zhàn),也許是當(dāng)下熱點如存算一體、芯粒集成以及大芯片架構(gòu)等技術(shù)帶來迫切等待的殺手級應(yīng)用。
較難替代的流程
新增加的流程
- 錯誤修正工程師。由于 ChatGPT 生成的程序可能存在細(xì)節(jié)上的問題,有的地方不符合時序或是模塊間的連接標(biāo)準(zhǔn),因此就需要錯誤修正工程師對其修正。
- 模型提示工程師。ChatGPT 生成代碼的質(zhì)量和輸入的 prompt 緊密相關(guān),因此需要有一部分熟悉 ChatGPT “脾氣” 的人專門設(shè)計 prompt 以便生成符合規(guī)范的代碼。
未來的發(fā)展趨勢?
在智能 EDA 的浪潮下,有些崗位不可避免地會被替代,那么未來會以什么樣的次序被替代呢?從前后端分布上看,后端由于有版圖設(shè)計等精細(xì)化的任務(wù),因此不可替代性較強。對于前端來說,最先替代的是芯片實現(xiàn)中的模塊工程師,因為從上面生成芯片的實踐中可以發(fā)現(xiàn),基本模塊代碼生成這一部分最為直觀。在它之后會出現(xiàn)的替代崗位有組件設(shè)計工程師,這一部分會在工程師們熟悉用 ChatGPT 組裝模塊后替代。對于其他的工程師而言,ChatGPT 更多地只是具有輔助價值,而不能完全地替代。
因而我們可以看到,越是上層的,涉及到架構(gòu)抽象的部分越不容易替代;越是底層的,涉及正確性的部分也不容易被替代。中間部分的替代順序?qū)亲缘紫蛏?,從基本模塊向上層組件逐次地替代。
政策上要搶占智能 EDA 先機?
自力更生與充分吸取世界前沿并非不矛盾。傳統(tǒng) EDA 和大模型在 OpenAI 首發(fā)而其他公司尚未跟上固然有著復(fù)雜的原因。但是政策上仍然需要分出一只手,讓部分過熱資本從解決傳統(tǒng) EDA 和大模型問題的項目中抽出,鼓勵企業(yè)抓住智能 EDA 發(fā)展初期行業(yè)壁壘小的時期,勇敢步入業(yè)內(nèi),構(gòu)造出新的技術(shù)壁壘。只有這樣,才能解決不斷被新技術(shù)取代的問題。否則,過熱資本涌入已經(jīng)成熟的產(chǎn)業(yè)會造成資本回報率下降,同時創(chuàng)新技術(shù)無法獲得更高的資金支持,導(dǎo)致創(chuàng)新型企業(yè)不敢試錯,無形中增加了創(chuàng)新型企業(yè)的試錯成本,使得創(chuàng)新型企業(yè)更傾向于市場證明成熟的技術(shù)。因此,政策上應(yīng)該適當(dāng)鼓勵企業(yè)基于 ChatGPT 這類大模型做衍生技術(shù),尤其是在大模型已經(jīng)展示出強大的代碼生成能力之上,基于智能 EDA 技術(shù)的企業(yè)更應(yīng)該搶占先機。
資本市場的投資目光應(yīng)該由大模型本身向其衍生技術(shù)轉(zhuǎn)向?
在信息技術(shù)領(lǐng)域,先進技術(shù)不斷從通用走向?qū)S?,逐漸走向基于之前技術(shù)的衍生技術(shù),以處理器設(shè)計領(lǐng)域最為明顯。在上個世紀(jì)時,CPU 火爆一時,造出了高性能的計算機,本世紀(jì)初,GPU 逐步流行,驅(qū)動了游戲的開發(fā),最近十年,NPU 開始走上舞臺,使能高能效的神經(jīng)網(wǎng)絡(luò)訓(xùn)練和推理。由此推知,當(dāng)大模型成熟以后,其衍生技術(shù)也會在之后幾年走上舞臺。
智能 EDA 技術(shù)是大模型技術(shù)的衍生技術(shù)。雖然衍生技術(shù)投資在剛開始看并不占優(yōu)勢,但是從經(jīng)濟上看,直到那種技術(shù)首發(fā)并形成技術(shù)壁壘時其投資回報率會較高。隨著 ChatGPT 這一類大模型技術(shù)的日漸成熟,對企業(yè)的投資會出現(xiàn)邊際效應(yīng)遞減的現(xiàn)象。個人投資者和機構(gòu)投資者應(yīng)該認(rèn)識到信息技術(shù)的投資規(guī)律,漸漸把目光轉(zhuǎn)向大模型的衍生領(lǐng)域,尤其是關(guān)注基于大模型的算法在芯片領(lǐng)域的應(yīng)用問題。產(chǎn)業(yè)從業(yè)人員應(yīng)該充分利用我國為人工智能、集成電路領(lǐng)域設(shè)立的大基金優(yōu)勢,積極申報人工智能和 EDA 交叉的基金。因此,無論是從產(chǎn)業(yè)政策上看,還是從投資規(guī)律上看,智能 EDA 領(lǐng)域十分有必要應(yīng)該成為我國投資者的投資對象。
相關(guān)文獻
基于文本模型的代碼生成
[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
基于邏輯規(guī)則的代碼生成?
[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