0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度解讀Vivado之Synthesis

FPGA之家 ? 來(lái)源:FPGA之家 ? 作者:FPGA之家 ? 2021-06-01 11:20 ? 次閱讀

FPGA設(shè)計(jì)里,設(shè)計(jì)仿真完成RTL代碼設(shè)計(jì)后便是交給設(shè)計(jì)套件進(jìn)行綜合及布局布線。在綜合過(guò)程里,Vivado里提供的參數(shù)選項(xiàng)有點(diǎn)兒多,今天閑暇抽空梳理下。

-flatten_hierarchy

該參數(shù)提供三個(gè)可選項(xiàng):

full:將我們整個(gè)設(shè)計(jì)層次打平,只保留頂層設(shè)計(jì),對(duì)模塊間進(jìn)行邊界優(yōu)化(可以理解為我們整個(gè)設(shè)計(jì)被塞到一個(gè)Module里)。

none:完全保留設(shè)計(jì)原始層次,不執(zhí)行任何邊界優(yōu)化。該選項(xiàng)工具進(jìn)行的優(yōu)化最少,消耗的資源最多,層次保留最完整。

rebuild:在進(jìn)行綜合時(shí)將原始設(shè)計(jì)打平,執(zhí)行邊界優(yōu)化,但將網(wǎng)表文件按照原始設(shè)計(jì)層次顯示。

對(duì)于在Verilog中使用的“keep_hierarchy”屬性優(yōu)先級(jí)高于flatten_hierarchy。

gated_clock_conversion

ASIC中門控時(shí)鐘用的比較多,而在FPGA設(shè)計(jì)中,門控時(shí)鐘并不是專用時(shí)鐘模塊生成,而且Vivado并不會(huì)對(duì)門控時(shí)鐘插入BUFG,在設(shè)計(jì)中應(yīng)極力避免。該選項(xiàng)可將門控時(shí)鐘信號(hào)轉(zhuǎn)換為使能信號(hào),從而避免門控時(shí)鐘的使用。該選項(xiàng)存在三個(gè)參數(shù):

off:不允許門控時(shí)鐘轉(zhuǎn)換。

on:允許門控時(shí)鐘轉(zhuǎn)換,Verilog里添加“gated_clocked”的門控時(shí)鐘將會(huì)自動(dòng)轉(zhuǎn)換。

auto:Verilog中添加“gated_clocked”的門控時(shí)鐘或者工具檢測(cè)到門控時(shí)鐘而且有相應(yīng)可用的時(shí)鐘約束選項(xiàng)時(shí)將進(jìn)行門控時(shí)鐘轉(zhuǎn)換。

當(dāng)門控時(shí)鐘負(fù)載較少且時(shí)鐘頻率并不高時(shí)可以適當(dāng)使用門控時(shí)鐘,但建議手動(dòng)插入BUFG。

-fanout_limit

該選項(xiàng)用于設(shè)定信號(hào)所能承受的最大負(fù)載。該選項(xiàng)對(duì)于設(shè)計(jì)中的控制信號(hào),如置位,復(fù)位和使能信號(hào)是無(wú)效的。

-fanout_limit只是一個(gè)宏觀指導(dǎo)原則,并非強(qiáng)制命令。如果需要很明確的對(duì)某個(gè)信號(hào)降扇出,應(yīng)使用MAX_FANOUT而不是-fanout_limit。

MAX_FANOUT可應(yīng)用于RTL代碼中,也可應(yīng)用于XDC中,優(yōu)先級(jí)高于-fanout_limit。當(dāng)需要控制扇出的寄存器與負(fù)載不在同一層次時(shí),flatten_hierarchy不要設(shè)置為none模式,否則將會(huì)無(wú)法生效。

-directive

Vivado提供的一些優(yōu)化策略:

RuntimeOptimized:執(zhí)行較少的時(shí)序優(yōu)化及RTL優(yōu)化以降低運(yùn)行時(shí)間。

