《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 基于多種EDA工具的FPGA設(shè)計(jì)

基于多種EDA工具的FPGA設(shè)計(jì)

2009-05-13
作者:孫富明1 李笑盈2

    摘  要: 介紹了利用多種EDA工具進(jìn)行FPGA設(shè)計(jì)的實(shí)現(xiàn)原理及方法,其中包括設(shè)計(jì)輸入、綜合、功能仿真、實(shí)現(xiàn)、時(shí)序仿真、配置下載等具體內(nèi)容。并以實(shí)際操作介紹了整個(gè)FPGA的設(shè)計(jì)流程。 

    關(guān)鍵詞: FPGA  仿真  綜合  EDA

 

    在數(shù)字系統(tǒng)設(shè)計(jì)的今天,片上系統(tǒng)(SoC)技術(shù)的出現(xiàn)已經(jīng)在設(shè)計(jì)領(lǐng)域引起深刻變革。為適應(yīng)產(chǎn)品盡快上市的要求,設(shè)計(jì)者必須合理選擇各EDA廠家提供的加速設(shè)計(jì)的工具軟件,以使其產(chǎn)品在本領(lǐng)域良性發(fā)展。FPGA設(shè)計(jì)是當(dāng)前數(shù)字系統(tǒng)設(shè)計(jì)領(lǐng)域中的重要方式之一。本文以多種EDA廠家工具為基礎(chǔ),系統(tǒng)介紹FPGA設(shè)計(jì)的流程。 

1 數(shù)字邏輯劃分與FPGA內(nèi)部結(jié)構(gòu) 

    圖1所示為數(shù)字邏輯樹狀分類圖,由其可以看出,現(xiàn)場可編程門陣列(FPGA)是專用集成電路中可編程邏輯器件的重要分支。 

 

 

    隨著微電子工業(yè)的發(fā)展與進(jìn)步,FPGA的集成度已經(jīng)達(dá)到數(shù)百萬門,如Xilinx公司的Xcv3200e最大門數(shù)為320萬門,Altera公司的Apex20k1500e為150萬門,且系統(tǒng)時(shí)鐘頻率已達(dá)到200MHz,支持多種I/O電壓標(biāo)準(zhǔn),并具有豐富的可重復(fù)利用的IP 核,便于加速系統(tǒng)設(shè)計(jì)。 

    FPGA的內(nèi)部資源(以Xilinx公司為例)一般分為可編程邏輯塊CLB、輸入輸出塊IOB和可編程連線PI三部分。通過編程控制PI連接各CLB單元,可以形成具有特定功能的電路。使用各公司的專用設(shè)計(jì)軟件設(shè)計(jì)FPGA,最終可形成由PI控制CLB單元的位流文件。 

    Xilinx公司主推的Virtex系列FPGA產(chǎn)品采用0.22微米工藝,具有如下特性:支持9種I/O標(biāo)準(zhǔn)、4個(gè)延時(shí)鎖定環(huán)、塊存儲與分布存儲并存、可編程流水延時(shí)存儲、熱控制、配置速率為500Mb/s。而Altera公司的Apex20ke系列同樣是其公司主推的FPGA產(chǎn)品,在內(nèi)部布線資源方面與Xilinx公司產(chǎn)品不同。在Virtex器件中,分為雙長線、單長線、長線幾種,在布線時(shí)可以按最近原則進(jìn)行取舍;而在Apex20ke中,連線僅為一種等長,所以在時(shí)序分析時(shí)比較準(zhǔn)確。 

2 FPGA設(shè)計(jì)原理 

    FPGA設(shè)計(jì)大體分為設(shè)計(jì)輸入、綜合、功能仿真(前仿真)、實(shí)現(xiàn)、時(shí)序仿真(后仿真)、配置下載等六個(gè)步驟,設(shè)計(jì)流程如圖2所示。下面分別介紹各個(gè)設(shè)計(jì)步驟。 

 

 

