當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]在對(duì)asic設(shè)計(jì)進(jìn)行fpga原型驗(yàn)證時(shí),由于物理結(jié)構(gòu)不同,asic的代碼必須進(jìn)行一定的轉(zhuǎn)換后才能作為fpga的輸入。現(xiàn)代集成電路設(shè)計(jì)中,芯片的規(guī)模和復(fù)雜度正呈指數(shù)增加。尤其在asic設(shè)計(jì)流程中,驗(yàn)證和調(diào)試所花的時(shí)間約占總

在對(duì)asic設(shè)計(jì)進(jìn)行fpga原型驗(yàn)證時(shí),由于物理結(jié)構(gòu)不同,asic的代碼必須進(jìn)行一定的轉(zhuǎn)換后才能作為fpga的輸入?,F(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)可編程器件(fpga)的原型驗(yàn)證技術(shù)。

采用fpga原型技術(shù)驗(yàn)證asic設(shè)計(jì),首先需要把a(bǔ)sic設(shè)計(jì)轉(zhuǎn)化為fpga設(shè)計(jì)。但asic是基于標(biāo)準(zhǔn)單元庫(kù),fpga則是基于查找表,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)被廣泛采用。和仿真軟件相比,fpga的硬件特性可以讓設(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ù),fpga用的是廠商提供的宏單元模塊,因此首先要進(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)換的代碼
存儲(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)換。
時(shí)鐘單元

數(shù)字電路中,時(shí)鐘是整個(gè)電路最重要、最特殊的信號(hào)。在asic中,用布局布線工具來(lái)放置時(shí)鐘樹(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)換的。
增加流水

由于實(shí)現(xiàn)結(jié)構(gòu)上的不同,fpga器件內(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 增加流水
同步設(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)寫(xiě)有效時(shí),數(shù)據(jù)才寫(xiě)進(jìn)存儲(chǔ)器,那么只有寫(xiě)有效時(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í)鐘電路。可以在寄存器前面加上mux來(lái)實(shí)現(xiàn)時(shí)鐘使能信號(hào),如圖3所示。現(xiàn)在的fpga廠商則提供可以直接有使能,同步set和reset引腳的寄存器,如圖4所示。


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



圖4 fpga內(nèi)帶有時(shí)鐘使能的寄存器
充分利用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開(kāi)發(fā)”項(xiàng)目,為了在流片之前確保功能的可靠性,對(duì)32位全定制高性能嵌入式cpu bc320進(jìn)行了原型驗(yàn)證。

設(shè)計(jì)采用memec design公司的ff1152開(kāi)發(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×32bit的塊存儲(chǔ)器就夠了。core generator產(chǎn)生塊存儲(chǔ)器時(shí),除了參數(shù)設(shè)置外,還需要輸入一個(gè)為.coe的文件來(lái)初始化塊存儲(chǔ)器的內(nèi)容。core generator產(chǎn)生的文件同時(shí)考慮了后端執(zhí)行和仿真兩方面,主要有三個(gè)文件:file.v,file.mif,file.edn。其中.v文件為verilog格式的sram仿真模型; .mif文件為作為其初始化內(nèi)容,其內(nèi)容和.coe文件里的具體向量?jī)?nèi)容是一致的;而實(shí)際后端文件為.edn,包含了塊存儲(chǔ)器的全部信息。


圖5 ip生成器的界面

language templates主要利用xilinx的塊存儲(chǔ)器元件庫(kù),直接進(jìn)行調(diào)用。xc2vp30內(nèi)部的單口塊存儲(chǔ)器型號(hào)主要有:16k×1bit、1k×16bit、2k×8bit、4k×4bit、512×32bit、8k×2bit。可以根據(jù)自己的需要隨意調(diào)用這些模塊,在rtl代碼中實(shí)例化,并把sram初始值作為參數(shù)傳遞進(jìn)去。這些模塊在synplify pro中根據(jù)選定的fpga型號(hào)被自動(dòng)識(shí)別,然后綜合成統(tǒng)一的.edn文件,再進(jìn)行后續(xù)操作。語(yǔ)言模板方式的靈活性比較強(qiáng),可以設(shè)置多個(gè)不同位寬,不同深度的塊存儲(chǔ)器,仿真也比較方便,但是參數(shù)設(shè)定時(shí),sram初始值的設(shè)置比較麻煩。

