嵌入式FPGA(eFPGA)是指將一個或多個FPGA以IP的形式嵌入ASIC,,ASSP或SoC等芯片中。
換句話說,eFPGA是一種數(shù)字可重構(gòu)結(jié)構(gòu),,由可編程互連中的可編程邏輯組成,,通常表現(xiàn)為矩形陣列,數(shù)據(jù)輸入和輸出位于邊緣周圍,。 eFPGA通常具有數(shù)百或數(shù)千個輸入和輸出,,可連接到總線、數(shù)據(jù)路徑,、控制路徑,、GPIO、PHY或任何需要的器件,。
所有eFPGA都將查找表(LUT)作為基本構(gòu)建模塊,。 LUT有N個輸入選擇一個小表,其輸出表示N個輸入的任何需要的布爾函數(shù),。 有些eFPGA LUT有四個輸入,,有的有六個。有些LUT有兩個輸出,。 LUT通常在輸出端具有觸發(fā)器; 這些可以用來存儲結(jié)果,。這些LUT寄存器組合通常以四進制形式出現(xiàn),還有進位算術(shù)和移位器,,以便有效地實現(xiàn)加法器,。
LUT接收來自可編程互聯(lián)網(wǎng)絡(luò)的所有輸入,并將其所有輸出反饋到可編程互連網(wǎng)絡(luò),。
除了LUT之外,,eFPGA還可能包含MAC(乘法器/累加器模塊)。 它們也連接到可編程互連網(wǎng)絡(luò),,用于提供更高效的數(shù)字信號處理(DSP)和人工智能(AI)功能,。 對于內(nèi)存來說,有大量的RAM,,通常是雙端口的封裝,。至于LUT和MAC,通過RAM連接到可編程互連網(wǎng)絡(luò),。
eFPGA具有輸入和輸出引腳的外環(huán),,將eFPGA連接到SoC的其它部分,這些引腳也連接到可編程的互連網(wǎng)絡(luò),。
軟件工具用于合成Verilog或VHDL代碼,,以編程eFPGA邏輯和互連來實現(xiàn)任何所需的功能。
eFPGA是方便的新邏輯塊,,可在許多方面提高SoC的價值,,其中包括:
使用數(shù)百個LUT的廣泛,快速的控制邏輯;
可重新配置的網(wǎng)絡(luò)協(xié)議;
用于視覺或人工智能的可重構(gòu)算法;
用于航空航天應(yīng)用的可重配置DSP;
用于MCU和SoC的可重配置加速器。
除了以上這些,,還有更多,,這里就不一一介紹了。
當今,,已經(jīng)有了一些eFPGA供應(yīng)商,,主要包括Achronix,F(xiàn)lex Logix,,Menta和QuickLogic,此外,,還有一些較小的供應(yīng)商,。有了這些選擇,客戶需要決定哪一個最能滿足他們的需求,。那么,,要如何選擇呢? 雖然需要考慮商業(yè)因素,但本文重點討論技術(shù)因素,。
第1步:制程的兼容性
通常情況下,,即使在IP評估的早期階段,公司也會選擇foundry廠和工藝節(jié)點,。而臺積電,、GlobalFoundries和SMIC現(xiàn)在或正在開發(fā)針對包括65nm,40nm,,28nm,,22nm,16nm,,14nm和7nm工藝節(jié)點的eFPGA,。
但是,并非所有供應(yīng)商對所有代工廠/工藝節(jié)點都有eFPGA,,至少目前還沒有,。 通過他們的網(wǎng)站檢查哪些與您的制程兼容非常重要。 您還應(yīng)該看看所討論的eFPGA是否已經(jīng)在芯片中進行了驗證,,并在NDA下提供了報告,。
不要忘記檢查金屬堆棧的兼容性。您選擇的關(guān)鍵IP,,如SerDes或您的應(yīng)用可能需要您使用特定的金屬堆棧,,但并非所有eFPGA IP都與所有金屬堆棧兼容。
第2步:陣列大小和功能
并非所有的eFPGA供應(yīng)商都可以做非常小規(guī)模的eFPGA,,同時,,并不是所有廠商都可以做出規(guī)模非常大的eFPGA。另外,它們支持的MAC和RAM的性質(zhì)可能會有所不同,。
對于您是否需要數(shù)百個LUT或數(shù)十萬個LUT,,以及您對MAC和RAM的需求,這可能會篩選出一些供應(yīng)商,。
步驟3:使用RTL進行基準測試
eFPGA供應(yīng)商會為您提供用于評估的軟件,,以便您可以確定(RTL)每個eFPGA可以實現(xiàn)的硅面積和性能。您需要eFPGA能夠在與SoC其余部分相同的溫度和電壓范圍內(nèi)運行,,因此請確保您需要的是支持的,。
在進行基準測試時,將蘋果與蘋果進行比較(compare apples to apples)非常重要,。例如,,您應(yīng)該在相同的工藝(slow/slow or typ/typ or fast/fast)以及相同電壓和相同溫度下比較每個eFPGA。您應(yīng)該期望來自eFPGA供應(yīng)商的軟件工具將允許您檢查不同工藝轉(zhuǎn)角和電壓組合下的性能,。
請注意,,您的RTL適用于eFPGA。如果從硬連線ASIC設(shè)計中采用RTL,,則觸發(fā)器之間往往會有20~30個邏輯層,。如果你把它放在沒有優(yōu)化的eFPGA中,它會運行得非常慢,。在eFPGA中,,LUT輸出總是有觸發(fā)器,您可以使用它們向RTL添加更多的流水線,,以在eFPGA中獲得更高的性能,。
談到RTL,確保你正在測試什么對你很重要,。
一個16位加法器,。你關(guān)心的是它的運行速度有多快,但是如果你不小心,,看到的結(jié)果可能會讓你感到驚訝?,F(xiàn)在想象一個大的eFPGA。如果加法器放置在陣列的一個角落,,輸入和輸出接近,,則性能將遠高于在陣列中間找到加法器的情況。這是因為如果您觀察從陣列輸入到陣列輸出的性能,,當加法器位于陣列中間時,,到數(shù)據(jù)輸入和加法器輸出的加法器的距離會更長。實際上,,加法器是相同的,,并且在兩個位置運行速度都很快,。問題在于你的測試沒有隔離加法器的性能,但它也加入了達到加法器所需的信號,。
下圖是一個例子,,它使用一個LUT來布線,LUT速度不會改變,,但通過互連進入和離開LUT的延遲會發(fā)生,。
為了應(yīng)對這種效應(yīng),尤其是因為您可能會比較兩種不同尺寸的eFPGA,,您需要做的是在輸入和輸出上設(shè)置寄存器,,這可確保您關(guān)心的性能均可測量,不受陣列的大小和位置的限制,。