2.1 設(shè)計(jì)輸入 

    設(shè)計(jì)輸入包括使用硬件描述語言HDL、狀態(tài)圖與原理圖輸入三種方式。HDL設(shè)計(jì)方式是現(xiàn)今設(shè)計(jì)大規(guī)模數(shù)字集成電路的良好形式,除IEEE標(biāo)準(zhǔn)中VHDL與Verilog HDL兩種形式外,尚有各自FPGA廠家推出的專用語言,如Quartus下的AHDL。HDL語言描述在狀態(tài)機(jī)、控制邏輯、總線功能方面較強(qiáng),使其描述的電路能在特定綜合器(如Synopsys公司的FPGA Compiler II 或FPGA Express)作用下以具體硬件單元較好地實(shí)現(xiàn);而原理圖輸入在頂層設(shè)計(jì)、數(shù)據(jù)通路邏輯、手工最優(yōu)化電路等方面具有圖形化強(qiáng)、單元節(jié)儉、功能明確等特點(diǎn)。另外,在Altera公司Quartus軟件環(huán)境下,可以使用Memory Editor對內(nèi)部memory進(jìn)行直接編輯置入數(shù)據(jù)。常用方式是以HDL語言為主,原理圖為輔,進(jìn)行混合設(shè)計(jì)以發(fā)揮二者各自特色。 

    通常,FPGA廠商軟件與第三方軟件設(shè)有接口,可以把第三方設(shè)計(jì)文件導(dǎo)入進(jìn)行處理。如Quartus與Foundation都可以把EDIF網(wǎng)表作為輸入網(wǎng)表而直接進(jìn)行布局布線,布局布線后,可再將生成的相應(yīng)文件交給第三方進(jìn)行后續(xù)處理。 

2.2 設(shè)計(jì)綜合 

    綜合,就是針對給定的電路實(shí)現(xiàn)功能和實(shí)現(xiàn)此電路的約束條件,如速度、功耗、成本及電路類型等,通過計(jì)算機(jī)進(jìn)行優(yōu)化處理,獲得一個(gè)能滿足上述要求的電路設(shè)計(jì)方案。也就是說,被綜合的文件是HDL文件(或相應(yīng)文件等),綜合的依據(jù)是邏輯設(shè)計(jì)的描述和各種約束條件,綜合的結(jié)果則是一個(gè)硬件電路的實(shí)現(xiàn)方案,該方案必須同時(shí)滿足預(yù)期的功能和約束條件。對于綜合來說,滿足要求的方案可能有多個(gè),綜合器將產(chǎn)生一個(gè)最優(yōu)的或接近最優(yōu)的結(jié)果。因此,綜合的過程也就是設(shè)計(jì)目標(biāo)的優(yōu)化過程,最后獲得的結(jié)果與綜合器的工作性能有關(guān)。 

    FPGA Compiler II是一個(gè)完善的FPGA邏輯分析、綜合和優(yōu)化工具,它從HDL形式未優(yōu)化的網(wǎng)表中產(chǎn)生優(yōu)化的網(wǎng)表文件,包括分析、綜合和優(yōu)化三個(gè)步驟。其中,分析是采用Synopsys標(biāo)準(zhǔn)的HDL語法規(guī)則對HDL源文件進(jìn)行分析并糾正語法錯誤;綜合是以選定的FPGA結(jié)構(gòu)和器件為目標(biāo),對HDL和FPGA網(wǎng)表文件進(jìn)行邏輯綜合;而優(yōu)化則是根據(jù)用戶的設(shè)計(jì)約束對速度和面積進(jìn)行邏輯優(yōu)化,產(chǎn)生一個(gè)優(yōu)化的FPGA網(wǎng)表文件,以供FPGA布局和布線工具使用,即將電路優(yōu)化于特定廠家器件庫,獨(dú)立于硅特性,但可以被約束條件所驅(qū)動。 

    利用FPGA Compiler II進(jìn)行設(shè)計(jì)綜合時(shí),應(yīng)在當(dāng)前Project下導(dǎo)入設(shè)計(jì)源文件,自動進(jìn)行語法分析,在語法無誤并確定綜合方式、目標(biāo)器件、綜合強(qiáng)度、層次保持選擇、優(yōu)化目標(biāo)等設(shè)置后,即可進(jìn)行綜合與優(yōu)化。在此可以將兩步獨(dú)立進(jìn)行,在兩步之間進(jìn)行約束指定,如時(shí)鐘的確定、通路與端口的延時(shí)、模塊的算子共享、寄存器的扇出等。如果設(shè)計(jì)模型較大,可以采用層次化方式進(jìn)行綜合,先綜合下級模塊,后綜合上級模塊。在進(jìn)行上級模塊綜合時(shí)設(shè)置下級模塊為Don′t Touch,使設(shè)計(jì)與綜合過程合理化。綜合后形成的網(wǎng)表可以以EDIF格式輸出,也可以以VHDL或Verilog HDL格式輸出,將其導(dǎo)入FPGA設(shè)計(jì)廠商提供的可支持第三方設(shè)計(jì)輸入的專用軟件中,就可進(jìn)行后續(xù)的FPGA芯片的實(shí)現(xiàn)。綜合完成后可以輸出報(bào)告文件,列出綜合狀態(tài)與綜合結(jié)果,如資源使用情況、綜合后層次信息等。 

