色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Vivado設計約束功能概述

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2022-06-30 11:27 ? 次閱讀

設計約束概述

設計約束就是定義編譯過程中必須滿足的需求,只有這樣才能保證在板子上工作時功能正確;但不是全部約束在所有過程中都會使用,比如物理約束只用在布局和布線過程中;Vivado工具的綜合和實現算法是時序驅動型的,因此必須創建合適的時序約束;我們必須根據應用需求選擇合理的約束,過度約束或約束不足都會造成問題;

老版的ISE開發工具使用UCF(User Constraints File)文件進行約束;新的Vivado開發工具使用XDC(Xilinx Design Constraints)進行約束;在描述設計約束方面,標準SDC(Synopsys Design Constraints)格式已經發展超過了20年,且應用最為廣泛,XDC約束正是基于SDC格式,再加入Xilinx的一些物理約束;

XDC約束可以用一個或多個XDC文件,也可以用Tcl腳本實現;XDC文件或Tcl腳本都要加入到工程的某個約束集(set)中;雖然一個約束集可以同時添加兩種類型約束,但是Tcl腳本不受Vivado工具管理,因此無法修改其中的約束;

管理約束

Vivado支持使用一個或多個約束文件,對于大型設計來說,僅使用一個約束文件往往不便于維護;最好的做法是將時序約束和物理約束分別保存到不同的文件中,或者某些特定模塊使用一個單獨的約束文件 ;

約束文件(XDC文件或Tcl腳本)需要添加到約束集中,一個工程可以包含多個約束集,一個文件也可以添加到多個約束集中;下圖顯示了一個工程中的約束集,該約束集包括兩個約束文件,分別為物理約束和時序約束:

ece5a89a-f7a9-11ec-ba43-dac502259ad0.png

另外注意,生成IP核時,IP核的約束文件不會顯示在上圖列表中,只會顯示在IP Sources窗口中;

默認情況下,所有的XDC約束文件會同時應用于綜合和實現過程中。在XDC文件的屬性窗口中修改如下圖中選項,可以選擇XDC文件的使用階段,對應的屬性為USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION:

ed016dc8-f7a9-11ec-ba43-dac502259ad0.png

但是DONT_TOUCH屬性不受上述設置的限制,比如在綜合XDC中使用了DONT_TOUCH屬性,即使Used In沒有選中Implementation,該屬性仍會傳遞到實現過程中 ;

排列約束的順序

XDC約束會遵循一套優先級規則,按順序應用于設計中;當多個物理約束之間產生矛盾時,順序靠后的約束會覆蓋之前的約束;比如一個I/O端口前后綁定了兩個管腳位置,則順序上靠后的約束會起作用;推薦的約束順序如下:

時序聲明部分:主時鐘、虛擬時鐘、生成的時鐘、時鐘組、總線斜率約束、輸入與輸出延遲約束。

時序異常部分:虛假路徑、最大延遲/最小延遲、多時鐘路徑、個例分析、屏蔽的時序。

物理約束部分:可以放在時序約束之前或之后,最好存儲在一個單獨的約束文件中

約束應該以時鐘定義開始,因為時鐘必須在被其它約束引用之前定義好;如果在定義之前便引用了時鐘,會導致錯誤發生,該約束將被忽略掉;約束文件的順序相當重要,設計者應該確保每一個文件中的約束不依賴于其它文件中的約束;如果這種情況發生,應該考慮合并兩個文件,或者按照更合理地方式重新組織約束文件;

所有新的約束都會保存到標記為target的XDC文件的末尾;如果約束集中有多個XDC文件,大多數情況下target文件不是最后一個XDC文件,這就導致保存到磁盤上的約束順序和內存中的約束順序并不相同(內存中執行相當于在最后插入一個新約束,而存儲到磁盤中確是在中間插入了一個新約束),因此設計者需要驗證最終存儲的約束順序可以正確工作;

一般來說,在不包含IP核的工程中,所有的約束被放在一個約束集中,約束的排列順序表明了約束的讀取順序,排在最前面的約束最先被讀取,可以通過上下移動約束文件來改變約束讀取的順序,如下圖所示:

ed1f8718-f7a9-11ec-ba43-dac502259ad0.png

許多IP核會自帶一個或多個XDC文件,如下圖所示:

ed39b318-f7a9-11ec-ba43-dac502259ad0.png

默認情況下,IP核的XDC文件在用戶編寫的XDC文件之前讀取,在該情況下允許IP核創建一個參考時鐘,同時也允許用戶XDC文件覆蓋IP核的物理約束;但是也有例外,如IP核需要用到用戶定義的時鐘時,此時IP核的XDC文件在用戶XDC文件之后讀??!

每個約束文件都有PROCESSING_ORDER屬性,屬性值可以是:EARLY,必須首先被讀?。籒ORMAL,默認;LATE:必須最后被讀??;

ed593d1e-f7a9-11ec-ba43-dac502259ad0.png

注意IP核的XDC文件只會是early或者late,而不會是normal!對于包含依賴時鐘的IP核,XDC文件的讀取順序屬性設置為late;對于不包含依賴時鐘的IP核,XDC文件的讀取順序設置為early;同時,對于多個IP核的XDC文件,如果他們有相同的PROCESSING_ORDER屬性,則讀取順序由IP核的導入順序決定,一般無法更改!

下面對XDC文件的讀取順序做一個總結,從上到下的讀取順序:

1.用戶XDC文件,標記為early;

2.IP核XDC文件,標記為early;

3.普通的用戶XDC文件(normal);

4.IP核XDC文件,標記為late(對用戶時鐘存在依賴);

5.用戶XDC文件,標記為late;

屬性值為LATE的IP核XDC文件名稱為_clocks.xdc;在Tcl控制臺中使用report_compile_order -constraints命令可以報告所有約束文件的狀態,其中就包括PROCESSING_ORDER屬性;

約束方法

完成約束有兩種方法:(1).直接編輯XDC文件;(2).打開某一階段的設計,Elaborated設計、綜合后設計或實現后設計,直接對某對象進行約束;采用第2種方法,在編輯約束時,Tcl控制臺中會顯示等價的XDC命令,該命令是存儲在內存中的,在綜合或實現前,必須點擊Save Constraints保存約束;如果是新的約束,則會添加到標記為target的約束文件中;如果是對已存在的約束進行修改,則會修改XDC文件中原來位置的命令;

上述兩種約束方法最好不要同時使用,否則容易混淆導致約束沒有起作用;如果需要在兩種約束方法之間切換,要確保保存了當前約束,或者重新導入一下設計,下圖給出了約束的流程圖:

ed72fed4-f7a9-11ec-ba43-dac502259ad0.png

管腳賦值與平面規劃

本節介紹兩種使用GUI完成約束的方法。第一種是創建與編輯頂層端口位置,即通常所說的管腳賦值(Pin Assignment);打開某一階段設計后,將視圖切換為“I/O Planning”,如下圖:

ed98c9b6-f7a9-11ec-ba43-dac502259ad0.png

切換到該視圖后會自動打開如下4個窗口:

Device:編輯端口在器件平面規劃圖中的位置;

Package:編輯端口在器件封裝中的位置;

I/O Ports:可以選擇一個端口,拖動到Package或Device窗口中的某個位置,也可以觀察每個端口的各個屬性;

Package Pins:觀察每個I/O Bank的資源利用率;

另一種是平面規劃(Floorplanning),主要是創建和編輯Pblock來限制某些對象的布局范圍;打開某一階段設計后,將視圖切換為“Floorplanning”,如上圖;切換到該視圖后會自動打開如下3個窗口:

Netlist:選擇賦值到某個Pblock的單元對象;

Physical Constraints:觀察設計中的Pblock和各自的屬性;

Device:創建或編輯Pblock在器件中的形狀和位置;

在Netlist窗口中選擇某些單元,將其拖動到Device窗口的目標位置中,即可將單元位置約束到某一特定的BEL或SITE。這兩個部分都可以稱作“物理約束”,另外還有“時序約束”,需要借助時序約束向導;

XDC模板

vivado為verilog和XDC文件提供了大量的語言模板,如下圖所示:

edab4ffa-f7a9-11ec-ba43-dac502259ad0.png

