一、前言
本文將介紹Vivado進(jìn)行綜合,以及布局布線(xiàn)的內(nèi)部流程,熟悉該流程后結(jié)合Settings中對(duì)應(yīng)的配置選項(xiàng),對(duì)于時(shí)序收斂調(diào)試將更具有針對(duì)性。
二、Implementation(實(shí)現(xiàn))
實(shí)現(xiàn)流程由一系列的子流程組成,包括:Design Initialization設(shè)計(jì)初始化、Opt Design設(shè)計(jì)優(yōu)化、Power Opt Design功率優(yōu)化【可選項(xiàng)】、Place Design布局、Post-Place Power Opt Design布局后期設(shè)計(jì)功率優(yōu)化【可選項(xiàng)】、Post-Place Phys Opt Design布局后期設(shè)計(jì)物理優(yōu)化【可選】、Route Design布線(xiàn)、Post-Route Phys Opt Design布線(xiàn)后期設(shè)計(jì)物理優(yōu)化【可選項(xiàng)】、Write Bitstream寫(xiě)入比特流、Write Device Image寫(xiě)入器件備份文件。
下面將重點(diǎn)介紹和布局布線(xiàn)相關(guān)的流程,其他簡(jiǎn)略帶過(guò)。
Opt Design:對(duì)邏輯設(shè)計(jì)進(jìn)行優(yōu)化,使其與器件匹配
Power Opt Design: 對(duì)設(shè)計(jì)的單元進(jìn)行優(yōu)化從而降低功耗
Place Design:將設(shè)計(jì)布局到器件上
Post-Place Power Opt Design:在布局后進(jìn)行進(jìn)一步的優(yōu)化來(lái)降低功耗
Post-Place Phys Opt Design:對(duì)時(shí)序違例的路徑進(jìn)行優(yōu)化
Route Design:對(duì)于布局后的設(shè)計(jì)進(jìn)行布線(xiàn)
Post-Route Phys Opt Design:通過(guò)實(shí)際的布線(xiàn)延時(shí)值進(jìn)行邏輯,布局,布線(xiàn)優(yōu)化
Write Bitstream :生成器件配置的比特流
Write Device Image:生成器件備份文件
三、布局布線(xiàn)
3.1 Placement(布局)
布局通俗理解就是布局器會(huì)將來(lái)自網(wǎng)表的單元布局到芯片的確定位置,可細(xì)分為7個(gè)子流程。
3.1.1 設(shè)計(jì)布局優(yōu)化
布局優(yōu)化對(duì)象主要是時(shí)序違例路徑較大的單元,線(xiàn)長(zhǎng)較大的部分以及通過(guò)監(jiān)控引腳密度來(lái)提前進(jìn)行布局分散從而避免后期布線(xiàn)擁塞
3.1.2 設(shè)計(jì)規(guī)則檢查
開(kāi)始布局前,會(huì)先進(jìn)行設(shè)計(jì)規(guī)則檢測(cè)DRC,DRC有兩類(lèi),一類(lèi)是用戶(hù)在report_drc中設(shè)置的規(guī)則,另一類(lèi)是軟件自定義的規(guī)則,如存儲(chǔ)器IP單元沒(méi)有進(jìn)行位置約束或者是IO banks和IO標(biāo)準(zhǔn)沖突
3.1.3 布局時(shí)鐘單元和I/O
完成DRC后,布局器會(huì)優(yōu)先布局時(shí)鐘單元和I/O單元。時(shí)鐘和I/O一般是同時(shí)進(jìn)行布局的,因?yàn)樵谥付ㄆ骷校季忠?guī)則中二者關(guān)聯(lián)性很強(qiáng)。對(duì)于Ultrascale/Ultrascale+系列的器件,布局器也布局時(shí)鐘軌道,對(duì)時(shí)鐘預(yù)布線(xiàn)。如果觸發(fā)器會(huì)合并進(jìn)入到I/O邏輯單元,也在這階段進(jìn)行布局,否則布局失敗時(shí),會(huì)有嚴(yán)重告警打印。
在這一階段,布局器要完成的布局對(duì)象有I/O端口和與之關(guān)聯(lián)的邏輯,全局時(shí)鐘緩沖器,時(shí)鐘管理單元(MMCMS和PLL),GT單元。同時(shí),布局器也要考慮設(shè)置的位置約束屬性和區(qū)域約束屬性。
當(dāng)時(shí)鐘或I/O布局失敗時(shí),布局報(bào)告會(huì)打印相關(guān)錯(cuò)誤,對(duì)錯(cuò)誤進(jìn)行簡(jiǎn)單描述。通常,布局失敗的原因有以下幾點(diǎn)
a. 因?yàn)榧s束沖突導(dǎo)致的時(shí)鐘樹(shù)問(wèn)題
b.過(guò)于復(fù)雜的時(shí)鐘樹(shù)問(wèn)題
d.資源不足
f.違反了I/O bank的一些規(guī)則
3.1.4全局布局,詳細(xì)布局和后期布局優(yōu)化
完成時(shí)鐘和I/O布局后,依次是全局布局,詳細(xì)布局,后期布局優(yōu)化。
3.1.4.1 全局布局
全局布局分為布局資源規(guī)劃(floorplanning)和物理綜合。布局資源在I/O和時(shí)鐘布局后被分成很多小的相關(guān)聯(lián)的邏輯,Pblock約束是需要考慮的,是硬性要求。
在布局資源規(guī)劃后是物理綜合,在基于布局資源規(guī)劃基礎(chǔ)上,布局器將對(duì)網(wǎng)表運(yùn)行不同的物理優(yōu)化策略進(jìn)行設(shè)計(jì)的初始化布局。例如,基于復(fù)制的扇出,復(fù)制的驅(qū)動(dòng)源將和load放一起,因?yàn)槌跏嘉恢檬谴_定的。優(yōu)化也會(huì)考慮內(nèi)部的參數(shù)設(shè)置以及時(shí)序相關(guān)的。只有時(shí)序有所改善,優(yōu)化才會(huì)真正進(jìn)行。
在物理綜合階段,下圖是優(yōu)化概要示例。
LUT的分解與重組:如果LUTs有SOFT_HLUTNM屬性并且LUT分解和重組能改善時(shí)序,布局器將進(jìn)行該操作
基于屬性的重定時(shí):用戶(hù)可以通過(guò)設(shè)置一個(gè)屬性在寄存器或LUT上實(shí)行重定時(shí),對(duì)于時(shí)序起點(diǎn)和終點(diǎn)有足夠距離的關(guān)鍵路徑來(lái)說(shuō)作用較明顯。在PSIP有兩個(gè)控制重定時(shí)的屬性:PSIP_RETIMING_BACKWARD,PSIP_RETIMING_FORWARD,值都設(shè)置為true時(shí)表示執(zhí)行后向重定時(shí)和前向重定時(shí)。
同時(shí),在以下場(chǎng)景下設(shè)置重定時(shí)屬性將不會(huì)起作用
a.移動(dòng)的邏輯經(jīng)過(guò)了一些大塊單元,如BRAM,URAM,DSP
b. pack到了I/O上的寄存器
c.路徑的起點(diǎn)與終點(diǎn)時(shí)鐘不同
d.路徑上含有時(shí)序例化的設(shè)置
e.含有阻止優(yōu)化的屬性,如DONT_TOUCH等
高扇出優(yōu)化:高扇出通過(guò)復(fù)制寄存器來(lái)驅(qū)動(dòng)高扇出nets(扇出大于1000,slack值小于2ns)
關(guān)鍵單元優(yōu)化:在失敗路徑上通過(guò)復(fù)制單元來(lái)進(jìn)行優(yōu)化,如果已布局的單元的load距離太遠(yuǎn),該單元將會(huì)被賦值然后放置到距離load更近的位置。通常在一些塊狀RAM,URAM,大量的DSP布局較為分散時(shí),該優(yōu)化使用較多
扇出優(yōu)化:對(duì)于設(shè)置了MAX_FANOUT的nets,當(dāng)nets的實(shí)際扇出數(shù)量大于設(shè)置的MAX_FANOUT時(shí),將會(huì)進(jìn)行優(yōu)化。用戶(hù)可以通過(guò)添加FORCE_MAX_FANOUT到該nets上,從而強(qiáng)制對(duì)驅(qū)動(dòng)該nets的寄存器或LUT進(jìn)行復(fù)制,并且此處提到的load都是實(shí)際物理連接的loads,不是邏輯loads。
DSP寄存器優(yōu)化:DSP寄存器優(yōu)化是指將寄存器從DSP中移出到邏輯組中,或者從邏輯單元移入到DSP中,從而改善關(guān)鍵路徑的時(shí)延
移位寄存器流水線(xiàn)優(yōu)化:操作是將有固定長(zhǎng)度的移位寄存器改成動(dòng)態(tài)調(diào)整寄存器流水線(xiàn),然后再布局流水線(xiàn)流水線(xiàn)來(lái)改善時(shí)序,動(dòng)態(tài)的SRLs不支持該優(yōu)化
移位寄存器優(yōu)化:該優(yōu)化是針對(duì)在移位寄存器單元和其他邏輯單元間存在時(shí)序違例的路徑
塊狀RAM寄存器優(yōu)化:塊狀RAM寄存器優(yōu)化是指將寄存器從塊狀RAM中移出到邏輯組中,或者從邏輯單元移入到塊狀RAM中,從而改善關(guān)鍵路徑的時(shí)延
動(dòng)態(tài)/靜態(tài)區(qū)域接口網(wǎng)線(xiàn)復(fù)制:在DFX流程中,將靜態(tài)設(shè)計(jì)復(fù)制到可重配的模塊便捷路徑上
等價(jià)驅(qū)動(dòng)源重布線(xiàn)優(yōu)化:將邏輯上相等的驅(qū)動(dòng)源進(jìn)行l(wèi)oad的重新分配,減少布線(xiàn)的重復(fù),也能為驅(qū)動(dòng)源和負(fù)載提供更優(yōu)的位置。這個(gè)可以減少資源使用和布線(xiàn)擁塞
3.1.4.2 詳細(xì)布局
通過(guò)詳細(xì)布局,可以讓設(shè)計(jì)從初始化的全局布局成為全部布局。通常是先對(duì)大塊單元,如多列的URAM,塊狀RAM,DSP塊組布局,然后是LUTRAM組,用戶(hù)在XDC中定義的更小一些的大塊。邏輯單元布局時(shí)是不斷迭代,以保證線(xiàn)長(zhǎng),時(shí)序最優(yōu),不擁塞。在CLBs的LUT-FF對(duì)和CLB中的寄存器必須共用普通的控制集
3.1.4.3后期布局優(yōu)化
在所有的邏輯單元位置都確定后,后期布局優(yōu)化將進(jìn)行改善時(shí)序和擁塞的最后一步,包括改善關(guān)鍵路徑的布局,BUFG復(fù)制,可選的BUFG插入。在BUFG復(fù)制階段,BUFG驅(qū)動(dòng)的nets跨多個(gè)SLRs時(shí),每個(gè)SLRs都會(huì)分配一個(gè)BUFG。在布局或布線(xiàn)沖突,以及有阻止復(fù)制或時(shí)鐘降級(jí)的約束時(shí),該優(yōu)化將不會(huì)進(jìn)行。
在BUFG插入階段,布局器將高扇出的net布線(xiàn)到全局布線(xiàn)路徑上,從而釋放普通布線(xiàn)資源,驅(qū)動(dòng)控制信號(hào)的高扇出nets如果slack值大于1ns將會(huì)優(yōu)化。
3.2Routing(布線(xiàn))
在完成布局后,布線(xiàn)器將會(huì)進(jìn)行布線(xiàn)。布線(xiàn)器提供了2個(gè)布線(xiàn)選項(xiàng),對(duì)整個(gè)設(shè)計(jì)布線(xiàn)或?qū)蝹€(gè)的引腳或nets布線(xiàn)。當(dāng)對(duì)整個(gè)設(shè)計(jì)布線(xiàn)時(shí),流程是時(shí)序驅(qū)動(dòng)的,在時(shí)序約束的基礎(chǔ)上,使用自動(dòng)的時(shí)序計(jì)算規(guī)則。當(dāng)對(duì)單個(gè)nets或引腳布線(xiàn)時(shí),有迭代布線(xiàn)和自動(dòng)延時(shí)兩種模式。
布線(xiàn)的子流程包括:設(shè)計(jì)規(guī)則檢查DRC,布線(xiàn)優(yōu)先級(jí)。
3.2.1 設(shè)計(jì)規(guī)則檢查
設(shè)計(jì)規(guī)則檢查主要有兩類(lèi)檢查,第一類(lèi)是用戶(hù)從report_drc中設(shè)置的規(guī)則,第二類(lèi)是vivado軟件內(nèi)部的檢查規(guī)則
3.2.2 布線(xiàn)優(yōu)先級(jí)
布線(xiàn)器首先布線(xiàn)全局資源,如時(shí)鐘,復(fù)位,I/O和其他降級(jí)的資源。在布線(xiàn)器內(nèi)部有默認(rèn)的優(yōu)先級(jí),然后根據(jù)時(shí)序重要性對(duì)數(shù)據(jù)信號(hào)布線(xiàn)。
-
布線(xiàn)
+關(guān)注
關(guān)注
9文章
771瀏覽量
84322 -
布局
+關(guān)注
關(guān)注
5文章
269瀏覽量
25005 -
Vivado
+關(guān)注
關(guān)注
19文章
812瀏覽量
66470
原文標(biāo)題:Vivado之實(shí)現(xiàn)(布局布線(xiàn))流程淺析
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論