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