在FPGA設(shè)計里,設(shè)計仿真完成RTL代碼設(shè)計后便是交給設(shè)計套件進(jìn)行綜合及布局布線。在綜合過程里,Vivado里提供的參數(shù)選項有點兒多,今天閑暇抽空梳理下。
-flatten_hierarchy
該參數(shù)提供三個可選項:
full:將我們整個設(shè)計層次打平,只保留頂層設(shè)計,對模塊間進(jìn)行邊界優(yōu)化(可以理解為我們整個設(shè)計被塞到一個Module里)。
none:完全保留設(shè)計原始層次,不執(zhí)行任何邊界優(yōu)化。該選項工具進(jìn)行的優(yōu)化最少,消耗的資源最多,層次保留最完整。
rebuild:在進(jìn)行綜合時將原始設(shè)計打平,執(zhí)行邊界優(yōu)化,但將網(wǎng)表文件按照原始設(shè)計層次顯示。
對于在Verilog中使用的“keep_hierarchy”屬性優(yōu)先級高于flatten_hierarchy。
gated_clock_conversion
在ASIC中門控時鐘用的比較多,而在FPGA設(shè)計中,門控時鐘并不是專用時鐘模塊生成,而且Vivado并不會對門控時鐘插入BUFG,在設(shè)計中應(yīng)極力避免。該選項可將門控時鐘信號轉(zhuǎn)換為使能信號,從而避免門控時鐘的使用。該選項存在三個參數(shù):
off:不允許門控時鐘轉(zhuǎn)換。
on:允許門控時鐘轉(zhuǎn)換,Verilog里添加“gated_clocked”的門控時鐘將會自動轉(zhuǎn)換。
auto:Verilog中添加“gated_clocked”的門控時鐘或者工具檢測到門控時鐘而且有相應(yīng)可用的時鐘約束選項時將進(jìn)行門控時鐘轉(zhuǎn)換。
當(dāng)門控時鐘負(fù)載較少且時鐘頻率并不高時可以適當(dāng)使用門控時鐘,但建議手動插入BUFG。
-fanout_limit
該選項用于設(shè)定信號所能承受的最大負(fù)載。該選項對于設(shè)計中的控制信號,如置位,復(fù)位和使能信號是無效的。
-fanout_limit只是一個宏觀指導(dǎo)原則,并非強制命令。如果需要很明確的對某個信號降扇出,應(yīng)使用MAX_FANOUT而不是-fanout_limit。
MAX_FANOUT可應(yīng)用于RTL代碼中,也可應(yīng)用于XDC中,優(yōu)先級高于-fanout_limit。當(dāng)需要控制扇出的寄存器與負(fù)載不在同一層次時,flatten_hierarchy不要設(shè)置為none模式,否則將會無法生效。
-directive
Vivado提供的一些優(yōu)化策略:
RuntimeOptimized:執(zhí)行較少的時序優(yōu)化及RTL優(yōu)化以降低運行時間。
AreaOptimized_high:執(zhí)行常規(guī)面積優(yōu)化,包括強制執(zhí)行三進(jìn)制加法器,在比較器中使用新閾值以使用進(jìn)位鏈以及實現(xiàn)面積優(yōu)化的多路復(fù)用器。
AreaOptimized_medium:執(zhí)行常規(guī)面積優(yōu)化,包括更改控制集優(yōu)化的閾值,強制執(zhí)行三進(jìn)制加法器,將推理的乘法器閾值降低到DSP模塊,將移位寄存器移入BRAM,在比較器中使用較低閾值以使用進(jìn)位鏈,以及進(jìn)行區(qū)域優(yōu)化的MUX操作。
AlternateRoutability:通過算法提升路由能力(使用更少的MUXF和CARRYs)。
AreaMapLargeShiftRegToBRAM:檢測大型移位寄存器,并使用專用的Block RAM實現(xiàn)它們。
AreaMultThresholdDSP:減少DSP的推斷及使用。
FewerCarryChains:通過LUT使用降低進(jìn)位鏈的使用。
-retiming
在不改變原始設(shè)計及功能時通過調(diào)整LUT和寄存器位置來進(jìn)行時序優(yōu)化調(diào)整。
-fsm_extraction
設(shè)定狀態(tài)機編碼方式,默認(rèn)為auto,此時Vivado會自行決定最佳的編碼方式。
-keep_equivalent_registers
當(dāng)勾選時,對于輸入的同源寄存器,綜合時將會被合成一個。如下例所示:
always@(posedge clk)begin rx《=a; ry《=a; r《=b; resa《=rx & r; resb《=ry^y;end
當(dāng)該選項不勾選時,rx,ry將會被合并成一個寄存器。
-resource_shring
對算數(shù)運算符通過資源共享優(yōu)化設(shè)計資源,有三個可選項:auto、on、off。設(shè)置為auto時,工具會根據(jù)時序要求進(jìn)行調(diào)整。
-control_set_opt_threshold
觸發(fā)器的控制集由時鐘信號,復(fù)位/置位吸納后和使能信號構(gòu)成,通常只有{clk,set/rst,ce}均相同的觸發(fā)器才可以被放在一個SLICE中。該選項將時鐘使能優(yōu)化的閾值設(shè)置為較少的控制集。默認(rèn)值為自動,這意味著該工具將根據(jù)目標(biāo)設(shè)備選擇一個值。支持任何正整數(shù)值。
給定值是工具將控制集移入寄存器的D邏輯所需的扇出數(shù)量。如果扇出大于該值,則該工具嘗試使該信號驅(qū)動該寄存器上的control_set_pin。
-no_lc
使能該選項時,工具將不會嘗試LUT的整合。雖然LUT整合能夠降低LUT的使用,但也有可能導(dǎo)致布局布線擁塞。當(dāng)“LUT as Logic”超過15%時,建議勾選該選項。
-no_slrextract -shreg_min_size
移位寄存器可以被綜合成LUT實現(xiàn)。-shreg_min_size用于管理移位寄存器是否映射為LUT,默認(rèn)值為3.當(dāng)移位寄存器的深度不超過-shereg_min_size時,最終采用移位寄存器實現(xiàn),否則采用FF+LUT+FF形式實現(xiàn)。
-no_slrextract用于阻止工具將移位寄存器映射為LUT。優(yōu)先級高于-shreg_min_size。
其他選項我們基本就用不上了,若需使用可參照ug901手冊。
編輯:jq
-
移位寄存器
+關(guān)注
關(guān)注
3文章
268瀏覽量
22350 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2017瀏覽量
61378 -
LUT
+關(guān)注
關(guān)注
0文章
50瀏覽量
12586 -
代碼
+關(guān)注
關(guān)注
30文章
4834瀏覽量
69114 -
xdc
+關(guān)注
關(guān)注
1文章
24瀏覽量
5947
原文標(biāo)題:亂花漸欲迷人眼—Vivado之Synthesis
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
Vivado Design Suite用戶指南: 設(shè)計分析與收斂技巧
![<b class='flag-5'>Vivado</b> Design Suite用戶指南: 設(shè)計分析與收斂技巧](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Vivado Design Suite用戶指南:邏輯仿真
![<b class='flag-5'>Vivado</b> Design Suite用戶指南:邏輯仿真](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Xilinx_Vivado_SDK的安裝教程
![Xilinx_<b class='flag-5'>Vivado</b>_SDK的安裝教程](https://file1.elecfans.com/web2/M00/0C/A0/wKgaomc3-3OAI9TSAAAeI4NiXA0715.png)
每次Vivado編譯的結(jié)果都一樣嗎
![每次<b class='flag-5'>Vivado</b>編譯的結(jié)果都一樣嗎](https://file1.elecfans.com/web2/M00/0C/31/wKgaomcxeQ-AAfSbAAAMvmYJJn8901.png)
使用Vivado通過AXI Quad SPI實現(xiàn)XIP功能
![使用<b class='flag-5'>Vivado</b>通過AXI Quad SPI實現(xiàn)XIP功能](https://file1.elecfans.com/web1/M00/F3/E2/wKgZoWcggI2Ady3sAAAcY8ufVo8103.png)
Vivado使用小技巧
![<b class='flag-5'>Vivado</b>使用小技巧](https://file1.elecfans.com/web2/M00/0B/08/wKgaomcZ8y6AWZ83AAAEKGeX3w0243.jpg)
Vivado編輯器亂碼問題
![<b class='flag-5'>Vivado</b>編輯器亂碼問題](https://file1.elecfans.com/web1/M00/F2/F1/wKgZoWcONPGAGIULAAME7s40W_I762.jpg)
解讀 MEMS 可編程 LVCMOS 振蕩器 SiT1602 系列:精準(zhǔn)頻率的創(chuàng)新之選
![<b class='flag-5'>解讀</b> MEMS 可編程 LVCMOS 振蕩器 SiT1602 系列:精準(zhǔn)頻率的創(chuàng)新<b class='flag-5'>之</b>選](https://file1.elecfans.com/web2/M00/01/81/wKgZoma1xLuAO-1dAACX-A3fSow832.png)
解讀 MEMS 可編程 LVCMOS 振蕩器 SiT8008 系列:精準(zhǔn)與靈活的時脈之選
![<b class='flag-5'>解讀</b> MEMS 可編程 LVCMOS 振蕩器 SiT8008 系列:精準(zhǔn)與靈活的時脈<b class='flag-5'>之</b>選](https://file1.elecfans.com/web2/M00/01/6E/wKgZoma1fneAXbDIAACUi0da8_I125.png)
深度解讀廣汽全固態(tài)電池技術(shù)
![<b class='flag-5'>深度</b><b class='flag-5'>解讀</b>廣汽全固態(tài)電池技術(shù)](https://file1.elecfans.com/web2/M00/C9/5D/wKgaomYcf_-AK_K_AAAKxLiV-Jw221.jpg)
在Vivado Synthesis中怎么使用SystemVerilog接口連接邏輯呢?
![在<b class='flag-5'>Vivado</b> <b class='flag-5'>Synthesis</b>中怎么使用SystemVerilog接口連接邏輯呢?](https://file1.elecfans.com/web2/M00/C3/77/wKgaomXld-OAUMfsAAAWrEAtwqU778.png)
評論