2.3 仿真驗(yàn)證 

    從廣義上講,設(shè)計(jì)驗(yàn)證包括功能與時(shí)序仿真和電路驗(yàn)證。仿真是指使用設(shè)計(jì)軟件包對已實(shí)現(xiàn)的設(shè)計(jì)進(jìn)行完整測試,模擬實(shí)際物理環(huán)境下的工作情況。前仿真是指僅對邏輯功能進(jìn)行測試模擬,以了解其實(shí)現(xiàn)的功能是否滿足原設(shè)計(jì)的要求,仿真過程沒有加入時(shí)序信息,不涉及具體器件的硬件特性,如延時(shí)特性;而在布局布線后,提取有關(guān)的器件延遲、連線延時(shí)等時(shí)序參數(shù),并在此基礎(chǔ)上進(jìn)行的仿真稱為后仿真,它是接近真實(shí)器件運(yùn)行的仿真。 

2.4 設(shè)計(jì)實(shí)現(xiàn) 

    實(shí)現(xiàn)可理解為利用實(shí)現(xiàn)工具把邏輯映射到目標(biāo)器件結(jié)構(gòu)的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能塊連接的布線通道進(jìn)行連線,并產(chǎn)生相應(yīng)文件(如配置文件與相關(guān)報(bào)告)。通??煞譃槿缦挛鍌€(gè)步驟: 

    (1)轉(zhuǎn)換:將多個(gè)設(shè)計(jì)文件進(jìn)行轉(zhuǎn)換并合并到一個(gè)設(shè)計(jì)庫文件中。 

    (2)映射:將網(wǎng)表中邏輯門映射成物理元素,即把邏輯設(shè)計(jì)分割到構(gòu)成可編程邏輯陣列內(nèi)的可配置邏輯塊與輸入輸出塊及其它資源中的過程。 

    (3)布局與布線:布局是指從映射取出定義的邏輯和輸入輸出塊,并把它們分配到FPGA內(nèi)部的物理位置,通?;谀撤N先進(jìn)的算法,如最小分割、模擬退火和一般的受力方向張弛等來完成;布線是指利用自動布線軟件使用布線資源選擇路徑試著完成所有的邏輯連接。因最新的設(shè)計(jì)實(shí)現(xiàn)工具是時(shí)序驅(qū)動的,即在器件的布局布線期間對整個(gè)信號通道執(zhí)行時(shí)序分析,因此可以使用約束條件操縱布線軟件,完成設(shè)計(jì)規(guī)定的性能要求。在布局布線過程中,可同時(shí)提取時(shí)序信息形成報(bào)告。 

    (4)時(shí)序提取:產(chǎn)生一反標(biāo)文件,供給后續(xù)的時(shí)序仿真使用。 

    (5)配置:產(chǎn)生FPGA配置時(shí)所需要的位流文件。 

    在實(shí)現(xiàn)過程中可以進(jìn)行選項(xiàng)設(shè)置。因其支持增量設(shè)計(jì),可以使其重復(fù)多次布線,且每次布線利用上一次布線信息以使其布線更優(yōu)或達(dá)到設(shè)計(jì)目標(biāo)。在實(shí)現(xiàn)過程中應(yīng)設(shè)置默認(rèn)配置的下載形式,以使后續(xù)位流下載正常。 

