布局布線
1
布局
我們前面做的那些設計流程得到的LUT門級網表就好比一個購物清單,即LUT門級網表。網表里提供的僅僅是從邏輯關系上一些LUT結構的連接。我們需要將這些LUT結構配置到FPGA具體的哪個位置。需要說明的是,FPGA里任何硬件結構都是按照橫縱坐標進行標定的,圖中選中的是一個SLICE,SLICE里面存放著表和其他結構,它的位置在X50Y112上。不同的資源的坐標不一樣,但是坐標的零點是公用的。
在FPGA里布局需要考慮的問題是,如何將這些已有的邏輯上連接的LUT及其它元素合理的放到現有的FPGA里,達到功能要求的時候保證質量。具體點就比如,乘法器這樣的電路適合放在RAM附近,當然,硬件乘法器的硬件布局一般也是在存儲器附近,有利于縮短乘法的延時時間,什么樣的電路需要配置高速等等。 十萬公頃的地布局規劃好了,農產品就會有很好的豐收,同樣FPGA開發布局布好了,由FPGA搭建起來的電路就會更加穩定和擴展性。
2
布線
我們在FPGA內通過布局,知道那些LUT具體分布到哪個SLICE,但是一方面如何讓這些SLICE連接起來,二方面如何讓輸入的信號到達相應的開始處理點和如何讓輸出到達輸出IO上,并且連接的電路整體性能好,這就是布線這個環節需要完成的內容。要達到布線最優話,當然這里面設計到布線算法和很多細節問題,比如涉及到布線資源、PLL資源分布。但是這些對我們理解布線這個概念沒有很多益處,暫且不深入,本質上就是一個線路求最優的問題。
約束
constraint
約束,在綜合和布局布線這兩個流程環節里都出現了,我們暫且規定其為約束一和約束二,或者說綜合約束和布局布線約束,布局布線約束又可以分為位置約束、時序約束。 約束,就是對這些環節操作定制規則。一般開發環境會對這些約束有個默認,這些默認的設置對大部分情況下還是適用的,但是通常布局布線約束中的I/O約束是我們每一個工程都必須給定的。同時開發工具開放其他約束接口,允許我們設置這些規則,具體的有哪些約束怎么去做在后面介紹工具使用的時候進行討論,這里先明白這些約束的基本概念。
01
綜合約束
相信大家已經下意識的將綜合約束和綜合過程掛在一起了,沒錯,綜合約束確實是在綜合過程中做的,用來指導綜合過程,包括編譯和映射。我們已經知道綜合過程是將RTL級電路描述轉換到FPGA上的硬件單元(LUT)中,形成以FPGA存在的硬件單元構成的電路。 我們還是拿前面有過的例子來說明,不同的約束將導致生成性能不同的電路。綜合這么一個電路,沒有加資源共享得到的電路如下圖左邊所示的電路,而加了資源共享的約束后,得到的電路結構如下圖右邊的電路。
通過之前的分析,得到左邊的電路結構資源消耗多但是速度快,而右邊的結構消耗資源少,但是速度慢,乘法器需要分時復用。 當然這只是一個例子,但是足以說明,不同的綜合指導原則也就是綜合約束,將會產生不同的電路。當得到的電路性能不能滿足需求的時候,適當考慮綜合約束,來達到一個速度和面積的轉換的效果,實現性能的提升。電路實現的速度和消耗的面積是貫穿在FPGA開發過程中兩個 矛盾的問題,綜合約束是其中一種小范圍內實現速度和面見平衡點移動的方式。
02
位置約束
位置約束和布局有關系,它就是指布局的策略。根據所選擇的FPGA平臺現有硬件資源分布來決定我們布局。 其中最典型的位置約束就是I/O約束。一個典型的系統是既有輸入也有輸出的,而不管是輸入還是輸出,都是從I/O上為端點的。輸入從哪個端點進來,輸出從哪個端點出去,輸入是需要支持什么樣的電氣特性的端點,輸出又是需要支持什么樣的電氣特定的端點。這些都是I/O約束做的事情。任何一個工程,都必須有這么一個約束。 還有一種典型的位置約束是在增量編譯里涉及的物理界定。增量編譯的出現就是因為在FPGA開發過程中綜合和布局布線的長耗時性而提出的。思想就是把FPGA切成很多個小塊的FPGA,然后約定具體哪塊小FPGA放置什么模塊,實現什么樣的功能,從物理上進行界定。當修改工程后,開發平臺就會檢測哪些小FPGA內沒有進行修改,哪些進行了修改,然后將修改過的部分重新進行綜合布局布線步驟。這樣一來,相比原來修改一點,全工程重新經過那些過程來講,時間節省下來了。
03
時序約束
估計沒有多少懸念了,時序約束很大程度上和布線有關。為什么要做這個約束? 由于一方面信號在芯片內傳遞是需要消耗時間的,另一方面大量存在的寄存器有反應時間,而我們開發的最開始的時候這些時間都是理想化的。但是考慮到真實情況下,如果跑的速度比較高,達到了200M這么個速度,當然這個高速和具體的芯片有關,高性能的芯片本身跑的速度可以達到很高,200M相對來說就不是高速,對一些低性能芯片還可能達不到200M。這個時候,這些時間達到了同樣一個系統時間數量級的時候,很可能影響電路的性能了。某一刻,該來的信號沒有來,默認的話就會采集錯誤信號了。 為了讓這些硬件本身帶來的延時時間更理想化,我們就要對這些決定時間延時的因素優化來減少時間延時。
對于寄存器本身的反應時間這個因素我們開發者是無能為力的,我們要做的優化就是布線了。是走直線還是走其他,不僅僅決定于自身這條路徑,還和整個系統布線有關,好比水桶原理,系統性能決定于最差路徑延時。 時序約束做的就是這些事情,但是時序約束并不是指具體去連接每一條線,這個工作就像前面那些流程一樣都是由軟件去實現的,先用軟件自己默認原則布線,然后對其結果分析,不滿足時序要求的,我們再對具體的問題路徑做一些指導約束。時序約束的添加,主要包括周期約束、輸入偏移約束和輸出偏移約束。具體的過程在后面章節介紹工具使用時會有具體動手的指導。
原文標題:詳解FPGA開發設計之布局布線&約束
文章出處:【微信公眾號:FPGA技術支持】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
FPGA
+關注
關注
1643文章
21983瀏覽量
614823 -
電路
+關注
關注
173文章
6022瀏覽量
174584 -
布線
+關注
關注
9文章
794瀏覽量
84945 -
LUT
+關注
關注
0文章
50瀏覽量
12787
原文標題:詳解FPGA開發設計之布局布線&約束
文章出處:【微信號:HK-FPGA_Dep,微信公眾號:FPGA技術支持】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
高速PCB布局/布線的原則

如何布線才能降低MDDESD風險?PCB布局的抗干擾設計技巧

解決噪聲問題試試從PCB布局布線入手
FPGA+AI王炸組合如何重塑未來世界:看看DeepSeek東方神秘力量如何預測......
Vivado之實現布局布線流程介紹

求助,關于模擬電路的PCB布線及布局問題求解
AM62Ax/AM62Px LPDDR4 電路板設計和布局布線指南

高速ADC PCB布局布線技巧分享

非常實用的PCB布局布線規則,畫出美而高性能的板子
PCB布局布線技巧之功率回路

評論