可以看出,智能體并不像人類專家一樣追求直線布局。為了優(yōu)化布局,智能體更傾向于弧形布局。我們也希望能訓練智能體高效地創(chuàng)造一些前所未有的布局方式。

為了實現(xiàn)這個目標,首先,我們運用強化學習算法優(yōu)化某個芯片設計塊的布局,期間需要經(jīng)歷上萬次迭代;然后,重復前一步驟,在多個不同的設計塊上預訓練出一套布局規(guī)則,最終讓算法在面對前所未見的新設計塊時也能給出布局方案。

預訓練好的策略有助于在推理時做更少的迭代,進行“零次(zero-shot)布局”。我們實際上還沒有新算法來優(yōu)化這個特定的設計,當然我們可以做數(shù)百次迭代以得到更好的結果。

上圖展示了使用不同方法時的布局成本。藍線表示不經(jīng)過預訓練的從頭訓練策略的布局成本,綠線表示用已預訓練的算法優(yōu)化新設計塊的布局,X軸表示訓練時間,可以看到,藍線在經(jīng)過20多小時的訓練后方可大幅降低布局成本,此后仍需經(jīng)過一段時間才能達到收斂。而綠線只用了極少的訓練時間就達到了更低的布局成本并很快收斂。
最令我感到興奮的是圈紅部分。調優(yōu)預訓練策略在短時間內就可實現(xiàn)相當不錯的布局,這種實現(xiàn)就是我所說的,在一兩秒內完成芯片設計的布局。
上圖展示了更詳細的不同設計的情況。Y軸表示線長成本(越低越好)。綠色表示使用商業(yè)工具的線長成本,可以看到,從淺藍色(零次布局)→藍色(2小時微調)→深藍色(12小時微調),線長成本越來越低。深藍色一直比黃色的線長成本要低,因為通過12小時的微調能從其他設計中學到最佳布局。

上圖中,左邊和右邊分別展示了從頭訓練的策略和經(jīng)過微調預訓練策略的芯片布局過程。每個小方塊表示一個宏的中心,空白部分表示為標準單元預留的位置。可以看到,右邊從一開始就將宏放在邊緣,將大片中間區(qū)域留空。而左邊則要經(jīng)過很多次迭代才能形成這樣的格局。

我們利用強化學習工具針對TPU v5芯片的37個設計塊進行了布局與布線。其中,26個設計塊的布局與布線質量優(yōu)于人類專家,7個設計塊的質量與人類專家相近,4個設計塊的質量不如人類專家。目前我們已經(jīng)把這個強化學習工具投入到芯片設計流程中了。
總的來說,用機器學習進行芯片布局與布線的好處包括:可以快速生成多種布局方案;即使上游設計有重大改動也可以迅速重新布局;大幅減少開發(fā)新ASIC芯片所需的時間和精力。
驗證

接下來是芯片設計的驗證階段。我們希望用較少的測試次數(shù)覆蓋多個測試項目。驗證是阻礙芯片設計提速的主要瓶頸。據(jù)估計,芯片設計過程中,80%的工作量在于驗證,而設計本身僅占20%。因此,驗證技術的任何一點進步都會產(chǎn)生重大作用。
Google在2021年NeurIPS(神經(jīng)信息處理系統(tǒng)大會)上發(fā)表了論文《Learning Semantic Representations to Verify Hardware Designs》,我們能不能運用機器學習生成在更短時間內覆蓋更廣狀態(tài)空間的測試用例?
驗證階段的基本問題是可達性(reachability)。目前的芯片設計能否讓系統(tǒng)達成需要的狀態(tài)?我們的想法是,根據(jù)當前的芯片設計生成一個連續(xù)的表示,從而預測對系統(tǒng)的不同狀態(tài)的可達性。

我們可以通過RTL將芯片設計抽象為一張圖,然后運用基于圖的神經(jīng)網(wǎng)絡去了解該圖的特性,從而了解其對應芯片設計的特性,繼而決定測試覆蓋率和測試用例,這給了我們一個很好的設計的抽象表示。

