ASIC設(shè)計轉(zhuǎn)FPGA時需要注意的幾點(diǎn)
FPGA原型驗證和其他驗證方法是不同的,任何一種其他驗證方法都是ASIC驗證中的一個環(huán)節(jié),而FPGA驗證卻是一個過程。由于FPGA與ASIC在結(jié)構(gòu)、性能上各不相同,ASIC是基于標(biāo)準(zhǔn)單元庫,FPGA用的是廠商提供的宏單元模塊,因此首先要進(jìn)行寄存器傳輸級(RTL)代碼的修改。然后進(jìn)行FPGA器件映射,映射工具根據(jù)設(shè)置的約束條件對RTL代碼進(jìn)行邏輯優(yōu)化,并針對選定的FPGA器件的基本單元映射生成網(wǎng)表。接著進(jìn)行布局布線,生成配置文件和時序報告等信息。當(dāng)時序能滿足約束條件時,就可以利用配置文件進(jìn)行下載。如果時序不能滿足約束,可通過軟件報告時序文件來確認(rèn)關(guān)鍵路徑,進(jìn)行時序優(yōu)化。可以通過修改約束條件,或者修改RTL代碼來滿足要求。
本文引用地址:http://www.ex-cimer.com/article/201710/365650.htm需要轉(zhuǎn)換的代碼
存儲單元
存儲單元是必須進(jìn)行代碼轉(zhuǎn)換的,ASIC中的存儲單元通常用代工廠所提供的Memory Compiler來定制,它可以生成.gsp、.v等文件。.v文件只用來做功能仿真,通常不能綜合。而最后流片時,只需將標(biāo)準(zhǔn)提供給代工廠。如果直接將ASIC代碼中的存儲單元作為FPGA的輸入,通常綜合器是綜合不出來的,即使能綜合出來,也要花費(fèi)很長時間,并且資源消耗多、性能不好。而FPGA廠商其實已經(jīng)提供了經(jīng)過驗證并優(yōu)化的存儲單元。因此存儲單元要進(jìn)行代碼轉(zhuǎn)換。
時鐘單元
數(shù)字電路中,時鐘是整個電路最重要、最特殊的信號。在ASIC中,用布局布線工具來放置時鐘樹,利用代工廠提供的PLL進(jìn)行時鐘設(shè)計。FPGA中通常已經(jīng)配置一定數(shù)量的PLL宏單元,并有針對時鐘優(yōu)化的全局時鐘網(wǎng)絡(luò),一般是經(jīng)過FPGA的特定全局時鐘管腳進(jìn)入FPGA內(nèi)部,后經(jīng)過全局時鐘BUF適配到全局時鐘網(wǎng)絡(luò)的,這樣的時鐘網(wǎng)絡(luò)可以保證相同的時鐘沿到達(dá)芯片內(nèi)部每一個觸發(fā)器的延遲時間差異是可以忽略不計的。因此時鐘單元也是需要進(jìn)行轉(zhuǎn)換的。
增加流水
由于實現(xiàn)結(jié)構(gòu)上的不同,FPGA器件內(nèi)部的單元延時遠(yuǎn)大于ASIC的基本門單元延時。導(dǎo)致在同樣設(shè)計的情況下,ASIC可以滿足其時序,而FPGA有可能無法滿足。為了驗證的需要,修改ASIC代碼實現(xiàn)FPGA原型時,對ASIC實現(xiàn)的流水結(jié)構(gòu)在FPGA實現(xiàn)時需要適當(dāng)增加流水。比如在一個很長的組合邏輯路徑中加入寄存器。
同步設(shè)計
在FPGA設(shè)計中,同步設(shè)計是應(yīng)該遵循的重要原則。異步設(shè)計容易導(dǎo)致電路處于亞穩(wěn)態(tài),產(chǎn)生毛刺。當(dāng)從ASIC設(shè)計轉(zhuǎn)向FPGA設(shè)計時,應(yīng)該進(jìn)行仔細(xì)的同步。具體體現(xiàn)在主時鐘選取、功能模塊的統(tǒng)一復(fù)位、同步時序電路設(shè)計。在FPGA設(shè)計中要使用時鐘使能代替門控時鐘。在ASIC的設(shè)計中,為了減少功耗,使用門控時鐘(clock gaTIng),門控時鐘的結(jié)構(gòu)如圖2所示。當(dāng)寫有效時,數(shù)據(jù)才寫進(jìn)存儲器,那么只有寫有效時,寄存器才會發(fā)生翻轉(zhuǎn),這樣可以減少功耗。
評論