想要入門eFPGA,看這一篇就夠了

嵌入式FPGA(eFPGA)是指將一個或多個FPGA以IP的形式嵌入ASIC,ASSP或SoC等芯片中。換句話說,eFPGA是一種數字可重構結構,由可編程互連中的可編程邏輯組成,通常表現為矩形陣列,數據輸入和輸出位於邊緣周圍。 eFPGA通常具有數百或數千個輸入和輸出,可連接到總線、數據路徑、控制路徑、GPIO、PHY或任何需要的器件。

所有eFPGA都將查找表(LUT)作為基本構建模塊。 LUT有N個輸入選擇一個小表,其輸出表示N個輸入的任何需要的布爾函數。 有些eFPGA LUT有四個輸入,有的有六個。有些LUT有兩個輸出。 LUT通常在輸出端具有觸發器; 這些可以用來存儲結果。這些LUT寄存器組合通常以四進制形式出現,還有進位算術和移位器,以便有效地實現加法器。

LUT接收來自可編程互聯網絡的所有輸入,並將其所有輸出反饋到可編程互連網絡。

除了LUT之外,eFPGA還可能包含MAC(乘法器/累加器模塊)。 它們也連接到可編程互連網絡,用於提供更高效的數字信號處理(DSP)和人工智能(AI)功能。 對於內存來說,有大量的RAM,通常是雙端口的封裝。至於LUT和MAC,通過RAM連接到可編程互連網絡。eFPGA具有輸入和輸出引腳的外環,將eFPGA連接到SoC的其它部分,這些引腳也連接到可編程的互連網絡。軟件工具用於合成Verilog或VHDL代碼,以編程eFPGA邏輯和互連來實現任何所需的功能。eFPGA是方便的新邏輯塊,可在許多方面提高SoC的價值,其中包括:使用數百個LUT的廣泛,快速的控制邏輯;可重新配置的網絡協議;用於視覺或人工智能的可重構算法;用於航空航天應用的可重配置DSP;用於MCU和SoC的可重配置加速器。

除了以上這些,還有更多,這裡就不一一介紹了。

當今,已經有了一些eFPGA供應商,主要包括Achronix,Flex Logix,Menta和QuickLogic,此外,還有一些較小的供應商。有了這些選擇,客戶需要決定哪一個最能滿足他們的需求。那麼,要如何選擇呢? 雖然需要考慮商業因素,但本文重點討論技術因素。

第1步:製程的兼容性

通常情況下,即使在IP評估的早期階段,公司也會選擇foundry廠和工藝節點。而臺積電、GlobalFoundries和SMIC現在或正在開發針對包括65nm,40nm,28nm,22nm,16nm,14nm和7nm工藝節點的eFPGA。

但是,並非所有供應商對所有代工廠/工藝節點都有eFPGA,至少目前還沒有。 通過他們的網站檢查哪些與您的製程兼容非常重要。 您還應該看看所討論的eFPGA是否已經在芯片中進行了驗證,並在NDA下提供了報告。

不要忘記檢查金屬堆棧的兼容性。您選擇的關鍵IP,如SerDes或您的應用可能需要您使用特定的金屬堆棧,但並非所有eFPGA IP都與所有金屬堆棧兼容。

第2步:陣列大小和功能

並非所有的eFPGA供應商都可以做非常小規模的eFPGA,同時,並不是所有廠商都可以做出規模非常大的eFPGA。另外,它們支持的MAC和RAM的性質可能會有所不同。

對於您是否需要數百個LUT或數十萬個LUT,以及您對MAC和RAM的需求,這可能會篩選出一些供應商。

步驟3:使用RTL進行基準測試

eFPGA供應商會為您提供用於評估的軟件,以便您可以確定(RTL)每個eFPGA可以實現的硅面積和性能。您需要eFPGA能夠在與SoC其餘部分相同的溫度和電壓範圍內運行,因此請確保您需要的是支持的。

在進行基準測試時,將蘋果與蘋果進行比較(compare apples to apples)非常重要。例如,您應該在相同的工藝(slow/slow or typ/typ or fast/fast)以及相同電壓和相同溫度下比較每個eFPGA。您應該期望來自eFPGA供應商的軟件工具將允許您檢查不同工藝轉角和電壓組合下的性能。

請注意,您的RTL適用於eFPGA。如果從硬連線ASIC設計中採用RTL,則觸發器之間往往會有20~30個邏輯層。如果你把它放在沒有優化的eFPGA中,它會運行得非常慢。在eFPGA中,LUT輸出總是有觸發器,您可以使用它們向RTL添加更多的流水線,以在eFPGA中獲得更高的性能。

