本文主要講述FPGA開發過程。
一、Design
在系統設計之前,首先要進行的是方案論證、系統設計和 FPGA 芯片選擇等準備工作。 系統工程師根據任務要求,如系統的指標和複雜度,對工作速度和芯片本 身的各種資源、 成本等方面進行權衡,選擇合理的設計方案和合適的器件類型。一般都採用自頂向下的設 計方法,把系統分成若干個基本單元,然後再把每個基本單 元劃分為下一層次的基本單 元,一直這樣做下去,直到可以直接使用 EDA 元件庫為止。
二、Design Entry
• 原理圖輸入
• CODE輸入方式
• 網表輸入方式
三、IP核
• 廠商工具產生的模塊(Inter MagaWizard和Xilinx Core Generator)
• 公司購買的IP Core
• 公司自行開發的通用模塊
• IP的形式可能是源代碼,也可能是EDIF網表
四、Function Simulation
• 功能仿真驗證設計的正確性
• 功能仿真沒有延時
• 使用專門的仿真工具,推薦modelsim
• Testbench用VHDL/Verolog HDL編寫
• 功能仿真速度快,應在功能仿真階段發現儘可能多的問題
• 功能仿真做得好,可以大大減少調試時間
五、TestBench
• TestBench用VHDL和Verilog HDL編寫
• 利用HDL的語言機制,可以產生非常豐富的測試激勵,對設計進行儘可能全面的驗證
六、系統級仿真
• 把Testbench描述成虛擬PCB
• 在虛擬PCB上放置虛擬元件,包括我們的設計和外圍元件
• 從器件商獲得器件的功能仿真模型(VHDL / Verilog HDL)
• 如果沒有模型可用,就需要作行為建模,可以是功能很簡單的模型
• 系統級仿真就是用虛擬邏輯分析儀觀察虛擬PCB上的波形
七、系統級仿真的例子
•從供應商獲得VRAM的模型
•對EMIF的總線接口進行行為建模
•編寫Testbench,描述虛擬PCB
•只需要給出CPU的訪問序列,不需要關心VRAM的響應時序
•可以進行大數據量仿真
八、仿真工具
• FPGA廠商提供的開發工具仿真功能很弱,只提供波形輸入,屬於入門級
• PC平臺上的仿真工具:
1)、Active HDL (Aldec)
2)、ModelSim (Mentor Graphics)推薦
九、Synthesis
• 綜合將行為級描述轉化成門級描述
• FPGA廠商提供的開發工具綜合效果都不太好,屬於入門級
• 綜合應在第三方工具上完成
• PC平臺上常用的綜合工具:Leonardo Spectrum(Mentor Graphics)、Syplify Pro(Syplicity)推薦
十、Constraints(Synthesis)
• 綜合階段的約束通常只有時間約束
• 綜合階段的約束條件並不是必須滿足,在佈局佈線階段會對設計進一步優化
• 綜合階段的約束將傳遞到佈局佈線階段
十一、綜合的輸出
• EDIF網表,供佈局佈線用
• VHDL/Verilog網表,供門級仿真用
• 約束文件,傳遞給佈局佈線工具
十二、Gate level Simulation
• 門級仿真驗證綜合結果與設計的一致性
• 門級仿真沒有延時,即使源文件中加入了延時
• 門級仿真使用功能仿真相同的TestBench
• 門級仿真的結果必須與功能仿真一致
十三、門級仿真的必要性
• 門級仿真並不是必要的
• 綜合將忽略敏感表,當敏感表中的信號沒有包括進程中用到的所有右值時,門級仿真將給出與功能仿真不同的結果
• 使用第三方綜合工具後對生成的門級網表
十四、Place & Route
• P&R的輸入是綜合產生的EDIF網表
• P&R將門級網錶轉化成FPGA配置代碼
• P&R在廠商開發工具中進行
十五、Constraints(P&R)
• P&R階段的約束包括時間約束和位置約束
• 時間約束有這樣幾種:
1)、tpd: pin-to-pin delay,只用於組合邏輯
2)、tsu:setup time,用於輸入
3)、tco:clock-to-out delay,用於輸出
4)、fmax:內部最高工作頻率
5)、Cut timing path:用於低速路徑
• 位置約束包括:
1)、引腳位置
2)、內部邏輯單元位置
十六、Static Timing Analysis
• 靜態時序分析給出P&R的結果是否滿足時間約束的信息
• 所有的時間約束必須滿足
• 如不滿足時間約束,需要加入內部邏輯單元的位置約束(即部分手動佈局),重新進行P&R
十七、P&R 的輸出
• FPGA編程文件
• VHDL/Verilog網表和SDF文件,供時序仿真用
十八、Timing Simulation
• 時序仿真驗證P&R結果與設計的一致性
• 時序仿真加入了延時,此延時是真實延時的上限
• 時序仿真使用功能仿真相同的TestBench
• 時序仿真的結果必須與功能仿真一致
• 時序仿真耗時較長
十九、時序仿真的必要性
• 當設計滿足以下條件時,可以不做時序仿真:
1)、純同步邏輯
2)、設計通過了功能仿真
3)、設計通過了靜態時序分析
• 同步設計可以簡化流程
二十、各階段的時間分配
二十一、Program下載驗證
• 二進制文件配置FPGA
1)、邏輯分析儀抓信號調試
2)、直至修改所有BUG
• 固化二進制文件
閱讀更多 FPGA三板斧 的文章