AreaOptimized_high:執(zhí)行常規(guī)面積優(yōu)化,包括強(qiáng)制執(zhí)行三進(jìn)制加法器,在比較器中使用新閾值以使用進(jìn)位鏈以及實(shí)現(xiàn)面積優(yōu)化的多路復(fù)用器。

AreaOptimized_medium:執(zhí)行常規(guī)面積優(yōu)化,包括更改控制集優(yōu)化的閾值,強(qiáng)制執(zhí)行三進(jìn)制加法器,將推理的乘法器閾值降低到DSP模塊,將移位寄存器移入BRAM,在比較器中使用較低閾值以使用進(jìn)位鏈,以及進(jìn)行區(qū)域優(yōu)化的MUX操作。

AlternateRoutability:通過(guò)算法提升路由能力(使用更少的MUXF和CARRYs)。

AreaMapLargeShiftRegToBRAM:檢測(cè)大型移位寄存器,并使用專用的Block RAM實(shí)現(xiàn)它們。

AreaMultThresholdDSP:減少DSP的推斷及使用。

FewerCarryChains:通過(guò)LUT使用降低進(jìn)位鏈的使用。

-retiming

在不改變?cè)荚O(shè)計(jì)及功能時(shí)通過(guò)調(diào)整LUT和寄存器位置來(lái)進(jìn)行時(shí)序優(yōu)化調(diào)整。

-fsm_extraction

設(shè)定狀態(tài)機(jī)編碼方式,默認(rèn)為auto,此時(shí)Vivado會(huì)自行決定最佳的編碼方式。

-keep_equivalent_registers

當(dāng)勾選時(shí),對(duì)于輸入的同源寄存器,綜合時(shí)將會(huì)被合成一個(gè)。如下例所示:

always@(posedge clk)begin rx《=a; ry《=a; r《=b; resa《=rx & r; resb《=ry^y;end

當(dāng)該選項(xiàng)不勾選時(shí),rx,ry將會(huì)被合并成一個(gè)寄存器。

-resource_shring

對(duì)算數(shù)運(yùn)算符通過(guò)資源共享優(yōu)化設(shè)計(jì)資源,有三個(gè)可選項(xiàng):auto、on、off。設(shè)置為auto時(shí),工具會(huì)根據(jù)時(shí)序要求進(jìn)行調(diào)整。

-control_set_opt_threshold

觸發(fā)器的控制集由時(shí)鐘信號(hào),復(fù)位/置位吸納后和使能信號(hào)構(gòu)成,通常只有{clk,set/rst,ce}均相同的觸發(fā)器才可以被放在一個(gè)SLICE中。該選項(xiàng)將時(shí)鐘使能優(yōu)化的閾值設(shè)置為較少的控制集。默認(rèn)值為自動(dòng),這意味著該工具將根據(jù)目標(biāo)設(shè)備選擇一個(gè)值。支持任何正整數(shù)值。

給定值是工具將控制集移入寄存器的D邏輯所需的扇出數(shù)量。如果扇出大于該值,則該工具嘗試使該信號(hào)驅(qū)動(dòng)該寄存器上的control_set_pin。

-no_lc

使能該選項(xiàng)時(shí),工具將不會(huì)嘗試LUT的整合。雖然LUT整合能夠降低LUT的使用,但也有可能導(dǎo)致布局布線擁塞。當(dāng)“LUT as Logic”超過(guò)15%時(shí),建議勾選該選項(xiàng)。

-no_slrextract -shreg_min_size

移位寄存器可以被綜合成LUT實(shí)現(xiàn)。-shreg_min_size用于管理移位寄存器是否映射為L(zhǎng)UT,默認(rèn)值為3.當(dāng)移位寄存器的深度不超過(guò)-shereg_min_size時(shí),最終采用移位寄存器實(shí)現(xiàn),否則采用FF+LUT+FF形式實(shí)現(xiàn)。

-no_slrextract用于阻止工具將移位寄存器映射為L(zhǎng)UT。優(yōu)先級(jí)高于-shreg_min_size。