談到RTL,確保你正在測試什麼對你很重要。

一個16位加法器。你關心的是它的運行速度有多快,但是如果你不小心,看到的結果可能會讓你感到驚訝。現在想象一個大的eFPGA。如果加法器放置在陣列的一個角落,輸入和輸出接近,則性能將遠高於在陣列中間找到加法器的情況。這是因為如果您觀察從陣列輸入到陣列輸出的性能,當加法器位於陣列中間時,到數據輸入和加法器輸出的加法器的距離會更長。實際上,加法器是相同的,並且在兩個位置運行速度都很快。問題在於你的測試沒有隔離加法器的性能,但它也加入了達到加法器所需的信號。

下圖是一個例子,它使用一個LUT來佈線,LUT速度不會改變,但通過互連進入和離開LUT的延遲會發生。

想要入門eFPGA,看這一篇就夠了

圖源:Flex Logix為了應對這種效應,尤其是因為您可能會比較兩種不同尺寸的eFPGA,您需要做的是在輸入和輸出上設置寄存器,這可確保您關心的性能均可測量,不受陣列的大小和位置的限制。

想要入門eFPGA,看這一篇就夠了

如果您需要MAC的DSP或AI功能,請了解每個eFPGA的乘法器大小和流水線的不同。 如果RTL指定了一個MxN乘法器,那麼綜合軟件將確保eFPGA實現它,但它可能會跨越兩個或更多乘法器以達到所需的效果。 如果你需要MxN,那麼這很重要。 但是,如果試圖比較apples-to-apples的倍增性能,您會希望讓RTL使用適合您所評估的所有eFPGA的倍增器大小。

想要入門eFPGA,看這一篇就夠了

圖:N-Tap FIR濾波器架構(來源:Flex Logix)一些eFPGA直接將MAC彙集到一起,這比可編程互聯網絡快得多。 實施N-Tap FIR濾波器將顯示具有MAC-to-MAC流水線的eFPGA與不具有流水線的eFPGA之間的差異。 上圖為使用流水線DSP MAC實現的N-Tap FIR濾波器的示例。

步驟4:使用您需要的RTL

基準測試區域與性能一樣,在嘗試針對不同eFPGA的RTL的相對面積進行基準測試時,要非常小心。一些eFPGA供應商使您能夠輕鬆生成數十種不同的陣列尺寸,但其他人可能只會為您的基準測試提供兩種尺寸。第一步是查看LUT計數(或MAC計數)。但是,不同的eFPGA供應商可能有不同的LUT尺寸。在查找表中可能不會填滿它,所以如果你有兩個觸發器進入一個與非門,再進入另一個觸發器,那麼任何大小的查找表都將實現一個與非門。

某些eFPGA在輸出端具有兩個觸發器,這使得N輸入LUT可以分解為兩個共享N輸入LUT和一些輸入子集的更小的LUT。此功能可提高面積利用率。即使您正在對來自兩家供應商的N-LUT eFPGA進行基準測試 - 並且您的設計使用了兩個LUT中的一半並且兩者的面積相同 - 但您不能斷定它們同樣好。 你需要確定的是eFPGA LUT的利用率是否可以實現。一般eFPGA的利用率為60-70%,但有些eFPGA的利用率可達到90%。

唯一能找到的方法是使RTL幾乎填滿eFPGA的LUT。另一種獲得使用感的方法是查看展示位置的可視化。 在下面的例子中,LUT顯然是非常緊密地組合在一起的(陰影塊是設計中使用的LUT),這是高利用率的良好視覺指示。

想要入門eFPGA,看這一篇就夠了

但是,即使在這裡你也必須小心。 如果在上面的設計中,輸入和輸出均勻分佈在eFPGA陣列的邊上,那麼隨著位置/路徑軟件將關鍵路徑最小化,將具有更均勻地分散LUT的效果。因此,當使用這種可視檢查時,嘗試將輸入和輸出分組到eFPGA的一個角落,這樣,位置/路線軟件就可以將LUT放在一起,以最小化關鍵路徑。

步驟5:對輸入和輸出容量進行基準測試

一些基於eFPGA的應用程序需要大量的輸入和輸出。例如,網絡芯片的總線可以是512位寬(有時甚至數千位寬)。 您需要查看每個K-LUT可用的輸入和輸出計數,看看它是否在滿足您需求的範圍內。

結論

eFPGA是令人興奮的新工具,它使SoC架構師可以使他們的芯片更加靈活和可重新配置。使用上面的指導原則,您將能夠更快地找到最適合您獨特應用程序、特定需求的eFPGA。如果您選擇正確的解決方案,您將能夠充分發揮eFPGA的潛力。


分享到:


相關文章: