用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造芯到底靠不靠譜你怎麼看,也歡迎評論區說說你的看法。

(注:本文僅代表作者個人觀點,與任職單位無關。)