前面有講到過(guò),FPGA原型設(shè)計(jì)是在芯片流片之前最接近芯片應(yīng)用真實(shí)環(huán)境的場(chǎng)景,這個(gè)真實(shí)環(huán)境不僅僅是說(shuō)外部物理環(huán)境接近,還在于性能速率是最接近的,當(dāng)然真的比起ASIC芯片的實(shí)際速率還是差的很多的,當(dāng)然這個(gè)速率已經(jīng)是流片之前能模擬的最佳場(chǎng)景了,所以對(duì)于軟件的debug作用就很大了。那么,F(xiàn)PGA原型平臺(tái)到底能跑多快呢?
FPGA原型平臺(tái)的性能估計(jì)與應(yīng)用過(guò)程的資源利用率以及FPGA性能參數(shù)密切相關(guān),甚至FPGA的制程也是一個(gè)因素。性能從相關(guān)的FPGA資源數(shù)據(jù)表中的時(shí)序信息中容易地提取特殊功能模塊的估計(jì)。但要評(píng)估FPGA原型平臺(tái)的整體速率是很困難的。但是,可以從綜合工具獲得整個(gè)設(shè)計(jì)比較好的性能估計(jì)。盡管綜合工具會(huì)考慮布線的延遲,但布線實(shí)際延遲時(shí)間取決于FPGA的位置和布線過(guò)程,并且可能與綜合工具的估計(jì)不同。在較高的利用率水平下,由于布線可能變得更困難,因此差異可能會(huì)很明顯,但初始性能估計(jì)是一個(gè)非常有用的指導(dǎo)。
現(xiàn)代原型驗(yàn)證平臺(tái)中采用的FPGA芯片,很多是多die封裝的芯片(例如VU19P等),使用多die FPGA時(shí),或多或少的都遇到過(guò)時(shí)序收斂問題;而這些時(shí)序收斂的問題很大程度上影響性能,F(xiàn)PGA性能在很大程度上取決于提供給綜合工具的約束。而這些約束取決于FPGA工程師的經(jīng)驗(yàn),這些約束指導(dǎo)綜合工具以及隨后的布局布線工具如何最佳地實(shí)現(xiàn)期望的性能。以下的總結(jié)非常受到認(rèn)可,因此直接引用過(guò)來(lái)。
多die芯片其實(shí)是SSI(Stacked Silicon Interconnect)芯片,其結(jié)構(gòu)如下圖所示。其實(shí)就是在一個(gè)封裝里,把多個(gè)芯片,也就是我們說(shuō)的SLR(Super Logic Region)用interposer“綁”在一起,SLR之間的連接用專用布線資源SLL(Super Long Line)。
該截圖來(lái)自xilinx文檔872 - Large FPGA Methodology Guide (v14.3)
多die芯片為什么容易出現(xiàn)時(shí)序問題了,一個(gè)是SLL資源有限,兩個(gè)SLR之間的SSL資源是有限的。第二個(gè)就是本身die之間的走線延時(shí)相對(duì)比較長(zhǎng)。
第一、從方案架構(gòu)設(shè)計(jì)的角度看,F(xiàn)PGA的設(shè)計(jì)其實(shí)是數(shù)據(jù)流0和1的流動(dòng)路徑的設(shè)計(jì),即數(shù)據(jù)流在不同模塊之間進(jìn)行傳遞。多die的FPGA中,關(guān)鍵就是處理相關(guān)數(shù)據(jù)流跨die傳輸?shù)膯栴}。在方案設(shè)計(jì)階段,首先要考慮一級(jí)模塊在不同die中的分布。如何合理分配一級(jí)模塊的布局,主要從以下2個(gè)方面考慮。
(1)資源,各個(gè)一級(jí)模塊分布在各個(gè)die的時(shí)候,要進(jìn)行合理的資源評(píng)估,考慮到資源占用情況,建議每個(gè)die中LUT在60%左右(原文是不超過(guò)70%),REG資源不超過(guò)80%,RAM資源不超過(guò)80%。即moudle A + moudle B的資源盡量不要超過(guò)上述限制,如果超過(guò),就要考慮把一個(gè)模塊做拆分,移入SLR1或者SLR2中。如果想跑的更快,建議資源利用率在50%左右。
(2)數(shù)據(jù)流,以die為單位,做到高內(nèi)聚、低耦合。一級(jí)模塊(越往頂層的方向)之間的接口要簡(jiǎn)單,盡量采用流式接口。數(shù)據(jù)流也要簡(jiǎn)單,數(shù)據(jù)流不要在各個(gè)die之間來(lái)回穿越(input和output減少交互)。即一級(jí)模塊劃分的時(shí)候,不但要考慮資源,還要考慮數(shù)據(jù)流的走向。
第二、在具體實(shí)現(xiàn)中,對(duì)于跨die的信號(hào)處理,官方的文檔(ug949)中提供了2種方式,一種是通過(guò)約束的方式使用LAGUNA寄存器,一種是通過(guò)自動(dòng)流水打拍的方式。秉承問題的解決能用代碼就不用約束的思想,這里介紹一種和官方指導(dǎo)的第二種方案類似的方法,但是是用RTL代碼解決,可移植性更好。如下圖所示,紅色打拍邏輯(將所有的跨die信號(hào)打2-3拍)插入在跨die數(shù)據(jù)流的兩側(cè)。對(duì)于穿越整個(gè)die的數(shù)據(jù)流,比如module B到module C的數(shù)據(jù)流,可以在中間die插入一個(gè)過(guò)橋的打拍模塊。這種方案在實(shí)踐中被證明也能很好地解決時(shí)序收斂問題。
第三、復(fù)位信號(hào)的處理??鏳ie邏輯中有一類時(shí)序收斂問題就是復(fù)位信號(hào)的問題。筆者曾遇到一個(gè)問題,如下左圖所示,復(fù)位邏輯在中間的die,復(fù)位3個(gè)die的所有邏輯。每個(gè)die的資源消耗比較高,LUT在70%,RAM在80%,REG相對(duì)好點(diǎn),不到50%。最終因?yàn)樯瘸鲚^大,導(dǎo)致Recovery不滿足。
解決方案很簡(jiǎn)單,就是將復(fù)位信號(hào)先同步到各個(gè)die后,只復(fù)位一個(gè)die的邏輯,這樣很好地解決了大量復(fù)位信號(hào)跨die問題,如下右圖所示。
總結(jié),解決多die FPGA的時(shí)序收斂問題,就是合理規(guī)劃數(shù)據(jù)流、復(fù)位的方案,跨die數(shù)據(jù)流做好“橋接”。
有許多因素影響映射到多FPGA系統(tǒng)設(shè)計(jì)的時(shí)鐘速率,如下所述:
設(shè)計(jì)類型:高度流水線化的設(shè)計(jì)可以更好地映射到FPGA的資源架構(gòu)中,并利用其豐富的FF,可能比流水線化程度較低的設(shè)計(jì)運(yùn)行得更快。
設(shè)計(jì)內(nèi)部連接:具有復(fù)雜連接的設(shè)計(jì)(其中許多節(jié)點(diǎn)具有較高的扇出)將比具有較低扇出連接的設(shè)計(jì)運(yùn)行得慢,因?yàn)榭赡艽嬖谳^長(zhǎng)的布線延遲。在設(shè)計(jì)中也很難找到分區(qū)解決方案的位置,因?yàn)橹挥泻苌俚腎O可以容納在FPGA面積內(nèi)。更高的互連設(shè)計(jì)將更可能需要將多個(gè)信號(hào)復(fù)用到相同的IO引腳上。
資源利用率級(jí)別:通常利用率級(jí)別越高,設(shè)計(jì)越擁擠,導(dǎo)致內(nèi)部延遲越長(zhǎng),時(shí)鐘速率越慢。
FPGA性能:FPGA本身的性能。即使采用了比較合適的優(yōu)化的FPGA版本設(shè)計(jì),我們最終也會(huì)達(dá)到FPGA結(jié)構(gòu)的上限。然而,在大多數(shù)情況下,在FPGA的絕對(duì)內(nèi)部時(shí)鐘速率之前,設(shè)計(jì)的非優(yōu)化性質(zhì)和工具的效率將被視為一個(gè)極限。
FPGA間時(shí)鐘:在多FPGA系統(tǒng)中,F(xiàn)PGA到FPGA的時(shí)鐘偏移和連接延遲會(huì)限制系統(tǒng)時(shí)鐘速率。雖然FPGA理論上可以以數(shù)百兆的時(shí)鐘速率運(yùn)行內(nèi)部邏輯,但其標(biāo)準(zhǔn)IO速度明顯較慢,通常是限制系統(tǒng)時(shí)鐘速率的主要因素。
外部接口:映射到FPGA原型系統(tǒng)中的SoC設(shè)計(jì)可能以比SoC目標(biāo)時(shí)鐘慢的時(shí)鐘速率運(yùn)行。除了預(yù)期的性能損失外,這并不是很大對(duì)于沒有外部刺激運(yùn)行的封閉系統(tǒng)或刺激可以以較慢的速率運(yùn)行以匹配系統(tǒng)時(shí)鐘速率的系統(tǒng)而言,這是一個(gè)問題。在某些情況下,原型系統(tǒng)必須與無(wú)法減緩的刺激交互。
FPGA間連接:當(dāng)所有FPGA間IO連接耗盡時(shí),可以使用引腳復(fù)用。在多時(shí)域復(fù)用(TDM)中,多個(gè)信號(hào)通過(guò)以比復(fù)用在一起的單個(gè)信號(hào)的數(shù)據(jù)速率更快的時(shí)鐘運(yùn)行而共享單個(gè)引腳。例如,當(dāng)復(fù)用四個(gè)信號(hào)時(shí)(TDM為1:4),假設(shè)要每個(gè)信號(hào)以20MHz的速率運(yùn)行,組合信號(hào)將需要至少以80MHz的速率運(yùn)行并且實(shí)際上更高,以便允許第一個(gè)和最后一個(gè)采樣信號(hào)的定時(shí)。由于FPGA到FPGA的數(shù)據(jù)速率受到物理FPGA引腳和電路板板間傳播延遲的限制,因此本示例中單個(gè)信號(hào)的有效數(shù)據(jù)速率將僅小于最大FPGA間數(shù)據(jù)速率的四分之一。
審核編輯:劉清
-
寄存器
+關(guān)注
關(guān)注
31文章
5250瀏覽量
119194 -
RAM
+關(guān)注
關(guān)注
8文章
1344瀏覽量
114213 -
RTL
+關(guān)注
關(guān)注
1文章
384瀏覽量
59515 -
SSI
+關(guān)注
關(guān)注
0文章
37瀏覽量
19165 -
FPGA芯片
+關(guān)注
關(guān)注
3文章
246瀏覽量
39668
原文標(biāo)題:FPGA原型平臺(tái)能跑多快?如何優(yōu)化
文章出處:【微信號(hào):于博士Jacky,微信公眾號(hào):于博士Jacky】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論