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