其他選項(xiàng)我們基本就用不上了,若需使用可參照ug901手冊(cè)。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 移位寄存器
    +關(guān)注

    關(guān)注

    2

    文章

    258

    瀏覽量

    22212
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1995

    瀏覽量

    61012
  • LUT
    LUT
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    12475
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4723

    瀏覽量

    68237
  • xdc
    xdc
    +關(guān)注

    關(guān)注

    1

    文章

    24

    瀏覽量

    5913

原文標(biāo)題:亂花漸欲迷人眼—Vivado之Synthesis

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    每次Vivado編譯的結(jié)果都一樣嗎

    很多FPGA工程師都有這種困惑,Vivado每次編譯的結(jié)果都一樣嗎? 在AMD官網(wǎng)上,有這樣一個(gè)帖子: Are Vivado results repeatable for identical
    的頭像 發(fā)表于 11-11 11:23 ?56次閱讀
    每次<b class='flag-5'>Vivado</b>編譯的結(jié)果都一樣嗎

    Vivado使用小技巧

    有時(shí)我們對(duì)時(shí)序約束進(jìn)行了一些調(diào)整,希望能夠快速看到對(duì)應(yīng)的時(shí)序報(bào)告,而又不希望重新布局布線。這時(shí),我們可以打開(kāi)布線后的dcp,直接在Vivado Tcl Console里輸入更新后的時(shí)序約束。如果調(diào)整
    的頭像 發(fā)表于 10-24 15:08 ?171次閱讀
    <b class='flag-5'>Vivado</b>使用小技巧

    Vivado 2024.1版本的新特性(2)

    從綜合角度看,Vivado 2024.1對(duì)SystemVerilog和VHDL-2019的一些特性開(kāi)始支持。先看SystemVerilog。
    的頭像 發(fā)表于 09-18 10:34 ?541次閱讀
    <b class='flag-5'>Vivado</b> 2024.1版本的新特性(2)

    Vivado 2024.1版本的新特性(1)

    Vivado 2024.1已正式發(fā)布,今天我們就來(lái)看看新版本帶來(lái)了哪些新特性。
    的頭像 發(fā)表于 09-18 10:30 ?782次閱讀
    <b class='flag-5'>Vivado</b> 2024.1版本的新特性(1)

    解讀 MEMS 可編程 LVCMOS 振蕩器 SiT1602 系列:精準(zhǔn)頻率的創(chuàng)新

    解讀 MEMS 可編程 LVCMOS 振蕩器 SiT1602 系列:精準(zhǔn)頻率的創(chuàng)新
    的頭像 發(fā)表于 08-09 15:39 ?282次閱讀
    <b class='flag-5'>解讀</b> MEMS 可編程 LVCMOS 振蕩器 SiT1602 系列:精準(zhǔn)頻率的創(chuàng)新<b class='flag-5'>之</b>選

    解讀 MEMS 可編程 LVCMOS 振蕩器 SiT8008 系列:精準(zhǔn)與靈活的時(shí)脈

    解讀 MEMS 可編程 LVCMOS 振蕩器 SiT8008 系列:精準(zhǔn)與靈活的時(shí)脈
    的頭像 發(fā)表于 08-09 10:29 ?264次閱讀
    <b class='flag-5'>解讀</b> MEMS 可編程 LVCMOS 振蕩器 SiT8008 系列:精準(zhǔn)與靈活的時(shí)脈<b class='flag-5'>之</b>選

    深度解讀 VCXO VG7050CDN:可變晶體振蕩器的卓越

    深度解讀 VCXO VG7050CDN:可變晶體振蕩器的卓越
    的頭像 發(fā)表于 07-24 10:58 ?312次閱讀

    深度解讀廣汽全固態(tài)電池技術(shù)

    4月12日,在“科技視界”廣汽科技日活動(dòng)上,廣汽集團(tuán)發(fā)布了被稱為“全球動(dòng)力電池領(lǐng)域競(jìng)爭(zhēng)的技術(shù)高地”的全固態(tài)動(dòng)力電池技術(shù),廣汽埃安電池研發(fā)部負(fù)責(zé)人李進(jìn)對(duì)此項(xiàng)技術(shù)進(jìn)行了解讀。
    的頭像 發(fā)表于 04-15 09:15 ?492次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>解讀</b>廣汽全固態(tài)電池技術(shù)

    Vivado Synthesis中怎么使用SystemVerilog接口連接邏輯呢?

    SystemVerilog 接口的開(kāi)發(fā)旨在讓設(shè)計(jì)中層級(jí)之間的連接變得更加輕松容易。 您可以把這類接口看作是多個(gè)模塊共有的引腳集合。
    的頭像 發(fā)表于 03-04 15:25 ?860次閱讀
    在<b class='flag-5'>Vivado</b> <b class='flag-5'>Synthesis</b>中怎么使用SystemVerilog接口連接邏輯呢?

    OneFlow Softmax算子源碼解讀BlockSoftmax

    寫(xiě)在前面:筆者這段時(shí)間工作太忙,身心俱疲,博客停更了一段時(shí)間,現(xiàn)在重新?lián)炱饋?lái)。本文主要解讀 OneFlow 框架的第二種 Softmax 源碼實(shí)現(xiàn)細(xì)節(jié),即 block 級(jí)別的 Softmax。
    的頭像 發(fā)表于 01-08 09:26 ?642次閱讀
    OneFlow Softmax算子源碼<b class='flag-5'>解讀</b><b class='flag-5'>之</b>BlockSoftmax

    如何禁止vivado自動(dòng)生成 bufg

    Vivado中禁止自動(dòng)生成BUFG(Buffered Clock Gate)可以通過(guò)以下步驟實(shí)現(xiàn)。 首先,讓我們簡(jiǎn)要了解一下什么是BUFG。BUFG是一個(gè)時(shí)鐘緩沖器,用于緩沖輸入時(shí)鐘信號(hào),使其更穩(wěn)
    的頭像 發(fā)表于 01-05 14:31 ?1851次閱讀

    Vivado時(shí)序問(wèn)題分析

    有些時(shí)候在寫(xiě)完代碼之后呢,Vivado時(shí)序報(bào)紅,Timing一欄有很多時(shí)序問(wèn)題。
    的頭像 發(fā)表于 01-05 10:18 ?1781次閱讀

    VIVADO安裝問(wèn)題解決

    vivado出現(xiàn)安裝問(wèn)題剛開(kāi)始還以為是安裝路徑包含中文空格了,重裝的注意了一下,發(fā)現(xiàn)還是這個(gè)問(wèn)題。。。。后來(lái)又一頓操作猛如虎,終于發(fā)現(xiàn)了問(wèn)題。出這個(gè)問(wèn)題的原因是vivado壓縮包解壓的路徑包含中文了把解壓文件放到不含中文的地方,再重新安裝,安裝路徑也不能含中文。然后。。。
    發(fā)表于 12-22 10:56 ?0次下載

    大咖解讀SafeVideo

    ——SafeVideo,究竟有什么不一樣的地方呢?一起來(lái)看看吧~ 大咖解讀 Q A 如何通過(guò)軟件技術(shù)來(lái)應(yīng)對(duì)硬盤(pán)故障? 由于硬盤(pán)損壞不可避免,尤其是硬盤(pán)的壞道,所以業(yè)界通常都是用RAID技術(shù)來(lái)應(yīng)對(duì)。RAID是數(shù)據(jù)塊經(jīng)過(guò)XOR得到校驗(yàn)塊,從而提供數(shù)
    的頭像 發(fā)表于 12-19 16:20 ?526次閱讀
    大咖<b class='flag-5'>解讀</b><b class='flag-5'>之</b>SafeVideo

    VIVADO軟件使用問(wèn)題總結(jié)

    【關(guān)鍵問(wèn)題?。。?!重要?。?!】VIVADO會(huì)在MESSAGE窗口出提示很多錯(cuò)誤和警告信息!
    的頭像 發(fā)表于 12-15 10:11 ?1725次閱讀
    <b class='flag-5'>VIVADO</b>軟件使用問(wèn)題總結(jié)