本部門所承擔的fpga設計任務主要是兩方面的作用:系統的原型實現和asic的原型驗證。編寫本流程的目的是:
● 在於規範整個設計流程,實現開發的合理性、一致性、高效性。
● 形成風格良好和完整的文件。
● 實現在fpga不同廠家之間以及從fpga到asic的順利移植。
● 便於新員工快速掌握本部門fpga的設計流程。
由於目前所用到的fpga器件以altera的為主,所以下面的例子也以altera為例,工具組合為 modelsim + leonardospectrum/fpgacompilerii + quartus,但原則和方法對於其他廠家和工具也是基本適用的。
前言 1
目錄 2
1. 基於hdl的fpga設計流程概述 1
1.1 設計流程圖 1
1.2 關鍵步驟的實現 2
1.2.1 功能** 2
1.2.2 邏輯綜合 2
1.2.3 前** 3
1.2.4 布局佈線 3
1.2.5 後**(時序**) 4
2. verilog hdl設計 4
2.1 程式設計風格(coding style)要求 4
2.1.1 檔案 4
2.1.2 大小寫 5
2.1.3 識別符號 5
2.1.4 引數化設計 5
2.1.5 空行和空格 5
2.1.6 對齊和縮排 5
2.1.7 注釋 5
2.1.8 參考c語言的資料 5
2.1.9 視覺化設計方法 6
2.2 可綜合設計 6
2.3 設計目錄 6
3. 邏輯** 6
3.1 測試程式(test bench) 7
3.2 使用預編譯庫 7
4. 邏輯綜合 8
4.1 邏輯綜合的一些原則 8
4.1.1 關於leonardospectrum 8
4.1.1 大規模設計的綜合 8
4.1.3 必須重視工具產生的警告資訊 8
4.2 呼叫模組的黑盒子(black box)方法 8
參考 10
修訂紀錄 10
說明:● 邏輯**器主要指modelsim,verilog-xl等。
● 邏輯綜合器主要指leonardospectrum、synplify、fpga express/fpga compiler等。
● fpga廠家工具指的是如altera的max+plusii、quartusii,xilinx的foundation、alliance、ise4.1等。
說明: 「呼叫模組的行為**模型」指的是rtl**中引用的由廠家提供的巨集模組/ip,如altera 提供的lpm庫中的乘法器、儲存器等部件的行為模型。
說明:「呼叫模組的黑盒子介面」的匯入,是由於rtl**呼叫了一些外部模組,而這些外部模組不能被綜合或無需綜合,但邏輯綜合器需要其介面的定義來檢查邏輯並保留這些模組的介面。
說明: 一般來說,對fpga設計這一步可以跳過不做,但可用於debug綜合有無問題。
基於將來設計轉向asic的方便,本部門的設計統一採用verilog hdl,但針對混合設計和混合**的趨勢,所有開發人員也應能讀懂vhdl。
verilog hdl的學習可參考[1][2]。
(1) 每個模組(module)一般應存在於單獨的原始檔中,通常源檔名與所包含模組名相同。
(2) 每個設計檔案開頭應包含如下注釋內容:
● 年份及公司名稱。
● 作者。
● 檔名。
● 所屬專案。
● 頂層模組。
● 模組名稱及其描述。
● 修改紀錄。
請參考標準示例程式[3]。
(1) 如無特別需要,模組名和訊號名一律採用小寫字母。
(2) 為醒目起見,常數(`define定義)/引數(parameter定義)採用大寫字母。
(1) 識別符號採用傳統c語言的命名方法,即在單詞之間以「_」分開,如:max_delay、data_size等等。
(2) 採用有意義的、能反映物件特徵、作用和性質的單詞命名識別符號,以增強程式的可讀性。
(3) 為避免識別符號過於冗長,對較長單詞的應當採用適當的縮寫形式,如用『buff』代替『buffer』,『ena』代替『enable』,『addr』代替『address』等。
為了源**的可讀性和可移植性起見,不要在程式中直接寫特定數值,盡可能採用`define語句或paramater語句定義常數或引數。
(1) 適當地在**的不同部分中插入空行,避免因程式擁擠不利閱讀。
(2) 在表示式中插入空格,避免**擁擠,包括:
賦值符號兩邊要有空格;
雙目運算子兩邊要有空格;
單目運算子和運算元之間可沒有空格,
示例如下:
a <= b;
c <= a + b;
if (a == b) then ...
a <= ~a & c;
(1) 不要使用連續的空格來進行語句的對齊。
(2) 採用製表符tab對語句對齊和縮排,tab鍵採用4個字元寬度,可在編輯器中設定。
(3) 各種巢狀語句尤其是if...else語句,必須嚴格的逐層縮排對齊。
必須加入詳細、清晰的注釋行以增強**的可讀性和可移植性,注釋內容佔**篇幅不應少於30%。
要形成良好的程式設計風格,有許多細節需要注意,可以參考資料[4],雖然它是針對c語言的討論,但由於verilog hdl和c語言的形式非常近似,所以裡面提到的很多原則都是可以借鑑的。
為提高設計效率和適應協同設計的方式,可採用視覺化的設計方法,mentor grahpics的renoir軟體提供了非常好的設計模式。
用hdl實現電路,設計人員對可綜合風格的rtl描述的掌握不僅會影響到**和綜合的一致性,也是邏輯綜合後電路可靠性和***壞最主要的因素,對此應當予以充分的重視。
學習可綜合的hdl請參考 [5][6] [7]。
學習設計的模組劃分請參考[8]。
華為FPGA設計流程指南
本部門所承擔的fpga設計任務主要是兩方面的作用 系統的原型實現和asic的原型驗證。編寫本流程的目的是 在於規範整個設計流程,實現開發的合理性 一致性 高效性。形成風格良好和完整的文件。實現在fpga不同廠家之間以及從fpga到asic的順利移植。便於新員工快速掌握本部門fpga的設計流程。由於目...
FPGA完整設計流程
1 設計輸入 1 設計的行為或結構描述。2 典型文字輸入工具有ultraedit 32和editplus.exe.3 典型圖形化輸入工具 mentor的renoir。4 我認為ultraedit 32最佳。2.除錯 1 對設計輸入的檔案做 除錯,語法檢查。2 典型工具為debussy。3 前 1 功...
FPGA課程設計報告
西安郵電學院 題目 採用ram實現計數器及fpga功能驗證 院系 電子工程學院 專業班級 學生姓名 導師姓名 起止時間 2012 06 18至2012 06 29 2012年 07 月 01 日 1 任務 用乙個10 8的雙口ram完成10個8位計數器,計數器的初值分別為1 10,時鐘頻率為1mhz...