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

機(jī)柜內(nèi)光纖布線怎么安裝
如何布線才能降低MDDESD風(fēng)險(xiǎn)?PCB布局的抗干擾設(shè)計(jì)技巧

解決噪聲問題試試從PCB布局布線入手
FPGA+AI王炸組合如何重塑未來世界:看看DeepSeek東方神秘力量如何預(yù)測(cè)......
104條關(guān)于PCB布局布線的小技巧

Vivado之實(shí)現(xiàn)布局布線流程介紹

一個(gè)FPGA布局布線的報(bào)錯(cuò)問題

在DSP上實(shí)現(xiàn)DDR2 PCB布局布線

串行接口PCB設(shè)計(jì)指南:優(yōu)化布局與布線策略
求助,關(guān)于模擬電路的PCB布線及布局問題求解
AM62Ax/AM62Px LPDDR4 電路板設(shè)計(jì)和布局布線指南

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

評(píng)論