在實(shí)現(xiàn)階段,Vivado會(huì)把最關(guān)鍵的路徑放在首位,這就是為什么在布局或布線之后可能出現(xiàn)邏輯級(jí)數(shù)低的路徑時(shí)序反而未能收斂。因此,在綜合或opt_design之后就要確認(rèn)并優(yōu)化那些邏輯級(jí)數(shù)較高的路徑。這些路徑可有效降低工具在布局布線階段為達(dá)到時(shí)序收斂而迭代的次數(shù)。同時(shí),這類路徑往往邏輯延遲較大。因此,降低這類路徑的邏輯延遲對(duì)于時(shí)序收斂將大有裨益。
降低邏輯延遲的流程如下圖所示。不難看出,這一工作應(yīng)在綜合或者opte_design階段完成。
在這個(gè)流程中,我們需要關(guān)注兩類路徑。一類路徑是由純粹的CLB中的資源(FF,LUT,Carry,MUXF)構(gòu)成的路徑;另一類則是Block(DSP,BRAM,URAM,GT)之間的路徑。
無論是哪種路徑,首先要通過命令report_design_analysis進(jìn)行定位,具體命令格式如下圖所示(也可在Vivado菜單Reports -> Report Design Analysis下執(zhí)行)。
該命令可分析當(dāng)前設(shè)計(jì)的邏輯級(jí)數(shù)分布情況,如下圖所示,從而便于找到邏輯級(jí)數(shù)較高的路徑。
點(diǎn)擊邏輯級(jí)數(shù)分布報(bào)告中的數(shù)字,例如圖中的19,可生成相應(yīng)的時(shí)序報(bào)告,從而確定屬于哪類路徑,并進(jìn)一步觀察路徑特征。
對(duì)于級(jí)聯(lián)的小的LUT
如果路徑中包含多個(gè)級(jí)聯(lián)的小的LUT,檢查一下這些LUT是否是因?yàn)樵O(shè)計(jì)層次、綜合屬性(KEEP,KEEP_HIERARCHY,DONT_TOUCH,MARK_DEBUG)等導(dǎo)致無法合并。
對(duì)于路徑中存在單個(gè)的Carry
如果路徑中有單個(gè)的Carry(不是級(jí)聯(lián)的),檢查一下這個(gè)Carry是否限制了工具對(duì)LUT的優(yōu)化,從而造成布局不是最優(yōu)的。如果是,可嘗試在綜合時(shí)使用FewerCarryChains策略或者在opt_design階段對(duì)這個(gè)Carry設(shè)置CARRY_REMAP屬性(具體使用方法可查看ug904)。
對(duì)于終點(diǎn)是SRL的路徑
如果路徑的終點(diǎn)是SRL,可嘗試將SRL變?yōu)镕F+SRL+FF或SRL+FF。這可在綜合時(shí)通過使用SRL_STYLE綜合屬性實(shí)現(xiàn),也可在opt_design階段通過使用SRL_STAGES_TO_INPUT或SRL_STAGES_TO_OUTPUT實(shí)現(xiàn)。
對(duì)于終點(diǎn)是觸發(fā)器控制端的路徑
如果路徑的終點(diǎn)是由LUT輸出連接到觸發(fā)器的同步使能端或同步復(fù)位端,可嘗試將這類邏輯搬移到觸發(fā)器的數(shù)據(jù)端,這可在綜合時(shí)通過設(shè)置EXTRACT_ENABLE或EXTRACT_RESET綜合屬性實(shí)現(xiàn),或者在opt_design階段通過設(shè)置CONTROL_SET_REMAP屬性(具體使用方法可查看ug904)實(shí)現(xiàn)。
使用Retiming
此外,還可以在綜合時(shí)對(duì)全局使用retiming(選中-retiming選項(xiàng))或者采用模塊化綜合方式,對(duì)某個(gè)模塊使用retiming。
對(duì)于Block到Block的路徑
對(duì)于Block到Block的路徑,最好將其優(yōu)化為Block + FF + Block。這里的FF可以是Block內(nèi)部自帶的觸發(fā)器(如果有的話),也可以是Slice中的觸發(fā)器。
如果數(shù)據(jù)由Block RAM輸出,可采用如下命令觀察使能Block RAM自帶的寄存器之后是否對(duì)時(shí)序有所改善。這里要注意,如下命令用于評(píng)估,因?yàn)橐言斐稍O(shè)計(jì)功能改變,所有不要在此基礎(chǔ)上生成bit文件。
set_property –dict {DOA_REG 1 DOB_REG 1} [get_cellsxx/ramb18_inst]
該命令等效于
set_property DOA_REG 1
[get_cells xx/ramb18_inst]
set_property DOB_REG 1
[get_cells xx/ramb18_inst]
-
邏輯
+關(guān)注
關(guān)注
2文章
833瀏覽量
29484 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61190 -
ug1292
+關(guān)注
關(guān)注
0文章
3瀏覽量
2325
原文標(biāo)題:深度解析ug1292(5)
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論