XDC模板主要分為三大類,如下圖所示:時序約束;物理約束;配置

edb63924-f7a9-11ec-ba43-dac502259ad0.png

創建綜合約束

Vivado綜合引擎將設計的RTL描述轉換為一個工藝映射網表,在這個階段可以使用約束來指導綜合引擎解決設計需求。涉及到的約束包括4個方面:

RTL屬性:綜合屬性在綜合篇中有詳細介紹,這些約束通常與某些邏輯部分的映射方式直接相關,比如保留特定的寄存器網絡防止被優化、控制最終網表中的設計層次等等;

時序約束:可以在該階段起作用的時序約束有create_clock、create_generated_clock、set_input_delay、set_output_delay、set_clock_groups、set_false_path、set_max_delay和set_multicyclye_path;

物理與配置約束:這部分約束不會作用于該階段,因此會被綜合引擎忽略;

Elaborated設計約束:在綜合階段,網絡延遲模型還不精確,因此主要目標是得到一個滿足時序或時序違背程度較小的綜合網表,可以對Elaborated設計分析RTL設計得到的對象進行約束;可以利用Tcl控制臺來測試想要執行的XDC命令是否有語法錯誤,再保存到XDC文件中;

一些RTL名稱在Elaborated設計中會被修改或刪除,因此不能直接使用RTL設計中的對象名稱;部分對象如頂層端口、實例化原語在RTL和Elaborated設計中總是相同的,下面給出一些名稱會發生變化的例子,需要特別注意:

單bit寄存器:RTL中的信號名稱添加后綴_reg,如RTL中定義reg data,則對應的寄存器名稱為data_reg;

多bit寄存器:與單bit寄存器相同,但約束時必須單獨約束每個bit或直接當作一組約束,如定義reg [3:0] data,可以對reg[0]或reg[*]約束,但不能對reg[1:0]約束;

合并的寄存器和網絡:存儲塊、DSP、移位寄存器等接口會將幾個設計對象合并到一個資源中,導致RTL源文件中的一些寄存器或網絡不會出現在Elaboratd設計中,對于這類對象,無法直接約束,應該尋找與其相連的其它寄存器或網絡;

層次名稱:默認情況下,綜合可能會將某些層次結構展開,融為一體(可以用-flatten_hierarchy設置),約束時要使用完整的層次名稱來指定對象,而不要使用通配符‘*’,如‘inst_A/inst_B/data_reg’;

總而言之,就是要明確約束的對象,否則很容易造成約束沒有按設計者意圖進行;比如不要對層次接口的管腳做約束,因為這些管腳僅僅起到了連接各個層次的作用;也不要對與組合邏輯運算符相連的網絡做約束,因為組合邏輯運算會采用查找表方式實現,導致該網絡并不會出現在綜合網表中 ;

創建實現約束

綜合過后,將綜合網表和XDC文件(或Tcl腳本)一同導入到內存中,用于實現過程;導入時必須觀察Vivado報告的消息,據此來驗證和修改那些沒有應用成功的約束;正如綜合約束使用的Elaborated設計對象名稱會和RTL中名稱不同,實現約束使用的綜合網表對象名稱也可能會和Elaborated設計中的名稱不同;如果發生上述情況,則必須重新創建某些約束,并僅作用于實現階段;

前文也說過物理和配置約束僅會在實現階段起作用,因此也最好存儲到一個單獨的XDC文件中,設置為僅作用于實現階段。綜合過程中可能會復制某些寄存器,以提高設計性能,必須使用get_cells/get_pins -include_replicated_objects命令獲取對象,才能確保XDC約束也作用于復制出來的寄存器;當然很難直接感覺到哪個對象需要像上述這樣做,幸好在Vivado中運行Methodology檢查時,相關信息會報告在XDCV-1和XDCV-2檢查信息中,供設計者參考;

約束作用域

一個特定的XDC文件中的約束可以選擇僅作用于一個特定的模塊,或設計中的特定單元,這種約束方式可稱作塊級約束;實現機制稱作約束作用域機制;默認情況下,IP Catalog中導出的所有IP核都采用這種約束方式;該機制通過設置XDC文件的兩個屬性實現:

