基於FPGA的詳細設計流程

本文主要講述FPGA開發過程。

基於FPGA的詳細設計流程

標準設計流程

一、Design

在系統設計之前,首先要進行的是方案論證、系統設計和 FPGA 芯片選擇等準備工作。 系統工程師根據任務要求,如系統的指標和複雜度,對工作速度和芯片本 身的各種資源、 成本等方面進行權衡,選擇合理的設計方案和合適的器件類型。一般都採用自頂向下的設 計方法,把系統分成若干個基本單元,然後再把每個基本單 元劃分為下一層次的基本單 元,一直這樣做下去,直到可以直接使用 EDA 元件庫為止。

二、Design Entry

• 原理圖輸入

基於FPGA的詳細設計流程

原理圖輸入

• CODE輸入方式

基於FPGA的詳細設計流程

代碼的方式輸入

• 網表輸入方式

三、IP核

• 廠商工具產生的模塊(Inter MagaWizard和Xilinx Core Generator)

• 公司購買的IP Core

• 公司自行開發的通用模塊

• IP的形式可能是源代碼,也可能是EDIF網表

基於FPGA的詳細設計流程

xilinx IP

四、Function Simulation

• 功能仿真驗證設計的正確性

• 功能仿真沒有延時

• 使用專門的仿真工具,推薦modelsim

• Testbench用VHDL/Verolog HDL編寫

• 功能仿真速度快,應在功能仿真階段發現儘可能多的問題

• 功能仿真做得好,可以大大減少調試時間

五、TestBench

• TestBench用VHDL和Verilog HDL編寫

• 利用HDL的語言機制,可以產生非常豐富的測試激勵,對設計進行儘可能全面的驗證

基於FPGA的詳細設計流程

testbech

六、系統級仿真

• 把Testbench描述成虛擬PCB

• 在虛擬PCB上放置虛擬元件,包括我們的設計和外圍元件

• 從器件商獲得器件的功能仿真模型(VHDL / Verilog HDL)

• 如果沒有模型可用,就需要作行為建模,可以是功能很簡單的模型

• 系統級仿真就是用虛擬邏輯分析儀觀察虛擬PCB上的波形

七、系統級仿真的例子

基於FPGA的詳細設計流程

•從供應商獲得VRAM的模型

•對EMIF的總線接口進行行為建模

•編寫Testbench,描述虛擬PCB

•只需要給出CPU的訪問序列,不需要關心VRAM的響應時序

•可以進行大數據量仿真

八、仿真工具

• FPGA廠商提供的開發工具仿真功能很弱,只提供波形輸入,屬於入門級

• PC平臺上的仿真工具:

1)、Active HDL (Aldec)

2)、ModelSim (Mentor Graphics)推薦

九、Synthesis

基於FPGA的詳細設計流程

綜合

• 綜合將行為級描述轉化成門級描述

• FPGA廠商提供的開發工具綜合效果都不太好,屬於入門級

• 綜合應在第三方工具上完成

• PC平臺上常用的綜合工具:Leonardo Spectrum(Mentor Graphics)、Syplify Pro(Syplicity)推薦

十、Constraints(Synthesis)

基於FPGA的詳細設計流程

• 綜合階段的約束通常只有時間約束

• 綜合階段的約束條件並不是必須滿足,在佈局佈線階段會對設計進一步優化

• 綜合階段的約束將傳遞到佈局佈線階段

十一、綜合的輸出

• EDIF網表,供佈局佈線用

• VHDL/Verilog網表,供門級仿真用

• 約束文件,傳遞給佈局佈線工具

十二、Gate level Simulation

• 門級仿真驗證綜合結果與設計的一致性

• 門級仿真沒有延時,即使源文件中加入了延時

• 門級仿真使用功能仿真相同的TestBench

• 門級仿真的結果必須與功能仿真一致

十三、門級仿真的必要性

• 門級仿真並不是必要的

• 綜合將忽略敏感表,當敏感表中的信號沒有包括進程中用到的所有右值時,門級仿真將給出與功能仿真不同的結果

• 使用第三方綜合工具後對生成的門級網表

十四、Place & Route

基於FPGA的詳細設計流程

佈局佈線

• 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)、設計通過了靜態時序分析

• 同步設計可以簡化流程

二十、各階段的時間分配

基於FPGA的詳細設計流程

功能仿真是FPGA設計中最重要的部分!

二十一、Program下載驗證

• 二進制文件配置FPGA

1)、邏輯分析儀抓信號調試

2)、直至修改所有BUG

• 固化二進制文件


分享到:


相關文章: