Cadence丁渭濱:機器學習怎樣讓晶片設計事半功倍
智東西(公眾號:zhidxcom)文 | 心緣
3月15日,上海,由智東西主辦、AWE 和極果聯合主辦的 GTIC 2019 全球 AI 晶片創新峰會成功舉辦!峰會現場延續上一屆的火爆場景,全場從開幕到下午結束座無虛席,而且有不少熱情觀眾堅持站著聽完峰會全程。
20位海內外 AI 晶片業界大咖齊聚一堂,圍繞 AI 晶片在架構創新、生態構建、場景落地等方面的技術前景和產業趨勢“華山論劍”。
本屆峰會報名參會的觀眾覆蓋了近4500家企業,到會觀眾極為專業,其中總監以上級別佔比超過62%,現場實際到會人數超過1800位。
▲Cadence全球 AI 研發中心高階 AI 研發總監丁渭濱
傳統的晶片設計非常複雜,需要具有豐富經驗的尖端工程師帶領眾多精英人才進行長期的設計驗證工作,過程中還面臨大量不確定情況。作為全球三大電子系統設計自動化(EDA)軟體巨頭之一,Cadence 早早躋身於人工智慧的洪流之中,以機器學習優化晶片設計工具等方式為 AI 晶片產業的發展提供助力。
在 GTIC 2019 峰會上,Cadence 全球 AI 研發中心高階 AI 研發總監丁渭濱帶來主題為《應用機器學習進一步提升晶片物質設計的效能》的演講,分享了 Cadence 在機器學習方面軟體工具所做的實際工作和成績,還預告了兩款新工具的正式釋出時間。
丁渭濱從工具方的角度闡述了 AI 的兩個主要目的,一是利用 AI 做更智慧的晶片設計工具,二是實現以更少的人力、資源、週期來設計晶片。
在機器學習領域,Cadence 分別從 Inside 和 Outside 兩部分進行定位。Inside 注重於工具本身,力圖讓工具更智慧,使得使用者獲得更好的 PPA 和更快的引擎,從而提升測試和診斷效能表現;Outside 則注重於人,讓機器通過學習的方式積累經驗,減少人工干預,極大地釋放生產力。
經過歷史上幾十年的積累,Cadence 擁有廣泛的客戶基礎,並在數字領域形成一套從前端到後端的完整工具鏈,包含 Project Virtus、Signoff Timing、SmartLEC等工具。
其中有一款佈局佈線工具 Innovus ,Cadence 在其中內建機器學習演算法來取代傳統的演算法,通過對大量晶片設計資料進行學習建立了一個可自動輔助晶片設計的機器學習模型,完成整合引數的提取、快速佈線和運算等方面的工作,已經幫一些使用者實現了晶片設計的效能優化。
針對 Outside,Cadence 打造了一款突破性的 Design Flow 專家系統,能通過訓練讓其進行自我學習、自我進步,不斷獲得更高的勝率和回報率,最終幫助工程師分擔一部分工作。
丁渭濱表示,新版 Innovus 工具將在今年4月份正式釋出,另外 Cadence 會在今年10月正式釋出一個 AI 自動修正 ECU 晶片設計的軟體,目前內部測試中其效果已經比肩有經驗的工程師。
附 Cadence 公司全球 AI 研發中心高階 AI 研發總監丁渭濱演講實錄
丁渭濱:大家下午好!
今天有很多收穫,很高興和大家分享一下 Cadence 在機器學習上的投入和成績。Cadence 是一家提供 EDA 設計軟體和 IP 方案的公司,今天我主要談的是軟體工具方面。從工具方來講,人工智慧(AI)有兩個最主要的目的:
1、怎麼用工具來設計晶片?
假設有一個工程師設計了4個晶片,他的經驗得到了很大的提升,他會知道怎麼處理很多事情,但工具本身並沒有變的更加聰明。所以這是有問題的地方,而我們的工作就是利用 AI 去進化工具。
2、如何降低對晶片人才經驗的依賴?
如今設計晶片時,需要非常多的人力和資源。AI 是否可以做到不需要人來設計晶片?或者需要人來干預設計的過程變的越來越少?如果這一目標實現,將極大地釋放出生產力,以更少的代價、更快的週期來生產晶片。
機器學習本身有60年的歷史,經過了很長一段的冬天,在最近幾年突然熱起來了,主要原因是它終於開始在安防監控、人臉識別、語音識別、翻譯等一些領域成功落地了。
這引起了人們極大的興趣,特別是當谷歌的《星際爭霸》例子出現。在自學了《星際爭霸》幾百萬部、幾十萬部視訊後,機器真的可以看著螢幕來玩遊戲,還真的可以打敗最頂尖的人類高手。
分享給大家一個很有趣的資料。當我一開始看到訊息時,第一感覺是機器的優勢來源於它操作滑鼠各方面比較快。其實後來谷歌給的報告顯示,AI軟體在每分鐘操作滑鼠的次數只有277次,而人類高手高達了500多次。
計算機遠遠可以比人操作滑鼠更快,但是它並沒有靠此來贏人類,而是做了更好的決策,它真的知道什麼時候做什麼決策能得到較高的最終回報。
晶片工程師每天做事情主要是看layout,然後來決定這個時候需要進行什麼樣的修改,修改完以後預期會解決什麼問題。實際上玩遊戲不會帶來實際的生產價值,而做一顆晶片會帶來實際的價值,這就是Cadence在做的事情。
Cadence第一個定位的角度是 Machine Learning Inside 。Inside 注重於工具本身,這是因為今天的工具並不是最完善的。當做一個晶片有很長的設計流程時,使用者每一步都在丟失一些東西,因為每一步的演算法都在適合優化某些東西,可是這個東西不一定對,不確定每個階段是否真的往同一方向走。
對不確定性的東西來說,機器學習具有非常大的威力,可以幫助我們得到更好的、更收斂的 Flow,在每個步驟不會浪費不必要的資源。換句話說,當你在設計晶片的時候,很多時候在不確定時會加一些Margin,其實每一次加的時候都是對效能資源的浪費和傷害。機器學習技術很適合於解決這一類問題,利用這一技術,Cadence 讓工具變的更聰明,當你執行幾次、十幾次甚至更多次後,你會發現,工具本身變得越來越好。
另一個角度是 Machine Learning Outside,這個角度是致力於人。因為就算有了 EDA 工具,設計一個晶片仍是非常複雜的事,需要很高的門檻、很強的前端團隊和後端團隊,即便這樣也不一定有用。很多時候要考慮的問題是,當涉及到執行工具、執行 Flow 等各種各樣的修正時,你需要這些人做什麼?這些人到底在做什麼?我們可不可以通過學習的方式減少人工干預?
假設有幾百個工程師,每個人每天都學到了不一樣的東西,可能在某些點上變的越來越有經驗,可是這種經驗是非常分散的,分散到每個人的腦子裡,並且每個人在他的一生裡能做到的 PPA 數量是有限的。
可是如果我們能把這些事情交給機器,機器可以看到和累積所有人的經驗,然後變的越來越穩定時,就擺脫了在很多地方對經驗的依賴。如果到了這個階段,晶片設計就走向了另外一個高度、另一個新的天地。
在美國國防部上有一個叫 DAPRA 的專案,其中有一項叫無人設計晶片,Cadence 也有參與這個概念。Cadence在 EDA 公司裡拿到了最大的一筆投資,那筆投資試圖解決的是 Analog 方面的問題,當你畫 PLL 的時候希望把各式各樣的經驗累積起來,最後不再依賴一定要有非常厲害的人才能畫出來。當然,在數位電路同樣有這樣的事情,人類在探索用 AI 提高生產率上有非常長的路要走,但總的來說,這些都是非常有前景的。
第三個,因為Cadence本身也提供 IP,所以也有 AI 晶片,但今天主要談工具,就不多談了。
當你要有 AI 來解決晶片設計的時候,你要有基礎的東西,首先要擁有已經完整的工具鏈,只有這樣才會有很完整的資料,才能夠看到全域性。
從這個角度來說,Cadence 是非常有利的,我們有完整的工具鏈、廣泛的客戶基礎,所以真正可以跟客戶一起整合已經有的優勢,以達到更好的效能,或者更高的效率。
Cadence 經過歷史上幾十年的積累,在數字領域有一套完整的前端到後端的設計工具、驗證工具,這對人工智慧和機器學習來說是很大的財富,因為不可能靠一個工具來做人工智慧,到後面工具的世界已經遠遠地超出了你的認知範疇。
在工具裡,Cadence 已有哪些東西可以直接使用呢?一個是在座很多人可能都有用過的 Innovus,這是一款佈局佈線工具,裡面已有內建的 AI 演算法取代傳統的演算法,這個工具在今年4月份會正式釋出;另外有一個是 Project Virtus,通過機器學習解決 EM-IR 和 Timing 之間的相互影響;還有 Signoff Timing 和 SmartLEC等工具。
接下來,我給一個更具體的例子幫助大家理解 Cadence 到底做了哪些實際的工作,而不只是在紙上談這些目標。
Routing 是一個非常關鍵的步驟,需要很長時間來運算,才能得到最終結果。隨著基礎廠商的規則變得越來越複雜,從 7nm 到 5nm 再到 3nm,執行的時間會相比線性增強非常多,這會造成一個問題,當你在前端 Routing 之前做了很多優化,和你在 Routing 之後看到的東西就會截然不同。
不同人會有不同的策略。有的人說既然這樣,我在佈線之前做的更加多一點,留一些 Margin,這樣到後面我的跳變會少一點,所以我的晶片效能還在,這樣雖然沒錯,但往往會浪費很多資源。即便你多做,你也未必知道該在哪裡多做;還有一種策略是在某些地方做調整,在某些地方不要去做,其實這無非就是亂槍打鳥,或者是等著天上掉餡餅。
其實這都不是最好的解決方案,機器學習有一個最大的特點,如果結果是基於統計學來看是不確定的,但它整體上又有一個趨勢,是由某幾百個或者更多的特徵來決定,那麼它就是一個很適合用機器學習解決的問題。
雖然佈線非常複雜,可是裡面是不是有某種趨勢性的東西,我通過執行晶片設計後可以知道?如果可以知道的話,是不是可以訓練模型,在佈線之前就預測佈線完後的時序(Timing)會是什麼樣的狀態?
如果做到這一點的話,基本就把問題解決一半了,只需要在優化器裡嵌入這些東西,不要用現在的方法預估來做,用機器學習的方法會比你更準,會優化到真正需要優化的地方,在你佈線之後,你會看到你不僅沒有浪費,並且效能會更好。
在訓練完以後,Cadence 把某模型嵌入到 Innovus 工具中,這個工具依賴於機器學習模型來做 Timing 的計算,而不是像現在傳統的方式去做一些整合引數的提取、快速佈線和運算。如果花了那麼多時間,最後得到的結果還不是想要的,那麼我們為什麼不用一種更聰明的方式來做?
如圖是真實的客戶資料。該客戶是做中低端手機的,他們在做晶片時,PPA 和功耗遇到了瓶頸。為了得到資料,他們之前花了很多工程師的力量做了23組不同的 run。其實實際資料遠遠超過23組,但這23組是最後得到的有效資料。
既然已經花了這麼多工程師和 CPU 得到這個結果,我們幫你把這些東西全部收集起來以訓練模型,訓練好模型後,他們用我的模型繼續優化,真的看到有超過22%的 TNS 和39%的 WNS 的提高,並且更有趣的是發現功效也降了3%。這說明什麼呢?說明我在提升效能的時候,沒有浪費你的資源。相反因為我做的更好更對,我還幫你節省了資源。
還有一個最近才發生的例子,有一個非常大的手機廠商,主要做比較高階的手機 CPU 晶片。他們原來想要做到 2.8GHz 的頻率,可是做到 2.6GHz 的時候就做不下去了,因為工程師花了半年的時間都沒有修下去。後來我們花了一個月的時間把以前 run 的結果都收集起來,大概有10個左右有效結果,放在一起花了3到5天的時間做訓練,得到模型重新 run。
這時好玩的事情發生了,一開始我們可以幫他們將頻率縮短 2.8GHz,後來他們說需不需要衝擊一下更高的 3.0GHz 頻率?我們又把它調到 3.0GHz 頻率,還將功耗省了3.7%左右。他們非常激動,因為對他們來說,如果手機晶片提升了400兆頻率,他們在市場上的競爭率不知道增加多少。另外,時間的有效性也得到大大提升,因為只要把資料放上去,不需要投入幾十個工程師去除錯,工具就會全部自動完成。
我舉的例子是這幾個月真實發生的事情,得到一個基本的結論就是,把機器學習應用到晶片設計場景裡,不是虛幻的事,而是真的可以解決工程問題。只是以前因為資料規模、演算法、算力各方面沒有能夠做到這一點,現在通過 Cadence 的工作可以發現這是真實可實現的。
我們在想怎麼可以做更多。工具變好了,是否還是需要這麼多人力和時間才可以得到我最後的晶片?或者還可能面臨這個問題,有經驗的設計工程師走了,把很多知識和想法都一併帶走了,新來的人接不上,這個專案可能就不行了。
那麼,有沒有某種方式把設計的相關知識和經驗留在公司裡?也就是說,就算有人員流動,你關鍵知識和資料還在,只要找一個人進來管理好你的資料,就能繼續進行晶片設計。
這是 Cadence 提的另一個概念—— Design Flow 專家系統。可能聽起來專家系統有點老套,比如很多年前機器人看病問一堆問題, 不像是能真正能解決問題的東西。
其實這個要看怎麼做,專家系統概念本身並沒有什麼不對的地方,關鍵在於這個專家系統能否做到自我學習。假設它能實現自我學習,那使用者就無需擔心一開始的專家系統裡的知識是不是最好的知識。
這就是 Cadence 做的一個突破,即隨著訓練慢慢可以讓專家系統自我學習、自我進步。想象一下,當 AlphaGo 在下棋的時候,最主要的是預測價值鏈的神經網路,價值網路可以根據以往自學的經驗判斷這個時候的勝率回報率到底有多高,最後總是能走到勝率回報率比較高的地方。
做 Design Flow 的設定一定是對應某個可以衡量的指標的回報,假設我們可以把價值回報鏈做好做完整,其實它是完全可以放在工程師日常工作中,分擔一部分工程師的工作。這就是我們講的 Machine Learning Outside 的概念。
今年10月份,Cadence 會正式釋出一個 AI 自動修正 ECU 晶片設計(Timing ECU Fixing)的軟體工具。我們已經在內部讓跟非常有經驗的 PE 工程師來修正,修正的結果並不比工程師差,而且會比他更有效率,因為你可以讓機器24小時不斷在學習和修正。這才是真正人工智慧有威力和帶給我們希望的地方,因為沒有一個人像他們一樣24小時在學,學幾十年,學那麼快,帶給我們最大的驚喜應該是在這裡。