edc66e48-f7a9-11ec-ba43-dac502259ad0.png

SCOPED_TO_REF:設置模塊名稱,約束僅應用于設定模塊中的所有實例;

SCOPED_TO_CELLS:給出應用約束的層次單元名稱列表;

導出IP核時,輸出的XDC文件會自動完成上述兩個屬性的設置。如果設計中需要為某個子模塊進行單獨約束,也可以通過手動設置上述兩個屬性實現;

約束效率

編寫時序約束時,首要目標是讓約束變得簡單,僅為相關的網表對象設置約束,即為約束提供盡可能少的作用對象,以便精確并安全地覆蓋到預期的時序路徑;沒有效率地約束會導致更長的運行時間、更大的內存占用率,最壞的情況是覆蓋到比預期更多的路徑從而與其它約束產生沖突,導致設計出現時序異常 ;

Vivado中Methodology檢查的XDCB-1會報告涉及到超過1000個對象的時序約束,以防止出現時序異常情況。此外,還可以打開某一階段設計后,使用如下命令查看相關報告:

report_exceptions -coverage:給出每個時序異常的邏輯路徑范圍,將該時序異常作用的對象數量,與起點到端點間以有效的方式覆蓋的對象數目作比較;

report_exceptions -ignored:給出被其它時序約束覆蓋掉的時序約束,如set_false_path會被set_clock_group覆蓋而不起作用。應考慮修改約束或刪掉不起作用的約束;

report_exceptions -ignored_objects:給出被忽略的起點與斷點列表,如起點和斷點之間不存在設定的路徑,就會導致被忽略;

下面給出幾種改善約束運行時間的方法:

1.優化管腳查詢方式

使用get_pins代替get_cells會對運行時間有明顯的影響。如果需要從設計的所有管腳中查找一個管腳列表,不要直接根據管腳名字查詢,最好是先用get_cells定位管腳所在的單元,再從該單元中查找管腳,示例如下:

get_pins –hier * -filter {NAME=~xx*/yy*} //不推薦的方式

get_pins –filter {REF_PIN_NAME=~yy*} –of [get_cells –hier xx*] //最佳方式

2.不要使用all_registers查詢

盡可能地將對all_registers的查詢代替為對cells、pins的查詢,因為使用all_registers會在大量對象中進行搜索,示例如下:

set_multicycle_path –from [all_inputs] –to [all_registers –clock clk1]

set_multicycle_path –from [all_inputs] –to [get_clocks clk1]

這兩條約束是等價的,但第二種方式的效率比第一種要高很多;

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 約束
    +關注

    關注

    0

    文章

    82

    瀏覽量

    12739
  • Vivado
    +關注

    關注

    19

    文章

    812

    瀏覽量

    66578
  • xdc
    xdc
    +關注

    關注

    1

    文章

    24

    瀏覽量

    5930