另外,xilinx提供工具data-mem,它可以每次只改變fpga中塊存儲(chǔ)器的內(nèi)容,而不需將整個(gè)設(shè)計(jì)重新翻譯、映射和布局布線,為大量的向量驗(yàn)證節(jié)約了時(shí)間。
時(shí)鐘單元

在bc320設(shè)計(jì)中,cpu內(nèi)核通過(guò)sysad接口與外部sram連接。這些外部sram的時(shí)鐘和主時(shí)鐘是不一致的,在asic中,用一個(gè)pll來(lái)實(shí)現(xiàn)。這個(gè)pll模塊是無(wú)法用synplify pro綜合的,在fpga上必須將它用xilinx的數(shù)字時(shí)鐘管理模塊(dcm)來(lái)替換。同樣可以利用core generator和language templates這兩種方法。

利用core generator產(chǎn)生mydcm.v文件來(lái)代替原先的pllgs_500.v,代碼如下。第二段代碼是修改后的代碼。

module pllgs_500( pll_k,
pll_m,
pll_n,
pll_pd,
pll_tst,
reset,
xin,
clk_out,
tst_out);

module mydcm(clkin_in,
rst_in,
clkfx_out,
clkin_ibufg_out,
locked_out);
時(shí)鐘使能帶代替門控時(shí)鐘

把實(shí)現(xiàn)門控時(shí)鐘信號(hào)轉(zhuǎn)換成實(shí)現(xiàn)使能信號(hào),例如信號(hào)pcepl,代碼如下。第二段代碼是修改后的代碼。

module(out,in,clk, pcepl);
……
always @ (clk or pcepl)
assign pceplv = pcepl & clk;
always @(posedge pceplv)
begin
out <= in;
end
endmodule

module(out,in,clk, pcepl);
……
always @(posedge clk)
begin
if (pcepl)
out <= in;
else
out <= out;
end
endmodule
外部器件配置單元和頂層封裝

在ff1152開(kāi)發(fā)板上集成了很多接口和器件,在原型驗(yàn)證時(shí),可以充分利用這些接口和器件做為和設(shè)計(jì)的交互環(huán)境。這些接口和器件需要正確配置后才能正常工作,這部分配置工作可以用fpga實(shí)現(xiàn)。
 
設(shè)計(jì)增加了lcd接口單元、內(nèi)部記分牌(scoreboard)模塊和通用異步串行接收發(fā)送(uart)模塊。作為保存向量?jī)?nèi)容的sram設(shè)定好后,可以用同樣的方法將寄存器參考值也保存在另外的塊存儲(chǔ)器中。然后運(yùn)行cpu,將cpu實(shí)際產(chǎn)生的寄存器值和已保存過(guò)的參考值在記分牌模塊中進(jìn)行實(shí)時(shí)比較,然后將結(jié)果輸出到lcd顯示屏上。

為了便于代碼的管理和維護(hù),可以對(duì)原rtl代碼進(jìn)行一定的封裝。將原asic流程的代碼單獨(dú)封裝在一個(gè)模塊中,再和fpga實(shí)現(xiàn)時(shí)添加的片外配置控制單元的代碼一起形成新的fpga實(shí)現(xiàn)頂層。

所以在asic代碼的基礎(chǔ)上增加了對(duì)這幾個(gè)器件完成配置工作的代碼部分。

為了原型系統(tǒng)獲得更高的性能,還可以對(duì)其他一些模塊的代碼進(jìn)行適當(dāng)?shù)母倪M(jìn),如算術(shù)單元和狀態(tài)機(jī)的編碼風(fēng)格等。但對(duì)于全定制的cpu bc320,沒(méi)有必要修改算術(shù)單元模塊的代碼,關(guān)鍵是存儲(chǔ)模塊和時(shí)鐘單元。因此要根據(jù)自己的設(shè)計(jì)適當(dāng)選擇要修改的代碼。

來(lái)源:零八我的愛(ài)0次

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