版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、FPGA設計流程指南前言本部門所承擔的FPGA設計任務主要是兩方面的作用:系統(tǒng)的原型實現(xiàn)和ASIC的原型驗證。編寫本流程的目的是:在于規(guī)范整個設計流程,實現(xiàn)開發(fā)的合理性、一致性、高效性。形成風格良好和完整的文檔。實現(xiàn)在 FPGA 不同廠家之間以及從FPGA 到 ASIC 的順利移植。便于新員工快速掌握本部門FPGA 的設計流程。由于目前所用到的FPGA 器件以 Altera 的為主,所以下面的例子也以Altera 為例,工具組合為modelsim + LeonardoSpectrum/FPGACompilerII + Quartus,但原則和方法對于其他廠家和工具也是基本適用的。目 錄1. 基
2、于 HDL 的 FPGA 設計流程概述 .11.1設計流程圖 .11.2關鍵步驟的實現(xiàn) .21.2.1功能仿真 .21.2.2邏輯綜合 .21.2.3前仿真 .31.2.4布局布線 .31.2.5后仿真(時序仿真) .42. Verilog HDL設計 .42.1編程風格( Coding Style )要求 .42.1.1文件 .42.1.2大小寫 .52.1.3標識符 .52.1.4參數(shù)化設計 .52.1.5空行和空格 .52.1.6對齊和縮進 .52.1.7注釋 .52.1.8參考 C 語言的資料 .52.1.9可視化設計方法 .62.2可綜合設計 .62.3設計目錄 .63.邏輯仿真 .
3、63.1測試程序( test bench) .73.2使用預編譯庫 .74.邏輯綜合 .84.1邏輯綜合的一些原則 .84.1.1關于 LeonardoSpectrum .84.1.1大規(guī)模設計的綜合 .84.1.3必須重視工具產生的警告信息 .84.2調用模塊的黑盒子( Black box )方法 .8參考 .10修訂紀錄.101. 基于 HDL 的 FPGA 設計流程概述1.1 設計流程圖( 1)設計定義( 2)HDL 實現(xiàn)( 3)功能仿真(4)邏輯綜合(5)前仿真( 6)布局布線( 8)靜態(tài)時序分析( 7)后仿真( 9)在系統(tǒng)測試說明:邏輯仿真器邏輯綜合器邏輯仿真器FPGA 廠家工具邏輯
4、仿真器邏輯仿真器主要指modelsim , Verilog-XL等。邏輯綜合器主要指LeonardoSpectrum、Synplify 、FPGA Express/FPGA Compiler 等。FPGA 廠家工具指的是如Altera 的 Max+PlusII 、 QuartusII , Xilinx的 Foundation 、Alliance 、 ISE4.1 等。11.2 關鍵步驟的實現(xiàn)1.2.1 功能仿真調用模塊的RTL 代碼測試程序測試數(shù)據(jù)行為仿真模型( test bench)邏輯仿真器說明:“調用模塊的行為仿真模型”指的是 RTL 代碼中引用的由廠家提供的宏模塊 /IP ,如 Alt
5、era 提供的 LPM 庫中的乘法器、存儲器等部件的行為模型。1.2.2 邏輯綜合RTL 代碼設置綜合目標調用模塊的和約束條件黑盒子接口邏輯綜合器EDIF 網(wǎng)表HDL 網(wǎng)表( netlist )( netlist )說明:“調用模塊的黑盒子接口”的導入,是由于 RTL 代碼調用了一些外部模塊,而這些外部模塊不能被綜合或無需綜合, 但邏輯綜合器需要其接口的定義來檢查邏輯并保留這些模塊的接口。21.2.3 前仿真邏輯綜合器HDL 網(wǎng)表調用模塊的測試程序測試數(shù)據(jù)( netlist )行為仿真模型( test bench)邏輯仿真器說明:一般來說,對FPGA 設計這一步可以跳過不做,但可用于debug
6、 綜合有無問題。1.2.4 布局布線邏輯綜合器設置布局布線EDIF 網(wǎng)表調用模塊的約束條件( netlist )綜合模型FPGA 廠家工具HDL 網(wǎng)表SDF 文件下載 /編程文件(標準延時格式)( netlist )31.2.5 后仿真(時序仿真)測試數(shù)據(jù)FPGA 廠家工具HDL 網(wǎng)表SDF 文件FPGA 基本單測試程序(netlist )(標準延時格式)元仿真模型( test bench)邏輯仿真器2. Verilog HDL設計基于將來設計轉向ASIC 的方便,本部門的設計統(tǒng)一采用Verilog HDL,但針對混合設計和混合仿真的趨勢,所有開發(fā)人員也應能讀懂VHDL 。Verilog HD
7、L的學習可參考 12 。2.1 編程風格( Coding Style)要求2.1.1 文件( 1) 每個模塊( module )一般應存在于單獨的源文件中,通常源文件名與所包含模塊名相同。( 2) 每個設計文件開頭應包含如下注釋內容:年份及公司名稱。作者。文件名。所屬項目。頂層模塊。模塊名稱及其描述。修改紀錄。請參考標準示例程序3 。42.1.2 大小寫( 1) 如無特別需要,模塊名和信號名一律采用小寫字母。( 2) 為醒目起見,常數(shù)( define 定義) /參數(shù)( parameter 定義)采用大寫字母。2.1.3 標識符( 1)標識符采用傳統(tǒng)C 語言的命名方法, 即在單詞之間以 “ _”
8、分開,如:max_delay、data_size 等等。( 2) 采用有意義的、能反映對象特征、作用和性質的單詞命名標識符,以增強程序的可讀性。( 3)為避免標識符過于冗長,對較長單詞的應當采用適當?shù)目s寫形式,如用buff 代替 buffer , ena代替 enable, addr代替 address等。2.1.4 參數(shù)化設計為了源代碼的可讀性和可移植性起見,不要在程序中直接寫特定數(shù)值,盡可能采用define 語句或 paramater 語句定義常數(shù)或參數(shù)。2.1.5 空行和空格( 1) 適當?shù)卦诖a的不同部分中插入空行,避免因程序擁擠不利閱讀。( 2) 在表達式中插入空格,避免代碼擁擠,包
9、括:賦值符號兩邊要有空格;雙目運算符兩邊要有空格;單目運算符和操作數(shù)之間可沒有空格,示例如下:a<=b;c<=a+b;if (a=b) then .a<=a&c;2.1.6 對齊和縮進( 1)不要使用連續(xù)的空格來進行語句的對齊。( 2)采用制表符 Tab 對語句對齊和縮進,Tab 鍵采用 4 個字符寬度 ,可在編輯器中設置。( 3)各種嵌套語句尤其是 if.else 語句,必須嚴格的逐層縮進對齊。2.1.7 注釋必須 加入詳細、 清晰的注釋行以增強代碼的可讀性和可移植性,注釋內容占代碼篇幅不應少于 30%。2.1.8 參考 C 語言的資料要形成良好的編程風格,有許多細
10、節(jié)需要注意,可以參考資料4 ,雖然它是針對C 語言的討論, 但由于 Verilog HDL 和 C 語言的形式非常近似, 所以里面提到的很多原則都是可以借鑒的。52.1.9 可視化設計方法為提高設計效率和適應協(xié)同設計的方式,可采用可視化的設計方法,MentorGrahpics的 Renoir 軟件提供了非常好的設計模式。2.2 可綜合設計用 HDL 實現(xiàn)電路, 設計人員對可綜合風格的RTL 描述的掌握不僅會影響到仿真和綜合的一致性,也是邏輯綜合后電路可靠性和質量好壞最主要的因素,對此應當予以充分的重視。學習可綜合的HDL 請參考56 7 。學習設計的模塊劃分請參考8 。2.3 設計目錄采用合理
11、、 條理清晰的設計目錄結構有助于提高設計的效率、可維護性。 建議采用類似下面的目錄結構:(1)designsrcsynsimpar(源代碼)(綜合)(仿真)(布局布線 )( 2)designver1ver2srcsynsimparsrcsynsimpar(源代碼) (綜合)(仿真)(布局布線 )(源代碼) (綜合)(仿真)(布局布線 )3. 邏輯仿真考慮到性能和易用性,首選的邏輯仿真器是Mentor Graphics 的 modelsim 。63.1 測試程序( test bench)測試程序對于設計功能和時序的驗證有著舉足輕重的影響, 測試激勵的完備性和真實性是關鍵所在,有以下原則須遵循:(
12、 1)測試激勵輸入和響應輸出采集的時序應當兼顧功能仿真(無延時)和時序仿真(有延時)的情況。( 2)對于周期較多的測試,為提高效率,盡可能采用程序語句來判斷響應與標準結果是否一致,給出成功或出錯標志,而不是通過觀察波形來判斷。( 3)采用基于文件的測試是很好的辦法, 即由 matlab 或 spw 等系統(tǒng)工具產生測試數(shù)據(jù),測試程序將其讀入產生激勵,再把響應結果寫入到文件,再交給上述工具進行處理或分析。( 4)仿真器支持幾乎所有的 Verilog HDL語法,而不僅僅是常用的RTL 的描述,應當利用這一點使測試程序盡可能簡潔、清楚,篇幅長的要盡量采用 task 來描述。3.2 使用預編譯庫在進行
13、功能仿真和后仿真時都需要某些模塊的行為仿真模型和門級仿真模型,如 AlteraQuartus 里的 220model.v( LPM 模塊行為仿真模型)和 apex20ke_atoms.v( 20KE 系列門級仿真模型),為避免在不同的設計目錄中多次編譯這些模型,應當采用一次編譯,多次使用的方法。具體做法如下(以 20KE 門級庫為例):1:在某個工作目錄下新建一庫名apex20ke,將 apex20ke_atoms.v 編譯到其中。2:在圖形界面中的 Load Design 對話框中裝入仿真設計時, 在 Verilog 標簽下指定預編譯庫的完整路徑。 (見下圖)74. 邏輯綜合目前可用的FPG
14、A 綜合工具有MentorGraphics 的 LeonardoSpectrum , Synplicity的Synplify 和 Synopsys 的 FPGA CompilerII/FPGA Express ,LeonardoSpectrum 由于性能和速度最好,成為我們首選的綜合器, FPGA CompilerII/FPGA Express 由于可以和 Design Compiler 代碼兼容也可用。見參考 94.1 邏輯綜合的一些原則HDL 代碼綜合后電路質量的好壞主要取決于三個方面:RTL 實現(xiàn)是否合理、對廠家器件特點的理解和對綜合器掌握的程度。參考10 中有比較全面的討論。4.1.1
15、 關于 LeonardoSpectrumLeonardoSpectrum 對綜合的控制能力比較強, 但使用也略為復雜, 故需要在使用前盡量熟悉其功能,才能取得較好的綜合結果。當出現(xiàn)綜合結果不能滿足約束條件時, 不要急于修改設計源文件, 應當通過綜合器提供的時序和面積分析命令找出關鍵所在,然后更改綜合控制或修改代碼。在 LeonardoSpectrum 2000.1b 以前的版本輸出的.v 網(wǎng)表都不能用于仿真。4.1.1 大規(guī)模設計的綜合分塊綜合當設計規(guī)模很大時,綜合也會耗費很多時間。如果設計只更改某個模塊時,可以分塊綜合。如有設計top.v 包含a.v 和 b.v 兩個模塊,當只修改a.v 的
16、話,可以先單獨綜合b.v,輸出其網(wǎng)表b.edf ,編寫一個b 模塊的黑盒子接口b_syn.v,每次修改a.v 后只綜合top.v、 a.v、b_syn.v,將綜合后的網(wǎng)表和b.edf 送去布線,可以節(jié)約綜合b 模塊的時間。采用腳本命令當設計規(guī)模比較大時,綜合控制也許會比較復雜,可以考慮采用腳本控制文件的方式進行綜合控制, modelsim 、LeonardoSpectrum 和 Quartus 都支持 TCL( Tool Command Language )語言,采用腳本控制可以提供比圖形界面更靈活和更方便的控制手段。4.1.3 必須重視工具產生的警告信息綜合工具對設計進行處理可能會產生各種警
17、告信息, 有些是可以忽略的, 但設計者應該盡量去除,不去除必須確認每條警告的含義,避免因此使設計的實現(xiàn)產生隱患。這個原則對仿真和布局布線同樣適用。4.2 調用模塊的黑盒子(Black box)方法使用黑盒子方法的原因主要有兩點:一是 HDL 代碼中調用了一些 FPGA 廠家提供的模塊(如 Altera 的 LPM 模塊)或第三方提供的 IP,這些模塊不需要綜合, 而且有些綜合器也不能綜合 (如 FPGA CompilerII/FPGAExpress 可以綜合包含 LPM 的代碼而 LeonardoSpectrum 不能)。因此須提供一個黑盒子接口給綜合器,所調用的模塊到布局布線時才進行連接。8
18、二是方便代碼的移植,由于廠家提供的模塊或第三方提供的IP 通常都是與工藝有關的,直接在代碼中調用的話將不利于修改,影響代碼移植。下面以調用 Altera 的 LPM 庫中的乘法器為例來說明。調用這樣一個模塊需要這樣一個文件: mult8x8.v (可由 Quartus 的 MegaWizer Plug-in Manager 產生),代碼如下:/ mult8x8.vmodule mult8x8 (dataa, datab, result);input 7:0 dataa;input 7:0 datab;output 15:0 result;/ exemplar translate_off/ sy
19、nopsys translate_offlpm_multlpm_mult_component(.dataa(dataa),.datab(datab),.aclr(1'b0),.clock(1'b0),.clken(1'b0),.sum(1'b0),.result(result);defparamlpm_mult_component.lpm_widtha= 8,lpm_mult_component.lpm_widthb= 8,lpm_mult_component.lpm_widths= 16,lpm_mult_component.lpm_widthp= 16,lpm_mult_component.lpm_representation= "SIGNED",/ exemplar translate_on/ synopsys translate_onendmodule注意上
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版交通設施地形圖保密及規(guī)劃合同3篇
- 二零二五版建筑工程施工圖紙審查招標投標合同書3篇
- 二零二五年度花展工程花卉品種研發(fā)與專利申請合同3篇
- 二零二五年度綠色建筑項目采購合同3篇
- 二零二五版XX個人商業(yè)秘密保護合同樣本3篇
- 二零二五年度私人墓地購置與墓園墓碑雕刻人才培養(yǎng)合同3篇
- 二零二五年度金融機構貸款擔保與信用管理合同3篇
- 二零二五版家庭水電維修與改造兼職合同3篇
- 二零二五版廢舊電線電纜回收與資源化利用合同3篇
- 二零二五年度食品行業(yè)環(huán)境保護設施租賃合同2篇
- 【智慧校園】-智慧校園系統(tǒng)方案
- 康佳液晶電視企業(yè)文化(課堂PPT)
- 個人養(yǎng)老金:是什么、怎么繳、如何領PPT個人養(yǎng)老金基礎知識培訓PPT課件(帶內容)
- 雞鴨屠宰生產企業(yè)安全風險分級管控資料
- 醫(yī)院感染管理組織架構圖
- 《工程招投標與合同管理》題庫試題及答案 共5套試卷
- 離子色譜法分析氯化物原始記錄 (1)
- 高等數(shù)學說課稿PPT課件(PPT 49頁)
- 造影劑腎病概述和性質
- 單片機交通燈系統(tǒng)設計報告
- 標桿房企人力資源體系研究之龍湖
評論
0/150
提交評論