2.5 時(shí)序分析 

    在設(shè)計(jì)實(shí)現(xiàn)過程中,在映射后需要對一個(gè)設(shè)計(jì)的實(shí)際功能塊的延時(shí)和估計(jì)的布線延時(shí)進(jìn)行時(shí)序分析;而在布局布線后,也要對實(shí)際布局布線的功能塊延時(shí)和實(shí)際布線延時(shí)進(jìn)行靜態(tài)時(shí)序分析。從某種程度來講,靜態(tài)時(shí)序分析可以說是整個(gè)FPGA設(shè)計(jì)中最重要的步驟,它允許設(shè)計(jì)者詳盡地分析所有關(guān)鍵路徑并得出一個(gè)有次序的報(bào)告,而且報(bào)告中含有其它調(diào)試信息,比如每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的扇出或容性負(fù)載等。靜態(tài)時(shí)序分析器可以用來檢查設(shè)計(jì)的邏輯和時(shí)序,以便計(jì)算各通路性能,識別可能的蹤跡,檢測建立和保持時(shí)間的配合,時(shí)序分析器不要求用戶產(chǎn)生輸入激勵或測試矢量。雖然Xilinx與Altera在FPGA開發(fā)套件上擁有時(shí)序分析工具,但在擁有第三方專門時(shí)序分析工具的情況下,僅利用FPGA廠家設(shè)計(jì)工具進(jìn)行布局布線,而使用第三方的專門時(shí)序分析工具進(jìn)行時(shí)序分析,一般FPGA廠商在其設(shè)計(jì)環(huán)境下皆有與第三方時(shí)序分析工具的接口。Synopsys公司的PrimeTime是一個(gè)很好的時(shí)序分析工具,利用它可以達(dá)到更好的效果。將綜合后的網(wǎng)表文件保存為db格式,可在PrimeTime環(huán)境下打開。利用此軟件查看關(guān)鍵路徑或設(shè)計(jì)者感興趣的通路的時(shí)序,并對其進(jìn)行分析,再次對原來的設(shè)計(jì)進(jìn)行時(shí)序約束,可以提高工作主頻或減少關(guān)鍵路徑的延時(shí)。與綜合過程相似,靜態(tài)時(shí)序分析也是一個(gè)重復(fù)的過程,它與布局布線步驟緊密相連,這個(gè)操作通常要進(jìn)行多次直到時(shí)序約束得到很好的滿足。 

    在綜合與時(shí)序仿真過程中交互使用PrimeTime進(jìn)行時(shí)序分析,滿足設(shè)計(jì)要求后即可進(jìn)行FPGA芯片投片前的最終物理驗(yàn)證。 

2.6 下載驗(yàn)證 

    下載是在功能仿真與時(shí)序仿真正確的前提下,將綜合后形成的位流下載到具體的FPGA芯片中,也叫芯片配置。FPGA設(shè)計(jì)有兩種配置形式:直接由計(jì)算機(jī)經(jīng)過專用下載電纜進(jìn)行配置;由外圍配置芯片進(jìn)行上電時(shí)自動配置。因FPGA具有掉電信息丟失的性質(zhì),因此可在驗(yàn)證初期使用電纜直接下載位流,如有必要再將其燒錄到配置芯片中(如Xilinx的XC18V系列,Altera的EPC2系列)。使用電纜下載時(shí)有多種下載方式,如對Xilinx公司的FPGA下載可以使用JTAG Programmer、Hardware Programmer、PROM Programmer三種方式,而對Altera公司的FPGA可以選擇JTAG方式或Passive Serial方式。因FPGA大多支持IEEE的JTAG標(biāo)準(zhǔn),所以使用芯片上的JTAG口是常用下載方式。 

    將位流文件下載到FPGA器件內(nèi)部后進(jìn)行實(shí)際器件的物理測試即為電路驗(yàn)證,當(dāng)?shù)玫秸_的驗(yàn)證結(jié)果后就證明了設(shè)計(jì)的正確性。電路驗(yàn)證對FPGA投片生產(chǎn)具有較大意義。 

