將區塊劃分為可管理的片段變得越來越難,但新的工具和方法正顯示出前景。
ASIC 和 SoC 設計的多 FPGA 原型驗證使驗證團隊能夠實現仿真技術中最高的時鐘速率,但為原型驗證設置設計非常復雜且具有挑戰性。這正是機器學習和其他新方法開始提供幫助的地方。 根本問題在于設計變得如此龐大和復雜,以至于必須將其分割成更易于管理的部分。但碎片的數量在成倍增加,分割的難度也在成比例上升。
Cadence 公司產品管理部總監 Juergen Jaeger 說:“你需要將一大團邏輯進行分割,而分割的方式最重要的是要保留功能,也就是說不能破壞設計中的任何部分。”無論是仿真器還是 FPGA 原型,你都希望有效地利用所劃分的資源,并盡可能實現最佳性能。這就像在空中玩弄多個球一樣。
由于新一代 FPGA 剛剛出現,該行業正處于一個有趣的關頭?!皩τ谠O計規模相對較小的用戶來說,這確實是一個很好的機會。Synopsys公司產品營銷高級總監Johannes Stahl表示:”對于以前不得不將設計分割到兩個FPGA中的用戶來說,這是一個絕佳的機會,因為他們省去了分割,并獲得了更好的結果?!袄?,以前一個設計的運行速度是 20MHz,而現在可以達到 50MHz,所以這是一個巨大的影響。在這些新型 FPGA 上線的許多情況下,這種情況還會繼續發生。”
Aldec 硬件驗證產品經理 Krzysztof Szczur 說:“換句話說,邏輯密度的大幅提高使得在單個 FPGA 芯片中實現更小的 SoC 設計成為可能,并以接近實際運行條件的時鐘頻率運行原型。 Aldec 硬件驗證產品經理 Krzyztof Szczur 說:”與此同時,由于當今最先進的 FPGA 實際上并不是一個芯片,因此出血邊緣器件增加了另一個層次的復雜性。
Jaeger說:“賽靈思和英特爾/Altera的高端FPGA現在包含多個裸片,其中的多個芯片用線連接,因此FPGA內部也有分區。Jaeger 說:”作為額外的復雜性,如果你現在正在研究功能(必須具備的功能)、性能和資源的有效利用,那么分區算法就會試圖采用‘最小切割算法’。它們試圖盡量減少必須在多個分區之間傳輸的信號數量。除此之外,進行分區的工程師還試圖平衡每個 FPGA 的利用率,這樣就不會出現一個 FPGA 滿載 90%,而另一個只滿載 10%的情況,因為這會對性能產生負面影響?!?/p>
當然,在有些情況下,也無法實現 Stahl 所提到的同樣顯著的效果。例如,一些公司在使用自己的電路板進行原型開發時,會遇到多 FPGA 分區以外的挑戰,具體來說,就是因為需要添加調試信號,所以要反復進行多 FPGA 分區。
Stahl 說:”如果你必須在一個主要是手動的流程中引入調試信號,你就必須將它們引入引腳,這就會影響分區。Stahl 說:“因此,你必須重新運行分區,這相當痛苦。一位用戶就非常討厭這樣做,因為他永遠無法預測下一次分區運行的時間會在什么時候結束,而他卻可以再次把原型提供給用戶。由此可見,它與調試確實息息相關。調試和自動分區對于使用原型設計的用戶來說是同一個主題。這一切都必須協同工作”。
多 FPGA 原型驗證的另一個挑戰是分區的連接。Aldec 的 Szczur 說:“隨著邏輯密度的不斷提高,FPGA 被封裝在更大的封裝中,從而提供了更多的 I/O?!比欢?,I/O 的增加并不像邏輯資源那樣引人注目。例如,最大的 Virtex UltraScale 提供 1,456 個常規 I/O,比 Virtex-7 系列多出約 21%。為了縮小這一差距,FPGA 供應商為現代 FPGA 配備了高速串行 I/O(如 XCVU440 中的 48 條 GTH 線),從而提高了連接帶寬。這些 I/O 通常與用于 PCI Express、USB 3.0 或 QSFP 等標準接口的 PHY 相耦合。在某些情況下,它們也可用于多 FPGA 原型中的芯片間連接,但在這種情況下,它們的使用僅限于實現專用協議握手的事務接口,而且最好使用突發傳輸,以最大限度地減少此類鏈路延遲增加的影響。此外,在高端 FPGA 中,由于支持低壓差分信令 (LVDS),加上專用的串行器/解串器 (SerDes) 邏輯,標準 I/O 被設計為以更高的數據傳輸速率進行傳輸,從而促進了此類鏈接的實現。不過,在 LVDS 模式下同時設置 GTH/GTX 或標準 I/O 可能比較麻煩,如果由分區軟件自動進行設置,則可以節省大量時間,減少麻煩。
如果設計規模大于單個 FPGA,則必須進行分區,每個分區都要與單個 FPGA 的容量相匹配。有兩個目標:第一個目標是將 FPGA 資源利用率控制在一個閾值內,以確保流暢的布局布線。第二個目標是盡量減少分區之間的互連,這是影響原型速度的最重要因素。
Szczur 說:“在兩個 FPGA 的情況下,這個過程相對簡單,但在增加下一個分區時,難度就會迅速增加,尤其是在設計結構(層次結構)與原型板布局不一致的情況下?!币环N方法是手動分區,這需要更改設計源。分區塊在 HDL 中創建,以匹配原型驗證板資源和連接性。由于 FPGA I/O 的限制,每個分區都必須與互連物理層和多路復用器或串行器的定制實現進行手動封裝。這種方法不僅容易出錯、難以擴展或涵蓋設計變更,而且需要修改設計,從而對 ASIC 后端綜合優化產生負面影響。為了降低這種風險,可以為 FPGA 原型和 ASIC 設計流程保留不同的 HDL 源集和配置。但這樣一來,在 FPGA 原型驗證過程中真正驗證的是什么就值得懷疑了。比手動分區好得多的方法是使用編譯原始設計 HDL 源文件的軟件,這有助于在設計層次結構中對模塊實例進行分組,從而將其分成不同的分區“。
圖 1:自動分區工具。來源:Aldec
執行分區
分區由軟件架構師完成,他們負責設計整體結構并確定分區算法的工作方式。這些架構師由工程師團隊提供支持,工程師團隊負責具體實施?!庇行┤酥回撠熞_復用,例如分區之間的連接,“Cadence 的 Jaeger 說。”另一些人則只負責貼片,專注于如何拆分。然后再細分到各個專家小組“。
這在很大程度上取決于設計/驗證團隊的規模?!彼忉屨f:“架構是實現良好分區的關鍵?!钡诙匾目赡苁侨植季帧H绾螌⒉煌脑O計塊放置到不同的 FPGA 中。連接和引腳復用是機械工作。沒有太多的創造性。它只是實現它。正如你所能想象的那樣,當你有多個東西需要一起工作時,你總得從某個地方入手。你必須把木樁放在地上,‘我把這個放在這里,把那個放在那里,再把那個放在那里。讓我們看看現在它們是如何結合在一起的。所有的算法都是以種子或隨機起點為基礎的。然后,這些算法經過多次迭代,對起點進行變化“。
在這一領域,我們正在努力提高可預測性,包括機器學習。”預測算法在其中發揮了作用,有助于提高可預測性,因為這樣做的目的是,當你提高了可預測性,你就不需要那么多的迭代,不需要那么多的重復,就能得到好的結果。這就是為什么我們希望將更多的機器學習引入其中,“Jaeger 說。
這是一個計算能力問題,也是一個時間問題?!边@其中很重要的一點是,并不是每個問題都能解決。比方說,你有一個特定的設計,你說’我想把它裝進四個 FPGA‘。但由于種種原因,可能無法實現。可能有太多的門。中間的連接可能太多,也許還有其他原因。當你熟悉 FPGA 時,往往要花上好幾天時間才能發現它無法進行布局布線,而且沒有解決方案。您需要盡快了解情況。ML 算法能在幾分鐘或半小時后幫助你,所以你不用等上兩三天,直到你的軟件說’哎呀,我做不了‘。他補充說:“你可以提前知道,也可以提前做出改變。
不過,目前還不清楚該行業是否已準備好在這一領域應用機器學習?!彪m然機器學習可以實現,但挑戰在于你需要有大量的運行來優化這種機器學習,“Stahl 說。”如果你花費了足夠的計算能力,你就可以進行優化,運行許多次,然后找到一個更優化的版本。因此,就像任何本質上略帶啟發式的優化問題一樣--放下電纜本質上也略帶啟發式--人工智能算法可以使其受益。今天我們還沒有進入市場,但未來一定會進入市場。
分區最佳實踐
在構建 FPGA 原型時,有一些關鍵的注意事項需要牢記。
Imagination Technologies 開發平臺團隊首席系統架構師 Daniel Aldridge 說:“最有用的第一種方法是在設計時考慮到 FPGA?!弊鳛?FPGA 工程師,我們傾向于你計劃放入 FPGA 的 IP 核是’FPGA 友好型‘的,這意味著它沒有會大量消耗 FPGA 資源或難以在 FPGA 之間拆分的組件。如果設計能事先考慮到這些因素,如果最終產品將被放入 FPGA 或至少是其變體,那就更好了。如果 IP 核必須為硅設計,那么硅面積和速度就是首要考慮因素。那么,我們就必須將就。有時,這就意味著用經過正式測試的、可用于 FPGA 的同類元件來替換同類元件。歸根結底,就是’你能不能讓進入 FPGA 的元件盡可能對 FPGA 友好?
在多 FPGA 平臺上,如果設計必須拆分,那么最好能在已注冊的邊界上拆分,這樣就有了協議。
Aldridge 說:“這樣就可以在 FPGA 之間拉動寄存器到寄存器。Aldridge 說:”它為你提供了一條引腳數相對較少的總線,而你最終不得不拆分這條總線。如果是像 AMBA 總線這樣的總線,引腳數不會太多。雖然仍有數百個,但不會達到數萬個。但是,這并不總是可能的。因此,我們需要在 FPGA 和 PCB 上拆分設計,而這些設計在硅片中一直是相鄰的。這就是我們開始尋找工具來幫助實現這一過程自動化的原因。如果要拆分通過有效協議連接的高級模塊,手工編輯這些子組件的實例是一件相對容易的事情。如果你要開始拆分次層級的區塊,或者拆分許多大型區塊,這些區塊之間有數千或數萬個信號,那么我們就需要使用工具來幫助實現流程自動化。這可以幫助你自動計算模塊將占用的面積,從而計算出哪些模塊應該放在哪里,還可以幫助你計算出哪些信號將在哪些FPGA之間傳輸,以及需要進行哪些復用。這就是我們開始討論的地方,現在最大的 FPGA 有幾千個 I/O 引腳。但是,如果你要放一萬個信號,你仍然需要進行某種時分復用,將信號從一個 IP 塊或 IP 的子塊傳輸到另一個塊。
區塊大小對分區也有很大影響。
Aldridge 說:“如果你能讓一個組件的大小不超過 FPGA,那么你的工作就會變得更輕松。”在 ASIC 領域,這就是子塊可能占用的平方毫米面積。然后,從這些大得多的設計的 ASIC 布局出發,開始考慮這些塊之間的互連是什么。從 FPGA 的角度來看,當你進行原型設計時,我們希望在設計階段就考慮到這一點。從一開始,當 IP 核的架構完成后,你就應該考慮應該將其分解到哪個層次,應該有哪些分層。是否應該在它們之間商定一個最大 I/O 或通用 I/O 接口?確保有流水線階段,因為這將有助于 FPGA 時序和 ASIC 時序。希望你能事先說服設計人員,這對大家都有好處。
多 FPGA 原型開發將走向何方?
如今,設計原型的依賴性如此之大,下一步的發展方向也在不斷變化。
EDA 領域主要解決的一個問題是,當連接多個分區時,FPGA 之間的邊界有不同的布線方式。這包括如何進行引腳多路復用,以及數據傳輸后的轉換速度。
Jaeger 說:“越來越多的引腳復用方案采用混合方案?!蹦憧梢圆捎梅浅鹘y的異步引腳多路復用。你以相對較低的速度運行線路,然后超頻,這樣就可以在另一端恢復數據。如果引腳多路復用率較小,這種方法就非常有效。它的延遲非常低,因此線路中的延遲非常短。如果你有成百上千個信號需要通過一條線發送,這將是一個限制因素。因此,你需要使用基于 SerDes 的高速連接技術,在這種技術中,你基本上是在運行一條傳輸線,并以千兆赫茲的速度在電線上運行。這樣做的缺點是,設置這些端點的串行化/反串行化會增加延遲,因此只有在引腳復用率非常高的情況下才有意義“。
審核編輯:黃飛
評論