原文標題:Vivado使用技巧:約束功能概述

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    TMS320C55x DSP功能概述

    電子發燒友網站提供《TMS320C55x DSP功能概述.pdf》資料免費下載
    發表于 12-30 16:48 ?0次下載
    TMS320C55x DSP<b class='flag-5'>功能</b><b class='flag-5'>概述</b>

    AMD Vivado Design Suite 2024.2全新推出

    AMD Vivado Design Suite 2024.2 全新推出,使用 AMD Versal Adaptive SoC 進行設計的重大改進。此版本為 AMD Versal 自適應 SoC
    的頭像 發表于 11-22 13:54 ?279次閱讀

    每次Vivado編譯的結果都一樣嗎

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

    使用Vivado通過AXI Quad SPI實現XIP功能

    本博客提供了基于2023.2 Vivado的參考工程,展示如何使用Microblaze 地執行(XIP)程序,并提供一個簡單的bootloader。
    的頭像 發表于 10-29 14:23 ?362次閱讀
    使用<b class='flag-5'>Vivado</b>通過AXI Quad SPI實現XIP<b class='flag-5'>功能</b>

    Vivado使用小技巧

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

    Vivado 2024.1版本的新特性(2)

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

    Vivado 2024.1版本的新特性(1)

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

    電路的兩類約束指的是哪兩類

    電路的兩類約束通常指的是電氣約束和物理約束。這兩類約束在電路設計和分析中起著至關重要的作用。 一、電氣約束 電氣
    的頭像 發表于 08-25 09:34 ?911次閱讀

    時序約束實操

    添加約束的目的是為了告訴FPGA你的設計指標及運行情況。在上面的生成約束之后,在Result àxx.sdc中提供約束參考(請注意該文件不能直接添加到工程中,需要熱復制到別的指定目錄或者新建自己的SDC文件添加到工程)。
    的頭像 發表于 04-28 18:36 ?2313次閱讀
    時序<b class='flag-5'>約束</b>實操

    Xilinx FPGA的約束設置基礎

    LOC約束是FPGA設計中最基本的布局約束和綜合約束,能夠定義基本設計單元在FPGA芯片中的位置,可實現絕對定位、范圍定位以及區域定位。
    發表于 04-26 17:05 ?1220次閱讀
    Xilinx FPGA的<b class='flag-5'>約束</b>設置基礎

    如何禁止vivado自動生成 bufg

    Vivado中禁止自動生成BUFG(Buffered Clock Gate)可以通過以下步驟實現。 首先,讓我們簡要了解一下什么是BUFG。BUFG是一個時鐘緩沖器,用于緩沖輸入時鐘信號,使其更穩
    的頭像 發表于 01-05 14:31 ?2201次閱讀

    Vivado時序問題分析

    有些時候在寫完代碼之后呢,Vivado時序報紅,Timing一欄有很多時序問題。
    的頭像 發表于 01-05 10:18 ?2190次閱讀

    Vivado約束學習】 時鐘約束介紹

    在數字設計中,時鐘代表從寄存器(register)到寄存器可靠傳輸數據的時間基準。
    的頭像 發表于 01-04 09:16 ?3206次閱讀
    【<b class='flag-5'>Vivado</b><b class='flag-5'>約束</b>學習】 時鐘<b class='flag-5'>約束</b>介紹

    FPGA物理約束之布局約束

    在進行布局約束前,通常會對現有設計進行設計實現(Implementation)編譯。在完成第一次設計實現編譯后,工程設計通常會不斷更新迭代,此時對于設計中一些固定不變的邏輯,設計者希望它們的編譯結果
    的頭像 發表于 01-02 14:13 ?1520次閱讀
    FPGA物理<b class='flag-5'>約束</b>之布局<b class='flag-5'>約束</b>

    Vivado 2023.2版本的新增功能

    Vivado在前一段時間更新了2023.2版本,經過一段時間的使用這個版本還是很絲滑的,用起來挺舒服。
    的頭像 發表于 01-02 09:39 ?3316次閱讀
    <b class='flag-5'>Vivado</b> 2023.2版本的新增<b class='flag-5'>功能</b>
    主站蜘蛛池模板: 免费观看高清黄页网址大全| 久久综合给合久久狠狠狠…| 久久久久综合| 舔1V1高H糙汉| 岛国在线永久免费视频| 欧美亚洲另类图片| 97免费视频在线观看| 久久艹影院| 野花高清影视免费观看| 国语自产偷成人精品视频| 亚洲国产精品久久精品成人网站| 国产三级级在线电影| 香蕉精品国产高清自在自线| 国产精品无码AV天天爽色欲| 午夜勾魂曲| 国产永久免费高清在线观看| 亚洲国产日韩欧美在线a乱码| 国产午夜精品理论片免费观看| 亚州视频一区| 花蝴蝶在线观看中字| 一本大道手机在线看| 老色哥网站| freevideoshd| 三级黄色在线| 国产一区二区波多野结衣| 亚洲日韩一区精品射精| 久久一区精品| CHRISTMAS农村夫妻HO| 日本午夜精品久久久无码| 福利社的阿姨| 亚洲精品国产国语| 久久视频在线视频观品15| 99国产精品综合AV无码| 日韩美女爱爱| 国产睡熟迷奷系列精品| 一区在线观看在线| 欧美三级不卡在线观线看| 大迪克黑人异族| 亚洲区偷拍自拍29P| 美女议员被泄裸照| 国产成人亚洲综合无|