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 IDE全面了解XDC文件的約束順序

454398 ? 來(lái)源:CSDN博主 ? 作者:Reborn Lee ? 2020-11-13 10:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

由于XDC約束是按順序應(yīng)用的,并且基于明確的優(yōu)先級(jí)規(guī)則進(jìn)行優(yōu)先級(jí)排序,因此必須仔細(xì)檢查約束的順序。

如果多個(gè)物理約束發(fā)生沖突,則最新約束將獲勝。 例如,如果通過(guò)多個(gè)XDC文件為I / O端口分配了不同的位置(LOC),則分配給該端口的最新位置優(yōu)先。

Vivado IDE可全面了解您的設(shè)計(jì)。 要逐步驗(yàn)證您的約束:
1.運(yùn)行相應(yīng)的報(bào)告命令。
2.查看Tcl控制臺(tái)或“消息”窗口中的消息。

推薦的約束順序

建議:無(wú)論是為設(shè)計(jì)使用一個(gè)還是多個(gè)XDC文件,都按以下順序組織約束。

## Timing Assertions Section
# Primary clocks
# Virtual clocks
# Generated clocks
# Clock Groups
# Bus Skew constraints
# Input and output delay constraints

## Timing Exceptions Section
# False Paths
# Max Delay / Min Delay
# Multicycle Paths
# Case Analysis
# Disable Timing

## Physical Constraints Section
# located anywhere in the file, preferably before or after the timing constraints
# or stored in a separate constraint file

時(shí)鐘定義開(kāi)始。 必須先創(chuàng)建時(shí)鐘,然后才能將它們用于任何后續(xù)約束。 聲明之前對(duì)時(shí)鐘的任何引用都會(huì)導(dǎo)致錯(cuò)誤,并忽略相應(yīng)的約束。 在單個(gè)約束文件中以及設(shè)計(jì)中的所有XDC文件(或Tcl腳本)中都是如此。

約束文件的順序很重要。 您必須確保每個(gè)文件中的約束不依賴(lài)于另一個(gè)文件的約束。 如果是這種情況,則必須最后讀取包含約束依賴(lài)項(xiàng)的文件。 如果兩個(gè)約束文件具有相互依賴(lài)關(guān)系,則必須將它們手動(dòng)合并到一個(gè)包含正確序列的文件中,或者將文件分成幾個(gè)單獨(dú)的文件并正確排序。

編輯約束順序

Vivado IDE約束管理器將任何已編輯的約束保存回XDC文件中的原始位置,但不會(huì)保存在Tcl腳本中。 任何新約束都保存在標(biāo)記為目標(biāo)的XDC文件的末尾。 在許多情況下,當(dāng)約束集包含多個(gè)XDC文件時(shí),目標(biāo)約束文件不是列表中的最后一個(gè)文件,并且在打開(kāi)或重新加載設(shè)計(jì)時(shí)不會(huì)最后加載。 因此,保存在磁盤(pán)上的約束序列可能與之前在內(nèi)存中的約束序列不同。

重要信息:您必須驗(yàn)證存儲(chǔ)在約束文件中的最終序列是否仍按預(yù)期工作。 如果必須修改序列,則必須通過(guò)直接編輯約束文件來(lái)修改它。 這對(duì)時(shí)序約束尤為重要。

約束文件順序

在沒(méi)有任何IP的項(xiàng)目流程中,所有約束都位于約束集中。 默認(rèn)情況下,Vivado IDE中顯示的XDC文件(或Tcl腳本)的順序定義了將elaborated design或synthesized design加載到內(nèi)存時(shí)工具使用的讀取順序。 首先讀取列表頂部的文件,最后讀取底部的文件。 您只需在IDE中選擇文件并將其移動(dòng)到列表中的所需位置即可更改順序。

例如,在圖1中,使用拖放操作將文件wave_gen_pin.xdc移動(dòng)到文件wave_gen_timing.xdc之前。

Figure 1: Changing XDC File Order in the Vivado IDE Example

The equivalent Tcl command is:
reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] [get_files wave_gen_pins.xdc]

在非項(xiàng)目模式下,read_xdc調(diào)用的順序決定了約束文件的計(jì)算順序。

Constraint Files Order with IP Cores

