<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 原型驗(yàn)證過(guò)程中的ASIC到FPGA的代碼轉(zhuǎn)換

          原型驗(yàn)證過(guò)程中的ASIC到FPGA的代碼轉(zhuǎn)換

          ——
          作者:同濟(jì)大學(xué)微電子中心 章瑋 時(shí)間:2006-09-20 來(lái)源:今日電子 收藏

          在對(duì)ASIC設(shè)計(jì)進(jìn)行原型驗(yàn)證時(shí),由于物理結(jié)構(gòu)不同,ASIC的代碼必須進(jìn)行一定的轉(zhuǎn)換后才能作為的輸入

          現(xiàn)代集成電路設(shè)計(jì)中,芯片的規(guī)模和復(fù)雜度正呈指數(shù)增加。尤其在ASIC設(shè)計(jì)流程中,驗(yàn)證和調(diào)試所花的時(shí)間約占總工期的70%。為了縮短驗(yàn)證周期,在傳統(tǒng)的仿真驗(yàn)證的基礎(chǔ)上,涌現(xiàn)了許多新的驗(yàn)證手段,如斷言驗(yàn)證、覆蓋率驅(qū)動(dòng)的驗(yàn)證,以及廣泛應(yīng)用的基于現(xiàn)場(chǎng)可編程器件()的原型驗(yàn)證技術(shù)。

          采用FPGA原型技術(shù)驗(yàn)證ASIC設(shè)計(jì),首先需要把ASIC設(shè)計(jì)轉(zhuǎn)化為FPGA設(shè)計(jì)。但ASIC是基于標(biāo)準(zhǔn)單元庫(kù),F(xiàn)PGA則是基于查找表,ASIC和FPGA物理結(jié)構(gòu)上的不同,決定了ASIC代碼需要一定的修改才能移植到FPGA上。但應(yīng)該注意到這只是由于物理結(jié)構(gòu)不同而對(duì)代碼進(jìn)行的轉(zhuǎn)換,并不改變其功能,因此對(duì)代碼的這種修改只能限制在一定范圍內(nèi)。

          基本原理

          • 基于FPGA原型驗(yàn)證的流程

            由于FPGA的可編程特性,基于FPGA的原型技術(shù)已經(jīng)被廣泛采用。和仿真軟件相比,F(xiàn)PGA的硬件特性可以讓設(shè)計(jì)運(yùn)行在較高的頻率上,加速仿真。另一方面,可以在ASIC芯片設(shè)計(jì)前期并行設(shè)計(jì)外圍電路及應(yīng)用軟件,縮短了芯片驗(yàn)證周期。

            FPGA原型驗(yàn)證和其他驗(yàn)證方法是不同的,任何一種其他驗(yàn)證方法都是ASIC驗(yàn)證中的一個(gè)環(huán)節(jié),而FPGA驗(yàn)證卻是一個(gè)過(guò)程。由于FPGA與ASIC在結(jié)構(gòu)、性能上各不相同,ASIC是基于標(biāo)準(zhǔn)單元庫(kù),F(xiàn)PGA用的是廠商提供的宏單元模塊,因此首先要進(jìn)行寄存器傳輸級(jí)(RTL)代碼的修改。然后進(jìn)行FPGA器件映射,映射工具根據(jù)設(shè)置的約束條件對(duì)RTL代碼進(jìn)行邏輯優(yōu)化,并針對(duì)選定的FPGA器件的基本單元映射生成網(wǎng)表。接著進(jìn)行布局布線,生成配置文件和時(shí)序報(bào)告等信息。當(dāng)時(shí)序能滿足約束條件時(shí),就可以利用配置文件進(jìn)行下載。如果時(shí)序不能滿足約束,可通過(guò)軟件報(bào)告時(shí)序文件來(lái)確認(rèn)關(guān)鍵路徑,進(jìn)行時(shí)序優(yōu)化。可以通過(guò)修改約束條件,或者修改RTL代碼來(lái)滿足要求。
          • 需要轉(zhuǎn)換的代碼
            1. 存儲(chǔ)單元

              存儲(chǔ)單元是必須進(jìn)行代碼轉(zhuǎn)換的,ASIC中的存儲(chǔ)單元通常用代工廠所提供的Memory Compiler來(lái)定制,它可以生成.gsp、.v等文件。.v文件只用來(lái)做功能仿真,通常不能綜合。而最后流片時(shí),只需將標(biāo)準(zhǔn)提供給代工廠。如果直接將ASIC代碼中的存儲(chǔ)單元作為FPGA的輸入,通常綜合器是綜合不出來(lái)的,即使能綜合出來(lái),也要花費(fèi)很長(zhǎng)時(shí)間,并且資源消耗多、性能不好。而FPGA廠商其實(shí)已經(jīng)提供了經(jīng)過(guò)驗(yàn)證并優(yōu)化的存儲(chǔ)單元。因此存儲(chǔ)單元要進(jìn)行代碼轉(zhuǎn)換。
            2. 時(shí)鐘單元

              數(shù)字電路中,時(shí)鐘是整個(gè)電路最重要、最特殊的信號(hào)。在ASIC中,用布局布線工具來(lái)放置時(shí)鐘樹,利用代工廠提供的PLL進(jìn)行時(shí)鐘設(shè)計(jì)。FPGA中通常已經(jīng)配置一定數(shù)量的PLL宏單元,并有針對(duì)時(shí)鐘優(yōu)化的全局時(shí)鐘網(wǎng)絡(luò),一般是經(jīng)過(guò)FPGA的特定全局時(shí)鐘管腳進(jìn)入FPGA內(nèi)部,后經(jīng)過(guò)全局時(shí)鐘BUF適配到全局時(shí)鐘網(wǎng)絡(luò)的,這樣的時(shí)鐘網(wǎng)絡(luò)可以保證相同的時(shí)鐘沿到達(dá)芯片內(nèi)部每一個(gè)觸發(fā)器的延遲時(shí)間差異是可以忽略不計(jì)的。因此時(shí)鐘單元也是需要進(jìn)行轉(zhuǎn)換的。
            3. 增加流水

              由于實(shí)現(xiàn)結(jié)構(gòu)上的不同,F(xiàn)PGA器件內(nèi)部的單元延時(shí)遠(yuǎn)大于ASIC的基本門單元延時(shí)。導(dǎo)致在同樣設(shè)計(jì)的情況下,ASIC可以滿足其時(shí)序,而FPGA有可能無(wú)法滿足。為了驗(yàn)證的需要,修改ASIC代碼實(shí)現(xiàn)FPGA原型時(shí),對(duì)ASIC實(shí)現(xiàn)的流水結(jié)構(gòu)在FPGA實(shí)現(xiàn)時(shí)需要適當(dāng)增加流水。比如在一個(gè)很長(zhǎng)的組合邏輯路徑中加入寄存器。如圖1所示。


              圖1 增加流水

            4. 同步設(shè)計(jì)

              在FPGA設(shè)計(jì)中,同步設(shè)計(jì)是應(yīng)該遵循的重要原則。異步設(shè)計(jì)容易導(dǎo)致電路處于亞穩(wěn)態(tài),產(chǎn)生毛刺。當(dāng)從ASIC設(shè)計(jì)轉(zhuǎn)向FPGA設(shè)計(jì)時(shí),應(yīng)該進(jìn)行仔細(xì)的同步。具體體現(xiàn)在主時(shí)鐘選取、功能模塊的統(tǒng)一復(fù)位、同步時(shí)序電路設(shè)計(jì)。

              在FPGA設(shè)計(jì)中要使用時(shí)鐘使能代替門控時(shí)鐘。在ASIC的設(shè)計(jì)中,為了減少功耗,使用門控時(shí)鐘(clock gating),門控時(shí)鐘的結(jié)構(gòu)如圖2所示。當(dāng)寫有效時(shí),數(shù)據(jù)才寫進(jìn)存儲(chǔ)器,那么只有寫有效時(shí),寄存器才會(huì)發(fā)生翻轉(zhuǎn),這樣可以減少功耗。


              圖2 門控時(shí)鐘示意圖


              由于設(shè)計(jì)的異步特性,對(duì)于FPGA來(lái)說(shuō),使用這種門控時(shí)鐘容易產(chǎn)生毛刺,導(dǎo)致數(shù)據(jù)不正確。所以在FPGA設(shè)計(jì)中,使用有使能信號(hào)的電路來(lái)替換門控時(shí)鐘電路??梢栽诩拇嫫髑懊婕由螹UX來(lái)實(shí)現(xiàn)時(shí)鐘使能信號(hào),如圖3所示?,F(xiàn)在的FPGA廠商則提供可以直接有使能,同步SET和RESET引腳的寄存器,如圖4所示。


              圖3 用MUX生成時(shí)鐘使能信號(hào)




              圖4 FPGA內(nèi)帶有時(shí)鐘使能的寄存器

            5. 充分利用FPGA中已有的IP核

              FPGA廠商及第三方廠商已經(jīng)實(shí)現(xiàn)并優(yōu)化了很多典型的IP核,例如Xilinx提供了基礎(chǔ)邏輯、總線接口與I/O、視頻與圖像處理、數(shù)字信號(hào)處理、存儲(chǔ)器接口、微處理器、控制器等大量IP核。在代碼轉(zhuǎn)換時(shí)可以充分利用這些資源,對(duì)代碼進(jìn)行優(yōu)化來(lái)提高設(shè)計(jì)性能。如在FPGA中使用SRL實(shí)現(xiàn)移位寄存器,用三態(tài)Buffer來(lái)替換三態(tài)總線和三態(tài)MUX,改進(jìn)算術(shù)單元和有限狀態(tài)機(jī)的編碼。

          代碼轉(zhuǎn)換的實(shí)現(xiàn)

          結(jié)合同濟(jì)大學(xué)微電子中心的“32位高性能嵌入式CPU開發(fā)”項(xiàng)目,為了在流片之前確保功能的可靠性,對(duì)32位全定制高性能嵌入式CPU bc320進(jìn)行了原型驗(yàn)證。

          設(shè)計(jì)采用Memec Design公司的FF1152開發(fā)板。該板使用了Xilinx的Virtex-Ⅱ Pro系列芯片中的XC2VP30。該FPGA擁有30 816個(gè)邏輯單元,相當(dāng)于有30多萬(wàn)的ASCI門。另有2Mb的片上Block RAM,644個(gè)I/O口。采用了Xilinx的全自動(dòng)、完整的集成設(shè)計(jì)環(huán)境ISE 7.1i,進(jìn)行FPGA綜合使用的工具是Synplify Pro。

          用bc320的ASIC RTL代碼作為FPGA的輸入,具體的代碼轉(zhuǎn)換如下。

          • 存儲(chǔ)單元

            設(shè)計(jì)中用到了很多SRAM,例如Icache中的SRAM。在FPGA實(shí)現(xiàn)時(shí)根據(jù)所需RAM的寬度、深度和功能來(lái)決定采用哪種單元來(lái)進(jìn)行替換。Xilinx提供了片外RAM、Block RAM和LUT RAM。

            ISE提供了兩種具體的實(shí)現(xiàn)方法:IP生成器(Core Generator)和語(yǔ)言模板(Language Templates)。IP生成器是Xilinx FPGA設(shè)計(jì)中的一個(gè)重要設(shè)計(jì)輸入工具,它提供了大量Xilinx和第三方公司設(shè)計(jì)的成熟高效IP核。

            這里是用Core Generator來(lái)產(chǎn)生了名為塊存儲(chǔ)器(Block Memory)的單口存儲(chǔ)器模塊。Core Generator用圖形化設(shè)置參數(shù)的方式來(lái)提供塊存儲(chǔ)器,其界面如圖5所示。塊存儲(chǔ)器的大小根據(jù)向量的大小來(lái)制定,一個(gè)普通單元向量只需要4個(gè)512

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();