提到 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 將為晶片產業提供足夠的可重複使用程式碼
晶片產業所需的龐大設計程式碼量亟需一個高效的開發工具##。晶片設計是一個需要大量程式碼堆砌的產業,例如阿里的玄鐵 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 能够远远地超越传统方法,并且它可以做到零样本学习(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 不光能輔助加速晶片設計流程,也對晶片本身帶來一系列挑戰,或許是當下熱點如存算一體、芯粒整合以及大晶片架構等技術帶來迫切等待的殺手級應用。
較難取代的流程
新增加的流程
未來的發展趨勢
在智慧EDA 的浪潮下,有些職位不可避免地會被替代,那麼未來會以什麼樣的次序被替代呢?從前後端分佈來看,後端由於有版圖設計等精細化的任務,因此不可替代性較強。對於前端來說,最先取代的是晶片實作中的模組工程師,因為從上面生成晶片的實踐中可以發現,基本模組程式碼生成這一部分最為直觀。在它之後會出現的替代崗位有組件設計工程師,這一部分會在工程師們熟悉用 ChatGPT 組裝模組後替代。對其他的工程師而言,ChatGPT 更多地只是具有輔助價值,而不能完全地取代。
因而我們可以看到,越是上層的,涉及到架構抽象的部分越不容易替代;越是底層的,涉及正確性的部分也不容易被替代。中間部分的替代順序將會是自底向上,從基本模組向上層組件逐次地替代。
策略上要搶佔智慧EDA 先機
自力更生與充分吸取世界前沿並非不矛盾。傳統 EDA 和大模型在 OpenAI 首發而其他公司尚未跟上固然有著複雜的原因。但是政策上仍然需要分出一隻手,讓部分過熱資本從解決傳統EDA 和大模型問題的項目中抽出,鼓勵企業抓住智能EDA 發展初期行業壁壘小的時期,勇敢步入業內,構造出新的技術壁壘。只有這樣,才能解決不斷被新科技取代的問題。否則,過熱資本湧入已經成熟的產業會造成資本回報率下降,同時創新技術無法獲得更高的資金支持,導致創新型企業不敢試錯,無形中增加了創新型企業的試錯成本,使得創新企業更傾向於市場證明成熟的技術。因此,政策上應該適當鼓勵企業基於 ChatGPT 這類大模型做衍生技術,尤其是在大模型已經展現出強大的程式碼產生能力之上,基於智慧 EDA 技術的企業更應該搶佔先機。
資本市場的投資目光應該由大模型本身向其衍生技術轉向
在資訊科技領域,先進技術不斷從通用走向專用,逐漸走向基於先前技術的衍生技術,以處理器設計領域最為明顯。在上個世紀時,CPU 火爆一時,造出了高性能的計算機,本世紀初,GPU 逐步流行,驅動了遊戲的開發,最近十年,NPU 開始走上舞台,使能高能效的神經網絡訓練和推理。由此推知,當大模型成熟以後,其衍生技術也會在之後幾年走上舞台。
智慧型 EDA 技術是大模型技術的衍生技術。雖然衍生技術投資在剛開始看並不佔優勢,但是從經濟上看,直到那種技術首發並形成技術壁壘時其投資回報率會較高。隨著 ChatGPT 這種大模式技術的日漸成熟,對企業的投資會出現邊際效應遞減的現象。個人投資者和機構投資者應該認識到資訊科技的投資規律,漸漸把目光轉向大模型的衍生領域,尤其是關注基於大模型的演算法在晶片領域的應用問題。產業從業人員應該充分利用我國為人工智慧、積體電路領域設立的大基金優勢,積極申報人工智慧和 EDA 交叉的基金。因此,無論是從產業政策來看,或是從投資法則來看,智慧 EDA 領域十分有必要應該成為我國投資者的投資對象。
基於文字模型的程式碼產生
[1] 馮章、郭大亞、唐杜宇、段南、馮小成、龔明、壽林軍、秦冰、劉婷、蔣大新、周明。 2020。計算語言學協會的調查結果:EMNLP 2020,第 1536-1547 頁,線上。計算語言學協會。於程式碼理解與產生的標識符感知統一預訓練編碼器-解碼器模型]
#[4] [UniXcoder:用於程式碼表示的統一跨模態預訓練]
##基於測試案例的程式碼產生
#[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, [語法引導合成], 2013
[6] Peter-Michael Osera, Steve Zdancewic,[類型和範例導向的程式綜合],2015
[7] John K. Feser、Swarat Chaudhuri、Isil Dillig,[從輸入輸出綜合資料結構轉換範例] , 2015
[8] Armando Solar-Lezama, [透過草圖進行程式綜合], 2008
[9] [Kensen Shi ] , [Jacob Steinhardt], [Percy Liang], FrAngel: 基於組件的控制結構綜合, POPL, 2019
[10] Yu Feng, Ruben Martins, Yuepeng Wang, Isil Dillig, Thomas W. Reps,複雜API 的基於元件的綜合,[ACM SIGPLAN 通知],2017
基於邏輯規則的程式碼產生
#[11] Z. Manna 和R. Waldinger,“綜合:夢想→程式”,載於IEEE 軟體工程彙刊,卷。 SE-5,沒有。 4,第294-328 頁,1979 年7 月,doi:10.1109/TSE.1979.234198。
#[12] Bernd Finkbeiner 和Sven Schewe,有界合成,Int J Softw Tools Technol Transfer , (2013), 15:519–539, DOI: 10.1007/s10009-012-0228-z
[13] Peter Faymonville、Bernd Finkbe
##[13] Peter Faymonville、Bernd Finkbe##[13] Peter Faymonville、Bernd Finkbe
##[13] Peter Faymonville、Bernd Finkbe
#####[13] Peter Faymonville、Bernd Finkbe###########[13] Peter Faymonville, Lend有界合成實驗框架,CAV 2017######以上是智慧EDA浪潮即將來臨,ChatGPT如何協助設計晶片的詳細內容。更多資訊請關注PHP中文網其他相關文章!