許多IP內(nèi)核隨附一個(gè)或多個(gè)XDC文件。 在RTL項(xiàng)目中生成此類(lèi)IP內(nèi)核時(shí),還會(huì)在各種設(shè)計(jì)編譯步驟中使用其XDC文件。

例如,圖2顯示項(xiàng)目中的一個(gè)IP核帶有一個(gè)XDC文件。

Figure 2: XDC Files in the IP Sources

默認(rèn)情況下,在用戶(hù)XDC文件之前讀入IP XDC文件。 以這種方式處理它允許IP創(chuàng)建可在XDC中引用的時(shí)鐘對(duì)象。 它還允許您覆蓋由IP內(nèi)核設(shè)置的物理約束,因?yàn)樵贗P之后評(píng)估用戶(hù)約束。 對(duì)于依賴(lài)于由用戶(hù)或其他IP創(chuàng)建的時(shí)鐘對(duì)象的IP核,此順序有一個(gè)例外(例如,get_clocks -of_objects [get_ports clka])。 在這種情況下,在用戶(hù)文件之后讀取IP XDC。

此行為由PROCESSING_ORDER屬性控制,為每個(gè)XDC文件設(shè)置:
?EARLY:必須先讀取的文件
?NORMAL:默認(rèn)
?LATE:必須最后讀取的文件

IP XDC將其PROCESSING_ORDER屬性設(shè)置為EARLY或LATE。 沒(méi)有哪個(gè)IP提供屬于NORMAL約束組的XDC文件。 對(duì)于屬于同 一PROCESSING_ORDER組的用戶(hù)XDC(或Tcl)文件,Vivado IDE中顯示的相對(duì)順序決定了它們的讀取順序。 可以通過(guò)移動(dòng)Vivado IDE約束集中的文件或使用reorder_files命令來(lái)修改組中的順序。

對(duì)于屬于同一PROCESSING_ORDER組的IP XDC文件,順序由IP內(nèi)核的導(dǎo)入或創(chuàng)建順序確定。 創(chuàng)建項(xiàng)目后,無(wú)法更改此順序。

最后,用戶(hù)組和IP XDC PROCESSING_ORDER組之間的相對(duì)順序如下:
1.標(biāo)記為EARLY的用戶(hù)約束
2.標(biāo)記為EARLY的IP約束(默認(rèn))
3.標(biāo)記為NORMAL的用戶(hù)約束
4.標(biāo)記為L(zhǎng)ATE的IP約束(包含時(shí)鐘依賴(lài)性)
5.標(biāo)記為L(zhǎng)ATE的用戶(hù)約束

注意:將其PROCESSING_ORDER設(shè)置為L(zhǎng)ATE(以便在用戶(hù)約束后進(jìn)行處理)的IP XDC文件命名為 _clocks.xdc。

下圖顯示了如何設(shè)置PROCESSING_ORDER屬性的示例:

Figure 3: Setting the XDC File PROCESSING_ORDER Example

The equivalent Tcl command is:
set_property PROCESSING_ORDER EARLY [get_files wave_gen_pins.xdc]

建議:使用Tcl控制臺(tái)中的report_compile_order -constraints命令報(bào)告由工具根據(jù)上述屬性確定的XDC文件讀取順序,包括IS_ENABLED,USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION。

Changing Read Order

要在約束集中更改XDC文件或非托管Tcl腳本的讀取順序,請(qǐng)執(zhí)行以下操作:
1. 在“源”窗口中,選擇要移動(dòng)的XDC文件或Tcl腳本。
2. 將文件拖放到約束集中的所需位置。

對(duì)于圖1中所示的示例,等效的Tcl命令是:
reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] [get_files wave_gen_pins.xdc]

在非項(xiàng)目模式下,read_xdc或source命令的順序決定了約束文件的讀取順序。

如果使用帶有約束的IP內(nèi)核,則會(huì)自動(dòng)處理兩組約束,如下所示:
?不依賴(lài)于時(shí)鐘的約束被分組到XDC文件中,PROCESSING_ORDER設(shè)置為EARLY,
?依賴(lài)于時(shí)鐘的約束在PROCESSING_ORDER設(shè)置為L(zhǎng)ATE的XDC文件中分組。