當然,如何將這種方法應用到實際芯片設計中將是另外一個重要話題。用RTL生成圖表示之后,我們在圖神經(jīng)網(wǎng)絡中運用一種叫Design2Vec的技術進行深度表示學習,從而幫助我們作出預測。


目前,芯片的驗證環(huán)節(jié)需要大量人力,例如,找bug、查找測試覆蓋率漏洞、分析和解決bug等,還需要經(jīng)歷多次如上圖所示的流程循環(huán)。我們希望上述步驟可以實現(xiàn)自動化,自動生成新的測試用例以解決重要的問題。

后來我們發(fā)現(xiàn),可以把這個問題轉化為一個監(jiān)督學習問題。如果之前進行了一系列測試,并知道這些測試覆蓋哪些測試點,就可以將這些數(shù)據(jù)用作監(jiān)督學習中的訓練數(shù)據(jù)。

然后,當出現(xiàn)新的測試點時,假設進行一個新的測試,我們需要預測這個測試能否覆蓋新的測試點。我們希望能結合之前的訓練數(shù)據(jù)以及芯片設計本身,來實現(xiàn)這種預測。

我們有兩個Baseline,其中一個能夠看到測試點(test points)和覆蓋點(cover points)的數(shù)據(jù),這是一個黑盒測試。
而Design2Vec除了能夠處理上述數(shù)據(jù)外,還能處理實際設計、設計的圖結構等等。如果你使用一半的測試點作為訓練數(shù)據(jù),并且設置多個大小不同的訓練集,然后對其它測試點進行預測,那么將會得到非常出色的結果,即使是對于相對較少的覆蓋點,也能泛化得非常好。相比之下,Baseline這種方法就不能對此進行很好地泛化。

但使用圖神經(jīng)網(wǎng)絡來學習設計、覆蓋率和測試屬性的方法,實際上比NeurIPS論文中的其他所有Baseline都要好。

例如,我們常會遇到很多難以生成測試的覆蓋點。工程師們發(fā)現(xiàn)使用RISC-V Design和TPU Design這兩種不同的設計也很難為這些特定的覆蓋點生成測試,于是我們又轉向使用貝葉斯優(yōu)化器來嘗試生成測試。
上圖右邊這一列是貝葉斯優(yōu)化器覆蓋的不同測試點、覆蓋點所需的模擬器調用數(shù)(simulator calls),中間一列是使用Design2Vec所需的模擬器調用數(shù)。從中可以看到,為覆蓋這些有挑戰(zhàn)性的覆蓋點,Design2Vec生成的測試要少于貝葉斯優(yōu)化器。所以Design2Vec非常好,相比之下它更快,能聚焦覆蓋范圍,還能節(jié)省在運行計算模擬器(本身很昂貴)上的開銷。

驗證是芯片設計在理論和實踐上長期面臨的一個挑戰(zhàn)。我們認為,深度表示學習能夠顯著提高驗證效率和質量,并且在設計中實現(xiàn)泛化。
即使設計發(fā)生了一些改變,這個新設計的版本也能運用之前在眾多設計上訓練出來的系統(tǒng),提高驗證效率。正如在布局與布線階段,經(jīng)過訓練后的算法即使面對新設計也能夠預測不同測試的覆蓋點,以帶來好的結果。
-
Google
+關注
關注
5文章
1816瀏覽量
60655 -
芯片設計
+關注
關注
15文章
1173瀏覽量
56788 -
硬件設計
+關注
關注
18文章
499瀏覽量
45698 -
機器學習
+關注
關注
67文章
8567瀏覽量
137264 -
神經(jīng)網(wǎng)絡技術
關注
0文章
6瀏覽量
5381
發(fā)布評論請先 登錄
機器學習如何影響計算機硬件設計2
評論