了解FPGA的設計流程嗎,看完這篇文章你就懂了

2021-10-23 01:38:43 字數 1938 閱讀 1206

1.電路設計與輸入

電路設計與輸入是指通過某些規範的描述方式,將電路構思輸入給eda工具。常用的設計輸入方法有硬體描述語言和原理圖設計輸入方法等。原理圖設計輸入法在早期應用比較廣泛,它根據設計要求選用器件、繪製原理圖、完成輸入過程。這種方法的優點是直觀、便於理解、元器件庫資源豐富。但是在大型設計中,該方法的可維護性較差,不利於模組構造與重用。

目前進行大型工程設計時,常用的設計方法是硬體描述語言設計輸入法,其中影響最為廣泛的hdl語言是vhdl和verilog hdl。它們的共同特點是利於由頂向下設計,利於模組的劃分與復用,可移植性好,通用性好,設計不因晶元的工藝與結構的不同而變化,更利於向asic的移植。波形輸入和狀態機輸入方法是兩種常用的輔助設計輸入方法。使用波形輸入法時,只要繪製出激勵波形和輸出波形,eda軟體就能自動地根據響應關係進行設計。使用狀態機輸入法時,設計者只需畫出狀態轉移圖,eda軟體就能生成相應的hdl**或者原理圖,使用十分方便。

2.功能**

電路設計完成後,要用專用的**工具對設計進行功能**,驗證電路功能是否符合設計要求。功能**有時也被稱為前**。

3.綜合優化

綜合優化是指將hdl語言、原理圖等設計輸入翻譯成由與門、或門、非門、ram、觸發器等基本邏輯單元組成的邏輯連線(網表),並根據目標與要求(約束條件)優化所生成的邏輯連線,輸出edf和edn等標準格式的網表檔案,供fpga廠家的布局佈線器實現。

4.綜合後**

綜合完成後需要檢查綜合結果是否與原設計一致,做綜合後**。在**時,把綜合生成的標準延時檔案反標註到綜合**模型中,可估計門延時帶來的影響。綜合後**雖然比功能**更精確,但只能估計門延時,不能估計線延時,**結果與佈線後的實際情況還有一定的差距,並不十分準確,這種**的主要目的是檢查綜合器的綜合結果是否與設計輸入一致。目前主流綜合工具日益成熟,對於一般性設計,如果設計者確信自己表述明確,沒有綜合歧義發生,可以省略綜合後**步驟。但是如果在布局佈線後**發現有電路結構與設計意圖不符的現象,就需要回溯到綜合後**以確認是否是由於綜合歧義造成的問題。

5.布局佈線

綜合結果的本質是一些由與門、或門、非門、觸發器和ram等基本邏輯單元組成的邏輯網表,其與晶元實際的配置情況具有較大差距。此時應該使用fpga廠商提供的軟體工具,根據所選晶元的型號,將綜合輸出的邏輯網表適配到具體的fpga器件上,這個過程就叫實現過程。因為只有器件開發商最了解器件的內部結構,所以實現步驟必須選用器件開發商提供的工具。在實現過程中最主要的過程是布局佈線,所謂布局是指將邏輯網表中的硬體或底層單元合理地適配到fpga內部的固有硬體結構上,布局的優劣對設計的最終實現結果影響很大。

所謂佈線是指根據布局的拓撲結構,利用fpga內部的各種連線資源,合理正確地連線各元件的過程。fpga的結構相對複雜,為了獲得更好的實現結果,特別是保證能夠滿足設計的時序條件,一般採用時序驅動的引擎進行布局佈線。所以對於不同的設計輸入,特別是不同的時序約束,獲得的布局佈線結果一般有較大差異。一般情況下,使用者可以通過設定引數指定布局佈線的優化準則,總之,優化目標主要有面積和速度兩個方面要求。一般根據設計的主要矛盾,選擇面積、速度或平衡兩者的優化目標。如果當兩者衝突時,一般先滿足時序約束要求,此時選擇速度或時序優化目標效果更好。

6.時序**與驗證

將布局佈線的時延資訊反標註到設計網表中,所進行的**就叫時序**或布局佈線後**,簡稱後**。布局佈線之後生成的**時延檔案包含的時延資訊最全,不僅包含門延時,還包含實際佈線延時,所以佈線後**最準確,能較好地反映晶元的實際工作情況。一般來說,佈線後**步驟必須進行,通過布局佈線後**能檢查設計時序與fpga實際運**況是否一致,確保設計的可靠性和穩定性。布局佈線後**的主要目的在於發現時序是否違規,即是否滿足時序約束條件或器件固有時序規則的情況。

7.板級**與驗證

在有些高速設計中還需要使用第三方的板級驗證工具進行**與驗證。

FPGA的設計藝術(2)FPGA開發流程

現場可程式設計門陣列 fpga 是一種半導體器件,包含邏輯塊,這些邏輯塊被程式設計為執行一組特定的功能。這些可程式設計邏輯塊在互連矩陣的幫助下相互連線。這些互連負責連線邏輯塊並促進訊號在晶元上的流動。該結構以二維陣列的形式排列,該二維陣列由將其與輸入和輸出訊號連線的邏輯塊,互連和i o塊組成。邏輯塊...

Nginx 的請求處理流程,你了解嗎?

之前我們已經講解了 nginx 的基礎內容,接下來我們開始介紹 nginx 的架構基礎。因為 nginx 執行在企業內網的最外層也就是邊緣節點,那麼他處理的的流量是其他應用伺服器處理流量的數倍,甚至幾個數量級,我們知道任何一種問題在不同的數量級下,他的解決方案是完全不同的,所以在 nginx 它所處...

FPGA與普通數字晶元設計流程的差異

fpga與普通數字晶元設計流程的差異 設計步驟 fpga 數字晶元 邏輯設計與 在這一點上二者非常接近,一般採用硬體設計語言進行設計,並進行功能 fpga的 一般採用modelsim或由fpga廠商提供的 工具。近年來一些開源的 工具 如verilator等 也開始等到採用 綜合多採用一種綜合軟體或...