版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、FPGA設(shè)計(jì)流程指南前言本部門所承擔(dān)的 FPGA 設(shè)計(jì)任務(wù)主要是兩方面的作用:系統(tǒng)的原型實(shí)現(xiàn)和 ASIC 的原型驗(yàn)證。編寫本流程的目的是:在于規(guī)范整個(gè)設(shè)計(jì)流程,實(shí)現(xiàn)開發(fā)的合理性、一致性、高效性。形成風(fēng)格良好和完整的文檔。實(shí)現(xiàn)在 FPGA 不同廠家之間以及從 FPGA 到 ASIC 的順利移植。便于新員工快速掌握本部門FPGA 的設(shè)計(jì)流程。由于目前所用到的FPGA 器件以 Altera 的為主,所以下面的例 子 也 以Altera為 例 , 工 具 組 合 為modelsim+LeonardoSpectrum/FPGACompilerII + Quartus ,但原則和方法對于其他廠家和工具也是
2、基本適用的。V目 錄1. 基于 HDL 的 FPGA 設(shè)計(jì)流程概述 .11.1設(shè)計(jì)流程圖 .11.2關(guān)鍵步驟的實(shí)現(xiàn) .21.2.1功能仿真 .21.2.2邏輯綜合 .21.2.3前仿真 .31.2.4布局布線 .31.2.5后仿真(時(shí)序仿真) .42. Verilog HDL 設(shè)計(jì) .42.1編程風(fēng)格( Coding Style)要求 .42.1.1文件 .42.1.2大小寫 .52.1.3標(biāo)識符 .52.1.4參數(shù)化設(shè)計(jì) .52.1.5空行和空格 .52.1.6對齊和縮進(jìn) .52.1.7注釋 .52.1.8參考 C 語言的資料 .52.1.9可視化設(shè)計(jì)方法 .62.2可綜合設(shè)計(jì) .62.3設(shè)
3、計(jì)目錄 .63.邏輯仿真.63.1測試程序( test bench) .73.2使用預(yù)編譯庫 .74.邏輯綜合.84.1邏輯綜合的一些原則 .84.1.1關(guān)于 LeonardoSpectrum.84.1.1大規(guī)模設(shè)計(jì)的綜合 .84.1.3必須重視工具產(chǎn)生的警告信息 .84.2調(diào)用模塊的黑盒子( Black box )方法 .8參考 .10修訂紀(jì)錄 .101. 基于 HDL 的 FPGA 設(shè)計(jì)流程概述1.1 設(shè)計(jì)流程圖( 1)設(shè)計(jì)定義( 2)HDL 實(shí)現(xiàn)( 3)功能仿真邏輯仿真器(4)邏輯綜合邏輯綜合器(5)前仿真邏輯仿真器( 6)布局布線FPGA 廠家工具( 8)靜態(tài)時(shí)序分析( 7)后仿真邏輯
4、仿真器( 9)在系統(tǒng)測試說明:邏輯仿真器主要指modelsim,Verilog-XL 等。邏輯綜合器主要指LeonardoSpectrum、 Synplify 、 FPGAExpress/FPGA Compiler 等。FPGA 廠家工具指的是如Altera 的 Max+PlusII 、QuartusII,Xilinx 的 Foundation、 Alliance 、 ISE4.1 等。1.2 關(guān)鍵步驟的實(shí)現(xiàn)1.2.1 功能仿真調(diào)用模塊的行為仿真模型RTL代碼測試程序( test bench)測試數(shù)據(jù)邏輯仿真器說明:“調(diào)用模塊的行為仿真模型”指的是 RTL 代碼中引用的由廠家提供的宏模塊 /I
5、P,如 Altera 提供的 LPM 庫中的乘法器、 存儲(chǔ)器等部件的行為模型。1.2.2 邏輯綜合RTL 代碼設(shè)置綜合目標(biāo)調(diào)用模塊的和約束條件黑盒子接口邏輯綜合器EDIF 網(wǎng)表HDL 網(wǎng)表( netlist )( netlist )說明:“調(diào)用模塊的黑盒子接口”的導(dǎo)入,是由于 RTL 代碼調(diào)用了一些外部模塊, 而這些外部模塊不能被綜合或無需綜合, 但邏輯綜合器需要其接口的定義來檢查邏輯并保留這些模塊的接口。1.2.3 前仿真邏輯綜合器HDL 網(wǎng)表調(diào)用模塊的測試程序測試數(shù)據(jù)( netlist )行為仿真模型( test bench)邏輯仿真器說明:一般來說,對FPGA 設(shè)計(jì)這一步可以跳過不做,但
6、可用于debug 綜合有無問題。1.2.4 布局布線邏輯綜合器設(shè)置布局布線約束條件EDIF 網(wǎng)表調(diào)用模塊的( netlist )綜合模型HDL 網(wǎng)表SDF 文件( netlist )(標(biāo)準(zhǔn)延時(shí)格式)下載 /編程文件1.2.5 后仿真(時(shí)序仿真)測試數(shù)據(jù)FPGA 廠家工具HDL 網(wǎng)表SDF 文件FPGA 基本單測試程序(netlist )(標(biāo)準(zhǔn)延時(shí)格式)元仿真模型( test bench)2. Verilog HDL設(shè)計(jì)基于將來設(shè)計(jì)轉(zhuǎn)向ASIC 的方便,本部門的設(shè)計(jì)統(tǒng)一采用Verilog HDL ,但針對混合設(shè)計(jì)和混合仿真的趨勢,所有開發(fā)人員也應(yīng)能讀懂VHDL 。Verilog HDL 的學(xué)習(xí)可
7、參考 12 。2.1 編程風(fēng)格( Coding Style)要求2.1.1 文件(1) 每個(gè)模塊( module)一般應(yīng)存在于單獨(dú)的源文件中,通常源文件名與所包含模塊名相同。( 2) 每個(gè)設(shè)計(jì)文件開頭應(yīng)包含如下注釋內(nèi)容:年份及公司名稱。作者。文件名。所屬項(xiàng)目。頂層模塊。模塊名稱及其描述。修改紀(jì)錄。請參考標(biāo)準(zhǔn)示例程序3 。2.1.2 大小寫( 1) 如無特別需要,模塊名和信號名一律采用小寫字母。( 2) 為醒目起見,常數(shù)( define 定義) /參數(shù)( parameter定義)采用大寫字母。2.1.3 標(biāo)識符( 1) 標(biāo)識符采用傳統(tǒng) C 語言的命名方法,即在單詞之間以“_”分開,如: max_
8、delay、data_size等等。( 2) 采用有意義的、能反映對象特征、作用和性質(zhì)的單詞命名標(biāo)識符,以增強(qiáng)程序的可讀性。( 3) 為避免標(biāo)識符過于冗長,對較長單詞的應(yīng)當(dāng)采用適當(dāng)?shù)目s寫形式,如用 buff 代替 buffer ,ena代替enable,addr代替 address等。2.1.4 參數(shù)化設(shè)計(jì)為了源代碼的可讀性和可移植性起見,不要在程序中直接寫特定數(shù)值,盡可能采用define 語句或 paramater 語句定義常數(shù)或參數(shù)。2.1.5 空行和空格(1) 適當(dāng)?shù)卦诖a的不同部分中插入空行,避免因程序擁擠不利閱讀。( 2) 在表達(dá)式中插入空格,避免代碼擁擠,包括:賦值符號兩邊要有空格
9、;雙目運(yùn)算符兩邊要有空格;單目運(yùn)算符和操作數(shù)之間可沒有空格,示例如下:a<=b;c<=a+b;if (a=b) then .a<=a&c;2.1.6 對齊和縮進(jìn)( 1) 不要使用連續(xù)的空格來進(jìn)行語句的對齊。( 2) 采用制表符 Tab 對語句對齊和縮進(jìn), Tab 鍵采用 4 個(gè)字符寬度 ,可在編輯器中設(shè)置。( 3) 各種嵌套語句尤其是 if.else 語句,必須嚴(yán)格的逐層縮進(jìn)對齊。2.1.7 注釋必須加入詳細(xì)、清晰的注釋行以增強(qiáng)代碼的可讀性和可移植性,注釋內(nèi)容占代碼篇幅不應(yīng)少于30%。2.1.8 參考 C 語言的資料要形成良好的編程風(fēng)格,有許多細(xì)節(jié)需要注意,可以參考資
10、料4 ,雖然它是針對C 語言的討論,但由于Verilog HDL 和 C語言的形式非常近似,所以里面提到的很多原則都是可以借鑒的。2.1.9 可視化設(shè)計(jì)方法為提高設(shè)計(jì)效率和適應(yīng)協(xié)同設(shè)計(jì)的方式,可采用可視化的設(shè)計(jì)方法, Mentor Grahpics 的 Renoir 軟件提供了非常好的設(shè)計(jì)模式。2.2 可綜合設(shè)計(jì)用 HDL 實(shí)現(xiàn)電路,設(shè)計(jì)人員對可綜合風(fēng)格的RTL 描述的掌握不僅會(huì)影響到仿真和綜合的一致性, 也是邏輯綜合后電路可靠性和質(zhì)量好壞最主要的因素,對此應(yīng)當(dāng)予以充分的重視。學(xué)習(xí)可綜合的HDL 請參考56 7 。學(xué)習(xí)設(shè)計(jì)的模塊劃分請參考8 。2.3 設(shè)計(jì)目錄采用合理、條理清晰的設(shè)計(jì)目錄結(jié)構(gòu)有
11、助于提高設(shè)計(jì)的效率、可維護(hù)性。建議采用類似下面的目錄結(jié)構(gòu):( 1)designsrcsynsimpar(源代碼)(綜合)(仿真)(布局布線 )( 2)designver1ver2srcsynsimparsrcsynsimpar(源代碼) (綜合)(仿真)(布局布線 )(源代碼) (綜合)(仿真)(布局布線 )3. 邏輯仿真考慮到性能和易用性,首選的邏輯仿真器是Mentor Graphics的 modelsim。3.1 測試程序( test bench)測試程序?qū)τ谠O(shè)計(jì)功能和時(shí)序的驗(yàn)證有著舉足輕重的影響,測試激勵(lì)的完備性和真實(shí)性是關(guān)鍵所在,有以下原則須遵循:( 1) 測試激勵(lì)輸入和響應(yīng)輸出采集的
12、時(shí)序應(yīng)當(dāng)兼顧功能仿真(無延時(shí))和時(shí)序仿真(有延時(shí))的情況。( 2) 對于周期較多的測試,為提高效率,盡可能采用程序語句來判斷響應(yīng)與標(biāo)準(zhǔn)結(jié)果是否一致,給出成功或出錯(cuò)標(biāo)志,而不是通過觀察波形來判斷。(3) 采用基于文件的測試是很好的辦法, 即由 matlab 或 spw 等系統(tǒng)工具產(chǎn)生測試數(shù)據(jù),測試程序?qū)⑵渥x入產(chǎn)生激勵(lì),再把響應(yīng)結(jié)果寫入到文件,再交給上述工具進(jìn)行處理或分析。( 4) 仿真器支持幾乎所有的 Verilog HDL 語法,而不僅僅是常用的 RTL 的描述,應(yīng)當(dāng)利用這一點(diǎn)使測試程序盡可能簡潔、清楚,篇幅長的要盡量采用task 來描述。3.2 使用預(yù)編譯庫在進(jìn)行功能仿真和后仿真時(shí)都需要某些
13、模塊的行為仿真模型和門級仿真模型,如Altera Quartus 里的 220model.v( LPM 模塊行為仿真模型) 和 apex20ke_atoms.(v 20KE 系列門級仿真模型) ,為避免在不同的設(shè)計(jì)目錄中多次編譯這些模型, 應(yīng)當(dāng)采用一次編譯,多次使用的方法。具體做法如下(以20KE 門級庫為例):1 : 在 某 個(gè) 工 作 目 錄 下 新 建 一 庫 名apex20ke , 將apex20ke_atoms.v編譯到其中。2:在圖形界面中的Load Design 對話框中裝入仿真設(shè)計(jì)時(shí),在 Verilog 標(biāo)簽下指定預(yù)編譯庫的完整路徑。(見下圖)4. 邏輯綜合目 前 可 用 的
14、FPGA 綜 合 工 具 有 Mentor Graphics 的LeonardoSpectrum, Synplicity 的 Synplify 和 Synopsys 的 FPGA CompilerII/FPGA Express, LeonardoSpectrum 由于性能和速度最好,成為我們首選的綜合器, FPGA CompilerII/FPGA Express 由于可以和 Design Compiler 代碼兼容也可用。見參考 94.1 邏輯綜合的一些原則HDL 代碼綜合后電路質(zhì)量的好壞主要取決于三個(gè)方面:RTL實(shí)現(xiàn)是否合理、對廠家器件特點(diǎn)的理解和對綜合器掌握的程度。參考 10 中有比較全面
15、的討論。4.1.1 關(guān)于 LeonardoSpectrumLeonardoSpectrum 對綜合的控制能力比較強(qiáng),但使用也略為復(fù)雜,故需要在使用前盡量熟悉其功能, 才能取得較好的綜合結(jié)果。當(dāng)出現(xiàn)綜合結(jié)果不能滿足約束條件時(shí),不要急于修改設(shè)計(jì)源文件,應(yīng)當(dāng)通過綜合器提供的時(shí)序和面積分析命令找出關(guān)鍵所在,然后更改綜合控制或修改代碼。在 LeonardoSpectrum 2000.1b以前的版本輸出的 .v 網(wǎng)表都不能用于仿真。4.1.1 大規(guī)模設(shè)計(jì)的綜合分塊綜合當(dāng)設(shè)計(jì)規(guī)模很大時(shí),綜合也會(huì)耗費(fèi)很多時(shí)間。如果設(shè)計(jì)只更改某個(gè)模塊時(shí),可以分塊綜合。如有設(shè)計(jì) top.v 包含 a.v 和 b.v 兩個(gè)模塊,當(dāng)
16、只修改 a.v 的話,可以先單獨(dú)綜合 b.v,輸出其網(wǎng)表 b.edf,編寫一個(gè) b 模塊的黑盒子接口 b_syn.v,每次修改 a.v 后只綜合 top.v 、a.v、b_syn.v,將綜合后的網(wǎng)表和 b.edf 送去布線,可以節(jié)約綜合 b 模塊的時(shí)間。采用腳本命令當(dāng)設(shè)計(jì)規(guī)模比較大時(shí),綜合控制也許會(huì)比較復(fù)雜,可以考慮采 用 腳 本 控 制 文 件 的 方 式 進(jìn) 行 綜 合 控 制 , modelsim 、 LeonardoSpectrum 和 Quartus 都 支 持 TCL ( Tool Command Language)語言,采用腳本控制可以提供比圖形界面更靈活和更方便的控制手段。4.
17、1.3 必須重視工具產(chǎn)生的警告信息綜合工具對設(shè)計(jì)進(jìn)行處理可能會(huì)產(chǎn)生各種警告信息,有些是可以忽略的, 但設(shè)計(jì)者應(yīng)該盡量去除,不去除必須確認(rèn)每條警告的含義,避免因此使設(shè)計(jì)的實(shí)現(xiàn)產(chǎn)生隱患。這個(gè)原則對仿真和布局布線同樣適用。4.2 調(diào)用模塊的黑盒子(Black box)方法使用黑盒子方法的原因主要有兩點(diǎn):一是 HDL 代碼中調(diào)用了一些FPGA 廠家提供的模塊(如 Altera的 LPM 模塊)或第三方提供的 IP,這些模塊不需要綜合,而且有些綜合器也不能綜合 (如 FPGA CompilerII/FPGA Express 可以綜合包含LPM 的代碼而LeonardoSpectrum 不能)。因此須提供
18、一個(gè)黑盒子接口給綜合器,所調(diào)用的模塊到布局布線時(shí)才進(jìn)行連接。二是方便代碼的移植,由于廠家提供的模塊或第三方提供的IP 通常都是與工藝有關(guān)的,直接在代碼中調(diào)用的話將不利于修改,影響代碼移植。下面以調(diào)用 Altera 的 LPM 庫中的乘法器為例來說明。調(diào)用這樣一個(gè)模塊需要這樣一個(gè)文件:mult8x8.v (可由Quartus 的MegaWizer Plug-in Manager 產(chǎn)生),代碼如下:/ mult8x8.vmodule mult8x8 (dataa, datab, result);input 7:0 dataa;input 7:0 datab;output 15:0 result;/ exemplar translate_off/ synopsys translate_offlpm_multlpm_mult_component(.dataa(dataa),.datab(datab),.aclr(1'b0),.clock(1'b0),.clken(1'
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版智能家居安防系統(tǒng)試用合同3篇
- 二零二五版辦公家具租賃與辦公空間智能化改造合同2篇
- 二零二五年度國際商務(wù)考察合同范本3篇
- 二零二五年度金融機(jī)構(gòu)貸款合同風(fēng)險(xiǎn)評估與管理指南3篇
- 二零二五年度某零售商與第三方支付平臺就支付服務(wù)合作合同2篇
- 敬老院二零二五年度土地承包及社區(qū)服務(wù)一體化合同3篇
- 二零二五年船舶通信設(shè)備維護(hù)船員聘用合同3篇
- 二零二五年智慧交通項(xiàng)目合作開發(fā)合同范本3篇
- 二零二五年度搬家搬運(yùn)服務(wù)合同范本2篇
- 二零二五版導(dǎo)游人員旅游活動(dòng)組織聘用合同3篇
- 深圳2024-2025學(xué)年度四年級第一學(xué)期期末數(shù)學(xué)試題
- 中考語文復(fù)習(xí)說話要得體
- 《工商業(yè)儲(chǔ)能柜技術(shù)規(guī)范》
- 華中師范大學(xué)教育技術(shù)學(xué)碩士研究生培養(yǎng)方案
- 醫(yī)院醫(yī)學(xué)倫理委員會(huì)章程
- 初中班主任案例分析4篇
- 公司7s管理組織實(shí)施方案
- Q∕GDW 12147-2021 電網(wǎng)智能業(yè)務(wù)終端接入規(guī)范
- 仁愛英語單詞默寫本(全六冊)英譯漢
- 公園廣場綠地文化設(shè)施維修改造工程施工部署及進(jìn)度計(jì)劃
- 塑料件缺陷匯總
評論
0/150
提交評論