3 基于多種EDA工具的FPGA設(shè)計(jì) 

    仿真工具M(jìn)odelsim與綜合工具FPGA Compiler II及布線工具Foundation Series或Quartus相配合實(shí)現(xiàn)FPGA設(shè)計(jì)的流程圖如圖3所示。 

 

 

    在設(shè)計(jì)輸入階段,因Modelsim僅支持VHDL或Verilog HDL,所以在選用多種設(shè)計(jì)輸入工具時(shí),可以使用文本編輯器完成HDL語言的輸入,也可以利用相應(yīng)的工具以圖形方式完成輸入,但必須能夠?qū)С鰧?yīng)的VHDL或Verilog HDL格式。近年來出現(xiàn)的圖形化HDL設(shè)計(jì)工具,可以接收邏輯結(jié)構(gòu)圖、狀態(tài)轉(zhuǎn)換圖、數(shù)據(jù)流圖、控制流程圖及真值表等輸入方式,并通過配置的翻譯器將這些圖形格式轉(zhuǎn)化為HDL文本,如Mentor Graphics公司的Renoir,Xilinx公司的Foundation Series都帶有將狀態(tài)轉(zhuǎn)換圖翻譯成HDL文本的設(shè)計(jì)工具。在這方面,Summit公司(現(xiàn)在已經(jīng)合并為Innoveda)的圖形化界面友好程度較高,且可以導(dǎo)出相應(yīng)的HDL格式。 

    從圖3中可以看到有三處可以由Modelsim進(jìn)行仿真:第一處是寄存器傳輸級(RTL)仿真,此級仿真是對設(shè)計(jì)的語法和基本功能進(jìn)行驗(yàn)證(不含時(shí)序信息);第二處是針對特定的FPGA廠家技術(shù)的仿真,此級仿真是在綜合后、實(shí)現(xiàn)前而進(jìn)行的功能級仿真,功能級仿真一般驗(yàn)證綜合后是否可以得到設(shè)計(jì)者所需要的正確功能;第三處仿真是門級仿真,此級仿真是針對門級時(shí)序進(jìn)行的仿真,門級仿真體現(xiàn)出由于布局布線而產(chǎn)生的實(shí)際延時(shí)。 

    在RTL仿真階段,應(yīng)該建立一個(gè)測試臺。此測試臺可以在整個(gè)FPGA流程中進(jìn)行仿真驗(yàn)證(RTL級、功能級、時(shí)序門級)。測試臺不但提供測試激勵與接收響應(yīng)信息,而且可以測試HDL仿真流程中的關(guān)鍵功能(如運(yùn)算部件輸出值的正確性等)。測試臺的產(chǎn)生可以直接使用文本編輯得到,也可以使用圖形化工具輸入,再由軟件翻譯為HDL格式,例如使用HDL Bencher軟件利用其良好的波形輸入界面輸入測試激勵,再由其自動轉(zhuǎn)化為HDL格式而得到。 

    在功能級仿真階段,一般驗(yàn)證綜合后是否仍與RTL級仿真結(jié)果相同。 

    在門級仿真階段,由于已經(jīng)針對具體的FPGA廠家技術(shù)進(jìn)行了功能級仿真,因此可以通過布局布線得到標(biāo)準(zhǔn)延時(shí)格式下的時(shí)序信息進(jìn)行門級仿真。 

    Mentor Graphics 公司的Modelsim是業(yè)界較好的仿真工具,其仿真功能強(qiáng)大,且圖形化界面友好,而且具有結(jié)構(gòu)、信號、波形、進(jìn)程、數(shù)據(jù)流等窗口。將FPGA設(shè)計(jì)(以HDL方式)輸入后進(jìn)行編譯即可進(jìn)行前仿真,其最新版本Modelsim SE/Plus 5.5 支持VHDL與Verilog HDL混合仿真。在仿真時(shí)可以編寫HDL激勵文件或執(zhí)行組模式方式。組模式方式類似批處理方式,可以連續(xù)執(zhí)行事先在文件中寫好的多個(gè)執(zhí)行命令,這對重新仿真或重復(fù)執(zhí)行多個(gè)命令特別有效。在仿真過程中可以執(zhí)行性能分析與代碼覆蓋分析。性能分析在程序代碼執(zhí)行過程中可以分析出各部分代碼執(zhí)行時(shí)占用整體執(zhí)行時(shí)間的百分率。在此信息下,設(shè)計(jì)者可以找到設(shè)計(jì)的瓶頸并通過優(yōu)化代碼減少仿真時(shí)間。代碼覆蓋分析可以使設(shè)計(jì)者確切知道在測試臺上正在進(jìn)行的代碼位置,以方便設(shè)計(jì)者調(diào)試。 

    由Modelsim進(jìn)行仿真,需要導(dǎo)出VHDL或Verilog HDL網(wǎng)表。此網(wǎng)表是由針對特定FPGA器件的基本單元組成的。這些基本單元在FPGA廠家提供的廠家?guī)熘泻衅涠x和特性,且廠家一般提供其功能的VHDL或Verilog HDL庫。因此,在Modelsim下進(jìn)行仿真,需要設(shè)置廠家?guī)煨畔?。如使用Altera公司的Apex20ke系列,需要將Apex20ke_atoms.v(或.vhd)與Apex20ke_component.v文件設(shè)置或編譯到工程項(xiàng)目的對應(yīng)庫中。除網(wǎng)表外,還需要布局布線輸出的標(biāo)準(zhǔn)延時(shí)文件(sdf),將sdf文件加入仿真可以在窗口化界面設(shè)置加入,或通過激勵指定。如使用Verilog HDL時(shí)加入反標(biāo)語句$sdf_annotate(“ ”,Top)通過參數(shù)路徑指定即可。 

    在綜合階段,應(yīng)利用設(shè)計(jì)者指定的約束文件將RTL級設(shè)計(jì)功能實(shí)現(xiàn)并優(yōu)化到具有相等功能且具有單元延時(shí)(但不含時(shí)序信息)的基本器件中,如觸發(fā)器、邏輯門等,得到的結(jié)果是功能獨(dú)立于FPGA的網(wǎng)表。它不含時(shí)序信息,可作為后續(xù)的布局布線使用。使用FPGA Compiler II進(jìn)行綜合后可以導(dǎo)出EDIF網(wǎng)表。 

    在實(shí)現(xiàn)階段,主要是利用綜合后生成的EDIF網(wǎng)表并基于FPGA內(nèi)的基本器件進(jìn)行布局布線??梢岳貌季€工具Foundation Series選用具體器件(如Virtex系列器件)進(jìn)行布局布線加以實(shí)現(xiàn),也可以使用布線工具Quartus選用Apex20ke系列器件進(jìn)行布局布線加以實(shí)現(xiàn),同時(shí)輸出相應(yīng)的VHDL或Verilog HDL格式,以便在Modelsim下進(jìn)行仿真。 

    關(guān)于其它階段,因篇幅關(guān)系,在此不再贅述。 

    在數(shù)字系統(tǒng)設(shè)計(jì)的今天,利用多種EDA工具進(jìn)行處理,同時(shí)使用FPGA快速設(shè)計(jì)專用系統(tǒng)或作為檢驗(yàn)手段已經(jīng)成為數(shù)字系統(tǒng)設(shè)計(jì)中不可或缺的一種方式,了解并熟悉其設(shè)計(jì)流程應(yīng)成為現(xiàn)今電子工程師的一種必備知識。 

參考文獻(xiàn) 

1 Foundation  Series  3.1  User’s  Guide. Xilinx, 2000 

2 http://www.Modelsim.com. Fpgaflow 

3 李廣軍,孟憲元. 可編程ASIC設(shè)計(jì)及應(yīng)用.成都:電子科技大學(xué)出版社,2000

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。