默認(rèn)情況下,用戶(hù)XDC文件屬于PROCESSING_ORDER NORMAL組。 它們?cè)贓ARLY XDC文件之后和LATE XDC文件之前加載。 對(duì)于每個(gè)PROCESSING_ORDER組,IP XDC文件的加載順序與IP Sources窗口中IP核的列表順序相同。 例如,下圖顯示了XDC文件附帶的項(xiàng)目IP內(nèi)核之一。

Figure 4: XDC Files in the IP Sources

打開(kāi)設(shè)計(jì)時(shí),日志文件顯示最后加載了IP XDC文件:

Parsing XDC File

[C:/project_wave_gen_hdl.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst'
Finished Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst'
Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0'
Finished Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0'
Parsing XDC File
[C:/project_wave_gen_hdl.srcs/constrs_1/imports/verilog/wave_gen_timing.xdc]
Finished Parsing XDC File
[C:/project_wave_gen_hdl.srcs/constrs_1/imports/verilog/wave_gen_timing.xdc]
Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo_clocks.xdc ] for cell 'char_fifo_i0/U0'
Finished Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo_clocks.xdc ] for cell 'char_fifo_i0/U0'
Completed Processing XDC Constraints

與用戶(hù)XDC文件不同,您無(wú)法直接更改屬于同一PROCESSING_ORDER組的IP XDC文件的讀取順序。 如果必須修改訂單,請(qǐng)執(zhí)行以下操作:
1. 禁用相應(yīng)的IP XDC文件(IS_ENABLED設(shè)置為false)。
2. 復(fù)制他們的內(nèi)容。
3. 將內(nèi)容粘貼到約束集中包含的一個(gè)XDC文件中。
4. 在需要的地方使用完整的分層網(wǎng)表對(duì)象路徑名更新復(fù)制的IP XDC命令。 這樣做是必需的,因?yàn)镮P XDC約束以這樣的方式編寫(xiě),即它們可以作用于IP實(shí)例。
5. 查看以特殊方式處理范圍約束的get_ports查詢(xún)。

編輯:hfy


