眾所周知,目前的FPGA EDA設(shè)計(jì)軟件大都運(yùn)行在x86的CPU上,而在很多領(lǐng)域,F(xiàn)PGA加速器又可以作為CPU的協(xié)處理器進(jìn)行計(jì)算加速。那么,F(xiàn)PGA本身是否可以用來(lái)對(duì)FPGA EDA,比如綜合、布局、布線的過(guò)程進(jìn)行加速呢?
前陣子在Reddit上看到了這個(gè)問(wèn)題,引發(fā)了很多思考,后來(lái)查了些資料,還真有這么一本書(shū)在一定程度上系統(tǒng)解答了這個(gè)問(wèn)題:
這本書(shū)研究了加速EDA算法的硬件平臺(tái),如ASIC,F(xiàn)PGA和GPU。覆蓋范圍包括討論在何種條件下使用一個(gè)平臺(tái)優(yōu)于另一個(gè)平臺(tái),例如,當(dāng)EDA問(wèn)題具有高度的數(shù)據(jù)并行性時(shí),GPU通常是首選平臺(tái),而當(dāng)問(wèn)題具有更多的控制因素時(shí),F(xiàn)PGA可能是首選的。書(shū)里還給出了幾種EDA算法(故障仿真、故障表生成、SPICE模型卡評(píng)估、基于蒙特卡洛的統(tǒng)計(jì)靜態(tài)時(shí)序分析、布爾可滿足性)的加速結(jié)果,與這些算法的單核實(shí)現(xiàn)相比,可將運(yùn)行速度提高800倍以上。
該書(shū)作在如何最好地利用并行性來(lái)加速EDA算法方面給出了很有價(jià)值的參考。書(shū)中還提出了一種在一組約束條件下,從常規(guī)單處理器代碼中自動(dòng)提取SIMD(單指令多數(shù)據(jù)流)并行性的方法。使用這種方法,這種單處理器代碼可以自動(dòng)轉(zhuǎn)換為GPU代碼,實(shí)現(xiàn)顯著加速。這種方法特別有用,因?yàn)椴煌腉PU通常有不同的規(guī)格,在這種情況下手工生成GPU代碼變得不太現(xiàn)實(shí)。
該書(shū)提供了在加速特定EDA算法時(shí)使用ASIC、GPU還是FPGA的指導(dǎo)方針,并用在這些平臺(tái)上實(shí)現(xiàn)的一個(gè)具體示例(布爾可滿足性)驗(yàn)證了這些建議;通過(guò)介紹可供讀者使用的示例算法來(lái)幫助讀者確定如何最好地加速其EDA算法;討論一種自動(dòng)生成GPU代碼的方法(給出一定約束下的常規(guī)單處理器代碼的條件下)。
其中在該書(shū)的第五章唯一提到了FPGA平臺(tái)加速,也就是Accelerating Boolean Satisfiability on an FPGA章節(jié),提出了一種基于FPGA的SAT方法,在該方法中,Implication Graph的遍歷和Conflict Clause的生成是在硬件中并行執(zhí)行的,并且Clause Literal存儲(chǔ)在FPGA Slice單元里,為了解決復(fù)雜的SAT問(wèn)題,啟發(fā)式地將clause劃分為許多“bin”,每個(gè)bin都可以fit進(jìn)FPGA中,最后得到結(jié)論,在使用了Virtex-4 (XC4VFX140) FPGA 之后,可以比MiniSAT(純軟件最好的算法)快90倍。但以上這些也僅僅涉及到綜合中的一部分,對(duì)于布局布線等其他EDA流程沒(méi)有深入研究,而且全書(shū)也沒(méi)有特別針對(duì)FPGA EDA算法,而是對(duì)幾個(gè)一般性EDA問(wèn)題做了探討。
也許未來(lái)會(huì)有有人出一本專(zhuān)門(mén)講FPGA EDA加速平臺(tái)的書(shū),再或許,有人會(huì)做一款專(zhuān)門(mén)用于FPGA EDA加速的SoC出來(lái)呢?:)
更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<