可以看出,智能體并不像人類專家一樣追求直線布局。為了優(yōu)化布局,智能體更傾向于弧形布局。我們也希望能訓(xùn)練智能體高效地創(chuàng)造一些前所未有的布局方式。
為了實現(xiàn)這個目標(biāo),首先,我們運用強化學(xué)習(xí)算法優(yōu)化某個芯片設(shè)計塊的布局,期間需要經(jīng)歷上萬次迭代;然后,重復(fù)前一步驟,在多個不同的設(shè)計塊上預(yù)訓(xùn)練出一套布局規(guī)則,最終讓算法在面對前所未見的新設(shè)計塊時也能給出布局方案。
預(yù)訓(xùn)練好的策略有助于在推理時做更少的迭代,進行“零次(zero-shot)布局”。我們實際上還沒有新算法來優(yōu)化這個特定的設(shè)計,當(dāng)然我們可以做數(shù)百次迭代以得到更好的結(jié)果。
上圖展示了使用不同方法時的布局成本。藍線表示不經(jīng)過預(yù)訓(xùn)練的從頭訓(xùn)練策略的布局成本,綠線表示用已預(yù)訓(xùn)練的算法優(yōu)化新設(shè)計塊的布局,X軸表示訓(xùn)練時間,可以看到,藍線在經(jīng)過20多小時的訓(xùn)練后方可大幅降低布局成本,此后仍需經(jīng)過一段時間才能達到收斂。而綠線只用了極少的訓(xùn)練時間就達到了更低的布局成本并很快收斂。
最令我感到興奮的是圈紅部分。調(diào)優(yōu)預(yù)訓(xùn)練策略在短時間內(nèi)就可實現(xiàn)相當(dāng)不錯的布局,這種實現(xiàn)就是我所說的,在一兩秒內(nèi)完成芯片設(shè)計的布局。
上圖展示了更詳細的不同設(shè)計的情況。Y軸表示線長成本(越低越好)。綠色表示使用商業(yè)工具的線長成本,可以看到,從淺藍色(零次布局)→藍色(2小時微調(diào))→深藍色(12小時微調(diào)),線長成本越來越低。深藍色一直比黃色的線長成本要低,因為通過12小時的微調(diào)能從其他設(shè)計中學(xué)到最佳布局。
上圖中,左邊和右邊分別展示了從頭訓(xùn)練的策略和經(jīng)過微調(diào)預(yù)訓(xùn)練策略的芯片布局過程。每個小方塊表示一個宏的中心,空白部分表示為標(biāo)準(zhǔn)單元預(yù)留的位置??梢钥吹?,右邊從一開始就將宏放在邊緣,將大片中間區(qū)域留空。而左邊則要經(jīng)過很多次迭代才能形成這樣的格局。
我們利用強化學(xué)習(xí)工具針對TPU v5芯片的37個設(shè)計塊進行了布局與布線。其中,26個設(shè)計塊的布局與布線質(zhì)量優(yōu)于人類專家,7個設(shè)計塊的質(zhì)量與人類專家相近,4個設(shè)計塊的質(zhì)量不如人類專家。目前我們已經(jīng)把這個強化學(xué)習(xí)工具投入到芯片設(shè)計流程中了。
總的來說,用機器學(xué)習(xí)進行芯片布局與布線的好處包括:可以快速生成多種布局方案;即使上游設(shè)計有重大改動也可以迅速重新布局;大幅減少開發(fā)新ASIC芯片所需的時間和精力。
驗證
接下來是芯片設(shè)計的驗證階段。我們希望用較少的測試次數(shù)覆蓋多個測試項目。驗證是阻礙芯片設(shè)計提速的主要瓶頸。據(jù)估計,芯片設(shè)計過程中,80%的工作量在于驗證,而設(shè)計本身僅占20%。因此,驗證技術(shù)的任何一點進步都會產(chǎn)生重大作用。
Google在2021年NeurIPS(神經(jīng)信息處理系統(tǒng)大會)上發(fā)表了論文《Learning Semantic Representations to Verify Hardware Designs》,我們能不能運用機器學(xué)習(xí)生成在更短時間內(nèi)覆蓋更廣狀態(tài)空間的測試用例?
驗證階段的基本問題是可達性(reachability)。目前的芯片設(shè)計能否讓系統(tǒng)達成需要的狀態(tài)?我們的想法是,根據(jù)當(dāng)前的芯片設(shè)計生成一個連續(xù)的表示,從而預(yù)測對系統(tǒng)的不同狀態(tài)的可達性。
我們可以通過RTL將芯片設(shè)計抽象為一張圖,然后運用基于圖的神經(jīng)網(wǎng)絡(luò)去了解該圖的特性,從而了解其對應(yīng)芯片設(shè)計的特性,繼而決定測試覆蓋率和測試用例,這給了我們一個很好的設(shè)計的抽象表示。
當(dāng)然,如何將這種方法應(yīng)用到實際芯片設(shè)計中將是另外一個重要話題。用RTL生成圖表示之后,我們在圖神經(jīng)網(wǎng)絡(luò)中運用一種叫Design2Vec的技術(shù)進行深度表示學(xué)習(xí),從而幫助我們作出預(yù)測。
目前,芯片的驗證環(huán)節(jié)需要大量人力,例如,找bug、查找測試覆蓋率漏洞、分析和解決bug等,還需要經(jīng)歷多次如上圖所示的流程循環(huán)。我們希望上述步驟可以實現(xiàn)自動化,自動生成新的測試用例以解決重要的問題。
后來我們發(fā)現(xiàn),可以把這個問題轉(zhuǎn)化為一個監(jiān)督學(xué)習(xí)問題。如果之前進行了一系列測試,并知道這些測試覆蓋哪些測試點,就可以將這些數(shù)據(jù)用作監(jiān)督學(xué)習(xí)中的訓(xùn)練數(shù)據(jù)。
然后,當(dāng)出現(xiàn)新的測試點時,假設(shè)進行一個新的測試,我們需要預(yù)測這個測試能否覆蓋新的測試點。我們希望能結(jié)合之前的訓(xùn)練數(shù)據(jù)以及芯片設(shè)計本身,來實現(xiàn)這種預(yù)測。
我們有兩個Baseline,其中一個能夠看到測試點(test points)和覆蓋點(cover points)的數(shù)據(jù),這是一個黑盒測試。
而Design2Vec除了能夠處理上述數(shù)據(jù)外,還能處理實際設(shè)計、設(shè)計的圖結(jié)構(gòu)等等。如果你使用一半的測試點作為訓(xùn)練數(shù)據(jù),并且設(shè)置多個大小不同的訓(xùn)練集,然后對其它測試點進行預(yù)測,那么將會得到非常出色的結(jié)果,即使是對于相對較少的覆蓋點,也能泛化得非常好。相比之下,Baseline這種方法就不能對此進行很好地泛化。
但使用圖神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)設(shè)計、覆蓋率和測試屬性的方法,實際上比NeurIPS論文中的其他所有Baseline都要好。
例如,我們常會遇到很多難以生成測試的覆蓋點。工程師們發(fā)現(xiàn)使用RISC-V Design和TPU Design這兩種不同的設(shè)計也很難為這些特定的覆蓋點生成測試,于是我們又轉(zhuǎn)向使用貝葉斯優(yōu)化器來嘗試生成測試。
上圖右邊這一列是貝葉斯優(yōu)化器覆蓋的不同測試點、覆蓋點所需的模擬器調(diào)用數(shù)(simulator calls),中間一列是使用Design2Vec所需的模擬器調(diào)用數(shù)。從中可以看到,為覆蓋這些有挑戰(zhàn)性的覆蓋點,Design2Vec生成的測試要少于貝葉斯優(yōu)化器。所以Design2Vec非常好,相比之下它更快,能聚焦覆蓋范圍,還能節(jié)省在運行計算模擬器(本身很昂貴)上的開銷。
驗證是芯片設(shè)計在理論和實踐上長期面臨的一個挑戰(zhàn)。我們認為,深度表示學(xué)習(xí)能夠顯著提高驗證效率和質(zhì)量,并且在設(shè)計中實現(xiàn)泛化。
即使設(shè)計發(fā)生了一些改變,這個新設(shè)計的版本也能運用之前在眾多設(shè)計上訓(xùn)練出來的系統(tǒng),提高驗證效率。正如在布局與布線階段,經(jīng)過訓(xùn)練后的算法即使面對新設(shè)計也能夠預(yù)測不同測試的覆蓋點,以帶來好的結(jié)果。
-
Google
+關(guān)注
關(guān)注
5文章
1789瀏覽量
58877 -
芯片設(shè)計
+關(guān)注
關(guān)注
15文章
1082瀏覽量
55579 -
硬件設(shè)計
+關(guān)注
關(guān)注
18文章
432瀏覽量
45160 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8499瀏覽量
134409 -
神經(jīng)網(wǎng)絡(luò)技術(shù)
+關(guān)注
關(guān)注
0文章
6瀏覽量
5347
發(fā)布評論請先 登錄
評論