聲明:本文內(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)投訴
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    834

    瀏覽量

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

    關(guān)注

    1

    文章

    24

    瀏覽量

    6039
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    一文詳解Vivado時(shí)序約束

    Vivado的時(shí)序約束是保存在xdc文件中,添加或創(chuàng)建設(shè)計(jì)的工程源文件后,需要?jiǎng)?chuàng)建xdc
    的頭像 發(fā)表于 03-24 09:44 ?3474次閱讀
    一文詳解<b class='flag-5'>Vivado</b>時(shí)序<b class='flag-5'>約束</b>

    無(wú)法在XDC文件中設(shè)置maxdelay約束

    XDC文件中設(shè)置maxdelay約束。 (摘自u(píng)g911:MAXDELAY:Vivado Design Suite在XDC中不支持此
    發(fā)表于 10-25 15:17

    Vivado忽略了約束文件

    出于某種原因,Vivado忽略了我的約束文件,當(dāng)我嘗試在tcl控制臺(tái)中逐個(gè)輸入約束時(shí),我嘗試分配的每個(gè)端口都會(huì)出現(xiàn)以下錯(cuò)誤:set_property PACKAGE_PIN T19
    發(fā)表于 11-06 11:36

    在使用Vivado GUI實(shí)現(xiàn)和分配引腳信息后xdc約束文件中看不到結(jié)果

    在使用Vivado GUI實(shí)現(xiàn)和分配引腳信息后,我沒(méi)有在xdc約束文件中看到結(jié)果。例如,引腳和iostandard。他們?cè)谀睦飻€錢(qián)?以上來(lái)自于谷歌翻譯以下為原文After
    發(fā)表于 11-07 11:24

    如何創(chuàng)建自己的xdc文件

    你好我目前正在使用外部多路復(fù)用器在Vivado 2017上開(kāi)展一個(gè)項(xiàng)目。關(guān)于約束文件(.xdc),我有一個(gè)更普遍的問(wèn)題。如何創(chuàng)建自己的xdc
    發(fā)表于 05-22 10:27

    關(guān)于XDC約束文件,你需要知道的幾點(diǎn)

    作者:?圓宵?FPGA那點(diǎn)事兒 在ISE時(shí)代,使用的是UCF約束文件。從Vivado開(kāi)始,XDC成了唯一支持的約束標(biāo)準(zhǔn)。
    發(fā)表于 02-08 02:10 ?5611次閱讀

    ISE約束導(dǎo)入vivado總共分幾步

    最近有些朋友在ISE中做的V7項(xiàng)目需要切換到vivado來(lái),但導(dǎo)入代碼后,導(dǎo)入約束時(shí),發(fā)現(xiàn)vivado不再支持UCF文件,如果手抄UCF約束
    發(fā)表于 03-24 13:54 ?9188次閱讀
    ISE<b class='flag-5'>約束</b>導(dǎo)入<b class='flag-5'>vivado</b>總共分幾步

    XDC的時(shí)鐘約束及優(yōu)勢(shì)

    Xilinx?的新一代設(shè)計(jì)套件 Vivado 中引入了全新的約束文件 XDC,在很多規(guī)則和技巧上都跟上一代產(chǎn)品 ISE 中支持的 UCF 大不相同,給使用者帶來(lái)許多額外挑戰(zhàn)。Xilin
    發(fā)表于 11-18 03:59 ?3861次閱讀

    XDC約束及物理約束的介紹

    觀看視頻,了解和學(xué)習(xí)有關(guān)XDC約束,包括時(shí)序,以及物理約束相關(guān)知識(shí)。
    的頭像 發(fā)表于 01-07 07:10 ?6719次閱讀
    <b class='flag-5'>XDC</b><b class='flag-5'>約束</b>及物理<b class='flag-5'>約束</b>的介紹

    如何將Altera的SDC約束轉(zhuǎn)換為Xilinx XDC約束

    了解如何將Altera的SDC約束轉(zhuǎn)換為Xilinx XDC約束,以及需要更改或修改哪些約束以使Altera的
    的頭像 發(fā)表于 11-27 07:17 ?5465次閱讀

    XDC時(shí)鐘約束的三種基本語(yǔ)法

    XDC 是 Xilinx Design Constraints 的簡(jiǎn)寫(xiě),但其基礎(chǔ)語(yǔ)法來(lái)源于業(yè)界統(tǒng)一的約束規(guī)范SDC。XDC 在本質(zhì)上就是 Tcl 語(yǔ)言,但其僅支持基本的 Tcl 語(yǔ)法如變量、列表
    的頭像 發(fā)表于 01-30 17:29 ?1w次閱讀

    VivadoXDC文件約束順序

    使得問(wèn)題更加復(fù)雜,比如一個(gè)設(shè)計(jì)使用了不同的IP核或者由不同團(tuán)隊(duì)開(kāi)發(fā)的模塊。不管設(shè)計(jì)者在設(shè)計(jì)中,使用了一個(gè)還是多個(gè)XDC文件,Xilinx推薦設(shè)計(jì)者使用下面的順序來(lái)組織約束
    的頭像 發(fā)表于 10-13 16:56 ?7355次閱讀

    Vivado設(shè)計(jì)約束功能概述

    XDC約束可以用一個(gè)或多個(gè)XDC文件,也可以用Tcl腳本實(shí)現(xiàn);XDC文件或Tcl腳本都要加入到工
    的頭像 發(fā)表于 06-30 11:27 ?4458次閱讀

    XDC約束技巧之時(shí)鐘篇

    Xilinx的新一代設(shè)計(jì)套件Vivado中引入了全新的約束文件 XDC,在很多規(guī)則和技巧上都跟上一代產(chǎn)品 ISE 中支持的 UCF 大不相同,給使用者帶來(lái)許多額外挑戰(zhàn)。Xilinx 工
    的頭像 發(fā)表于 03-28 09:51 ?3640次閱讀

    如何在Vivado中添加時(shí)序約束呢?

    今天介紹一下,如何在Vivado中添加時(shí)序約束,Vivado添加約束的方法有3種:xdc文件、時(shí)
    的頭像 發(fā)表于 06-26 15:21 ?5255次閱讀
    如何在<b class='flag-5'>Vivado</b>中添加時(shí)序<b class='flag-5'>約束</b>呢?

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品