您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!
Constraints Methodology(約束方法論)
關(guān)于約束方法論
設(shè)計(jì)約束定義了編譯流程必須滿足的要求,以使設(shè)計(jì)在板上起作用。 并非所有步驟都使用所有約束
在編譯流程中。 例如,物理約束僅在實(shí)現(xiàn)步驟期間使用(即,由布局器和路由器)。
由于Xilinx®Vivado®集成設(shè)計(jì)環(huán)境(IDE)綜合和實(shí)現(xiàn)算法是時(shí)序驅(qū)動(dòng)的,因此必須創(chuàng)建適當(dāng)?shù)臅r(shí)序約束。
過度約束或設(shè)計(jì)不足會(huì)使時(shí)序收斂變得困難。 您必須使用符合您的應(yīng)用程序要求的合理約束。
也就是說這一章主要就是講解約束的行為規(guī)范,上一章講述的是如何輸入約束文件,這都是有一定順序的
組織你的約束(個(gè)人認(rèn)為比較重要,應(yīng)該是我所需要的部分)
The Vivado IDE allows you to use one or many constraint files. While using a single
constraint file for the entire compilation flow might seem more convenient, it can be a
challenge to maintain all the constraints as the design becomes more complex. This is
usually the case for designs that use several IP cores or large blocks developed by different
teams.
After the timing and physical constraints have been imported, independent of the number
of source files or whether the design is in Project/Non-Project mode, all the constraints can
be exported as a single file with the write_xdc command. The constraints are written to
the specified output file in the same order that they were read into the project or design.
The command line option write_xdc -type can be used to select a sub-set of
constraints (timing, physical, or waiver) to export.
又是一大段英文,不歸說真的,技術(shù)開發(fā)人員一些技術(shù)資料一定要看懂,但是比較權(quán)威的大部分都源自英文版,所以學(xué)好英語(yǔ)很重要!!! 不過沒有那么多時(shí)間讓我現(xiàn)學(xué)英文
只能退而求其次,想想辦法,
Vivado IDE允許您使用一個(gè)或多個(gè)約束文件。 雖然對(duì)整個(gè)編譯流使用單個(gè)約束文件似乎更方便,但隨著設(shè)計(jì)變得更加復(fù)雜,維護(hù)所有約束可能是一個(gè)挑戰(zhàn)。 對(duì)于使用由不同團(tuán)隊(duì)開發(fā)的多個(gè)IP核或大塊的設(shè)計(jì),通常就是這種情況。
導(dǎo)入定時(shí)和物理約束后,獨(dú)立于源文件的數(shù)量或設(shè)計(jì)是否處于項(xiàng)目/非項(xiàng)目模式,可以使用write_xdc命令將所有約束導(dǎo)出為單個(gè)文件。
約束以與讀入項(xiàng)目或設(shè)計(jì)相同的順序?qū)懭胫付ǖ妮敵鑫募?br />命令行選項(xiàng)write_xdc -type可用于選擇要導(dǎo)出的約束(時(shí)間,物理或豁免)子集。
不過這里有一個(gè)建議:
RECOMMENDED: Xilinx recommends that you separate timing constraints and physical constraints by
saving them into two distinct files. You can also keep the constraints specific to a certain module in a
separate file.
建議:Xilinx建議您將時(shí)序約束和物理約束分開,將它們保存為兩個(gè)不同的文件。 您還可以將特定于某個(gè)模塊的約束保存在單獨(dú)的文件中。
項(xiàng)目模式(工程模式)/非項(xiàng)目模式(非工程模式)的概念:
這是兩種VIVADO的兩種設(shè)計(jì)流程模式
(一) 設(shè)計(jì)者可以使用基于工程的方法自動(dòng)管理設(shè)計(jì)過程和設(shè)計(jì)數(shù)據(jù),這個(gè)就是說可以用VIVADO軟件來進(jìn)行
(二)可以根據(jù)TCL腳本的方法,可以自己設(shè)計(jì)管理源文件和設(shè)計(jì)流程,這種方法稱為非工程模式,這就非常高大上了,就像是Linux里shell Windows里的doc,不過我作為初學(xué)者,還是選用第一種方法吧。
Project Flows
You can add your Xilinx Design Constraints (XDC) files to a constraints set during the
creation of a new project, or later, from the Vivado IDE menus.
Figure 2-1 shows two constraint sets in a project, which are Single or Multi XDC. The first
constraint set includes two XDC files. The second constraint set uses only one XDC file
containing all the constraints.
You can also add Tcl scripts to your constraints set as unmanaged constraints or
unmanaged Tcl scripts. The Vivado Design Suite does not write modified constraints back
into an unmanaged Tcl script. Tcl scripts and XDC files are loaded in the same sequence as
displayed in the Vivado IDE (if they belong to the same PROCESSING_ORDER group) or as
reported by the command report_compile_order -constraints.
An XDC file or a Tcl script can be used in several constraints sets if needed. For more
information on how to create and add constraint files and constraints sets to your project,
see Working with Constraints in the Vivado Design Suite User Guide: System-Level Design
Entry (UG895) [Ref 2].
項(xiàng)目流程
您可以在創(chuàng)建新項(xiàng)目期間或稍后從Vivado IDE菜單中將Xilinx設(shè)計(jì)約束(XDC)文件添加到約束集中。
圖2-1顯示了項(xiàng)目中的兩個(gè)約束集,即單XDC或多XDC。 第一個(gè)約束集包括兩個(gè)XDC文件。 第二個(gè)約束集僅使用一個(gè)包含所有約束的XDC文件。
如果項(xiàng)目包含使用其自身約束的IP,則相應(yīng)的約束文件不會(huì)出現(xiàn)在約束集中。 相反,它與IP源文件一起列出。
您還可以將Tcl腳本添加到約束集中作為非托管約束或非托管Tcl腳本。 Vivado設(shè)計(jì)套件不會(huì)重新編寫修改的約束
進(jìn)入一個(gè)非托管的Tcl腳本。 Tcl腳本和XDC文件的加載順序與Vivado IDE中顯示的順序相同(如果它們屬于同一個(gè)PROCESSING_ORDER組)或命令report_compile_order -constraints報(bào)告的順序。
如果需要,可以在多個(gè)約束集中使用XDC文件或Tcl腳本。 有關(guān)如何為項(xiàng)目創(chuàng)建和添加約束文件和約束集的更多信息,請(qǐng)參閱“Vivado Design Suite用戶指南”中的使用約束:系統(tǒng)級(jí)設(shè)計(jì)
參賽作品(UG895)[參考文獻(xiàn)2]。
非項(xiàng)目流程
在非項(xiàng)目模式下,必須在執(zhí)行編譯命令之前單獨(dú)讀取每個(gè)文件。
下面的示例腳本顯示了如何使用一個(gè)或多個(gè)XDC文件進(jìn)行綜合和實(shí)現(xiàn)。
示例腳本:
read_verilog [glob src / * .v]
read_xdc wave_gen_timing.xdc
read_xdc wave_gen_pins.xdc
synth_design -top wave_gen -part xc7k325tffg900-2
opt_design
place_design
route_design
語(yǔ)境外約束
在HD或PR流中,通常以上下文(OOC)方法合成設(shè)計(jì)的各部分。 當(dāng)使用這樣的流時(shí),可以僅為OOC合成指定一些約束。 例如,當(dāng)塊合成OOC時(shí),必須定義在塊的輸入邊界處傳播的時(shí)鐘。 這些時(shí)鐘在OOC XDC文件中定義。
In Project Mode:
add_file constraints_ooc.xdc
set_property USED_IN {synthesis out_of_context} [get_files constraints_ooc.xdc]
The Out-of-Context can also be set on the XDC file through the GUI (property on file
constraints_ooc.xdc).
也可以通過GUI(文件constraints_ooc.xdc上的屬性)在XDC文件上設(shè)置Out-of-Context。
In Non-Project Mode:
read_xdc -mode out_of_context constraints_ooc.xdc
Synthesis and Implementation Constraint Files
By default, all XDC files and Tcl scripts added to a constraint set are used for both synthesis
and implementation. Set the USED_IN_SYNTHESIS and USED_IN_IMPLEMENTATION
properties on the XDC file or the Tcl script to change this behavior. This property can take
the value of either TRUE or FALSE.
合成和實(shí)現(xiàn)約束文件
默認(rèn)情況下,添加到約束集的所有XDC文件和Tcl腳本都用于合成和實(shí)現(xiàn)。 在XDC文件或Tcl腳本上設(shè)置USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION屬性以更改此行為。 此屬性可以采用TRUE或FALSE的值。
重要信息:DONT_TOUCH屬性不遵循USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION的屬性。 如果在合成XDC中使用DONT_TOUCH屬性,則為
無論USED_IN_IMPLEMENTATION的值如何,都會(huì)傳播到實(shí)現(xiàn)中。 有關(guān)DONT_TOUCH屬性的更多信息,請(qǐng)參閱RTL屬性,第58頁(yè),這可能是最需要注意的地方
For example, to use a constraint file for implementation only:
1. Select the constraint file in the Sources window.
2. In the Source File Properties window:
a. Uncheck Synthesis.
b. Check Implementation.
The equivalent Tcl commands are:
set_property USED_IN_SYNTHESIS false [get_files wave_gen_pins.xdc]
set_property USED_IN_IMPLEMENTATION true [get_files wave_gen_pins.xdc]
When running the Vivado IDE in Non-Project Mode, you can read in the constraints directly
between any steps of the flow. The properties USED_IN_SYNTHESIS and
USED_IN_IMPLEMENTATION do not matter in this mode.
在非項(xiàng)目模式下運(yùn)行Vivado IDE時(shí),您可以直接在流的任何步驟之間讀取約束。 在此模式下,屬性USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION無關(guān)緊要。
The following compilation Tcl script shows how to read two XDC files for different steps of
the flow:
以下編譯Tcl腳本顯示了如何讀取不同步驟的兩個(gè)XDC文件
流程:
read_verilog [glob src/*.v]
read_xdc wave_gen_timing.xdc
synth_design -top wave_gen -part xc7k325tffg900-2
read_xdc wave_gen_pins.xdc
opt_design
place_design
route_design
Ordering Your Constraints
Because XDC constraints are applied sequentially, and are prioritized based on clear
precedence rules, you must review the order of your constraints carefully. For more
information, see Chapter 7, XDC Precedence.
由于XDC約束是按順序應(yīng)用的,并且基于明確的優(yōu)先級(jí)規(guī)則進(jìn)行優(yōu)先級(jí)排序,因此必須仔細(xì)檢查約束的順序。 有關(guān)更多信息,請(qǐng)參見第7章,XDC優(yōu)先級(jí)
注意:如果多個(gè)物理約束發(fā)生沖突,則最新約束將獲勝。 例如,如果I / O端口通過多個(gè)XDC文件分配了不同的位置(LOC),則為最新位置
分配給端口優(yōu)先。
The Vivado IDE provides full visibility into your design. To validate your constraints step by
step:
Vivado IDE可全面了解您的設(shè)計(jì)。 要逐步驗(yàn)證您的約束:
1. Run the appropriate report commands.
2. Review the messages in the Tcl Console or the Messages window.
建議:無論是為設(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
Note: The case analysis constraints that change the clock relationships or clock propagation should
be defined prior to defining the generated clocks. This includes cases analysis defined on clock
buffers that result in the output clock of the buffer to be impacted by the case analysis.
注:應(yīng)在定義生成的時(shí)鐘之前定義更改時(shí)鐘關(guān)系或時(shí)鐘傳播的案例分析約束。 這包括在時(shí)鐘上定義的案例分析
緩沖區(qū)導(dǎo)致緩沖區(qū)的輸出時(shí)鐘受到案例分析的影響。
Start with the clock definitions. The clocks must be created before they can be used by any
subsequent constraints. Any reference to a clock before it has been declared results in an
error and the corresponding constraint is ignored. This is true within an individual
constraint file, as well as across all the XDC files (or Tcl scripts) in your design.
The order of the constraint files matters. You must be sure that the constraints in each file
do not rely on the constraints of another file. If this is the case, you must read the file that
contains the constraint dependencies last. If two constraint files have interdependencies,
you must either merge them manually into one file that contains the proper sequence, or
divide the files into several separate files and order them correctly.
從時(shí)鐘定義開始。 必須先創(chuàng)建時(shí)鐘,然后才能將它們用于任何后續(xù)約束。 聲明之前對(duì)時(shí)鐘的任何引用都會(huì)導(dǎo)致錯(cuò)誤,并忽略相應(yīng)的約束。 在單個(gè)約束文件中以及設(shè)計(jì)中的所有XDC文件(或Tcl腳本)中都是如此。
從時(shí)鐘定義開始。 必須先創(chuàng)建時(shí)鐘,然后才能將它們用于任何后續(xù)約束。 聲明之前對(duì)時(shí)鐘的任何引用都會(huì)導(dǎo)致錯(cuò)誤,并忽略相應(yīng)的約束。
在單個(gè)約束文件中以及設(shè)計(jì)中的所有XDC文件(或Tcl腳本)中都是如此。
約束文件的順序很重要。 您必須確保每個(gè)文件中的約束不依賴于另一個(gè)文件的約束。 如果是這種情況,則必須最后讀取包含約束依賴項(xiàng)的文件。
如果兩個(gè)約束文件具有相互依賴關(guān)系,則必須將它們手動(dòng)合并到一個(gè)包含正確序列的文件中,或者將文件分成幾個(gè)單獨(dú)的文件并正確排序。
Constraints Sequence Editing
The Vivado IDE constraints manager saves any edited constraint back to its original location
in the XDC files, but not in Tcl scripts. Any new constraint is saved at the end of the XDC file
marked as target. In many cases, when your constraints set contains several XDC files, the
target constraint file is not the last file in the list, and will not be loaded last when opening
or reloading your design. As a consequence, the constraints sequence saved on disk can be
different from the one you had previously in memory.
Vivado IDE約束管理器將任何已編輯的約束保存回XDC文件中的原始位置,但不會(huì)保存在Tcl腳本中。 任何新約束都保存在標(biāo)記為目標(biāo)的XDC文件的末尾。 在許多情況下,當(dāng)約束集包含多個(gè)XDC文件時(shí),目標(biāo)約束文件不是列表中的最后一個(gè)文件,并且在打開或重新加載設(shè)計(jì)時(shí)不會(huì)最后加載。 因此,保存在磁盤上的約束序列可能與之前在內(nèi)存中的約束序列不同。
IMPORTANT: You must verify that the final sequence stored in the constraint files still works as
expected. If you must modify the sequence, you must modify it by directly editing the constraint files.
This is especially important for timing constraints
重要信息:您必須驗(yàn)證存儲(chǔ)在約束文件中的最終序列是否仍按預(yù)期工作。 如果必須修改序列,則必須通過直接編輯約束文件來修改它。 這對(duì)時(shí)序約束尤為重要。
For example, in Figure 2-3, the file wave_gen_pin.xdc was moved to before the file
wave_gen_timing.xdc by using drag and drop.
在沒有任何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]
Figure 2: XDC Files in the IP Sources
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)目中生成此類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)情況下,在用戶XDC文件之前讀入IP XDC文件。 以這種方式處理它允許IP創(chuàng)建可在XDC中引用的時(shí)鐘對(duì)象。 它還允許您覆蓋由IP內(nèi)核設(shè)置的物理約束,因?yàn)樵贗P之后評(píng)估用戶約束。 對(duì)于依賴于由用戶或其他IP創(chuàng)建的時(shí)鐘對(duì)象的IP核,此順序有一個(gè)例外(例如,get_clocks -of_objects [get_ports clka])。 在這種情況下,在用戶文件之后讀取IP XDC。
此行為由PROCESSING_ORDER屬性控制,為每個(gè)XDC文件設(shè)置:
•EARLY:必須先讀取的文件
•NORMAL:默認(rèn)
•LATE:必須最后讀取的文件
IP XDC將其PROCESSING_ORDER屬性設(shè)置為EARLY或LATE。 沒有哪個(gè) IP提供屬于NORMAL約束組的XDC文件。 對(duì)于屬于同 一PROCESSING_ORDER組的用戶XDC(或Tcl)文件,Vivado IDE中顯示的相對(duì)順序決定了它們的讀取順序。 可以通過移動(dòng)Vivado IDE約束集中的文件或使用reorder_files命令來修改組中的順序。
對(duì)于屬于同一PROCESSING_ORDER組的IP XDC文件,順序由IP內(nèi)核的導(dǎo)入或創(chuàng)建順序確定。 創(chuàng)建項(xiàng)目后,無法更改此順序。
最后,用戶組和IP XDC PROCESSING_ORDER組之間的相對(duì)順序如下:
1.標(biāo)記為EARLY的用戶約束
2.標(biāo)記為EARLY的IP約束(默認(rèn))
3.標(biāo)記為NORMAL的用戶約束
4.標(biāo)記為L(zhǎng)ATE的IP約束(包含時(shí)鐘依賴性)
5.標(biāo)記為L(zhǎng)ATE的用戶約束
注意:將其PROCESSING_ORDER設(shè)置為L(zhǎng)ATE(以便在用戶約束后進(jìn)行處理)的IP XDC文件命名為<IP_NAME> _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)處理兩組約束,如下所示:
•不依賴于時(shí)鐘的約束被分組到XDC文件中,PROCESSING_ORDER設(shè)置為EARLY,
•依賴于時(shí)鐘的約束在PROCESSING_ORDER設(shè)置為L(zhǎng)ATE的XDC文件中分組。
默認(rèn)情況下,用戶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
打開設(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
與用戶XDC文件不同,您無法直接更改屬于同一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約束以這樣的方式編寫,即它們可以作用于IP實(shí)例。
5.查看以特殊方式處理范圍約束的get_ports查詢。
Entering Constraints
The Vivado IDE provides several ways to enter constraints. Unless you directly edit the XDC
file in a text editor, you must open a design database (elaborated, synthesized or
implemented) in order to access the constraints windows in the Vivado IDE.
Vivado IDE提供了幾種輸入約束的方法。 除非您在文本編輯器中直接編輯XDC文件,否則必須打開設(shè)計(jì)數(shù)據(jù)庫(kù)(詳細(xì)說明,綜合或?qū)崿F(xiàn))才能訪問Vivado IDE中的約束窗口。
Saving Constraints in Memory
You must have a design in memory to validate your constraints during editing. When you
edit a constraint using the Vivado IDE user interface, the equivalent XDC command is issued
in the Tcl Console in order to apply it in memory. An edited timing constraint must be
applied in memory before it can be saved to the XDC file.
Before you can run synthesis or implementation, you must save the constraints in memory
back to an XDC file that belongs to the project. The Vivado IDE prompts you to save your
constraints whenever necessary.
您必須在內(nèi)存中設(shè)計(jì)一個(gè)設(shè)計(jì)才能在編輯期間驗(yàn)證您的約束。 使用Vivado IDE用戶界面編輯約束時(shí),將在Tcl控制臺(tái)中發(fā)出等效的XDC命令,以便將其應(yīng)用于內(nèi)存。 必須先將已編輯的時(shí)序約束應(yīng)用于內(nèi)存,然后才能將其保存到XDC文件中。(啥意思?將已編輯的時(shí)序約束應(yīng)用于內(nèi)存然后才能保存XDC文件???)
在運(yùn)行綜合或?qū)崿F(xiàn)之前,必須將內(nèi)存中的約束保存回屬于項(xiàng)目的XDC文件。 Vivado IDE會(huì)在必要時(shí)提示您保存約束。
Do one of the following to save your constraints manually:
執(zhí)行以下操作之一以手動(dòng)保存約束:
•單擊“保存約束”。
•選擇“文件”>“約束”>“保存”。
Note: When you save the in-memory constraints, a dialog box opens to remind you that this could
cause the synthesis and implementation to go out of date. Select the Remember Preference check
box on this dialog box to disable future instances of this warning.
注意:保存內(nèi)存中的約束時(shí),會(huì)打開一個(gè)對(duì)話框,提醒您這可能導(dǎo)致合成和實(shí)現(xiàn)過時(shí)。 選中此對(duì)話框上的“記住首選項(xiàng)”復(fù)選框以禁用此警告的未來實(shí)例。
When you run these commands, Vivado does the following:
• Saves all new constraints to the XDC file marked target in the constraints set
associated with your design.
• Saves all edited constraints back to the XDC file from which they originated.
Note: The constraints management system preserves the original XDC files format as much as
possible.
運(yùn)行這些命令時(shí),Vivado會(huì)執(zhí)行以下操作:
•將所有新約束保存到與設(shè)計(jì)關(guān)聯(lián)的約束集中標(biāo)記為目標(biāo)的XDC文件。
•將所有已編輯的約束保存回源自它們的XDC文件。
注意:約束管理系統(tǒng)盡可能保留原始XDC文件格式。
Constraints Editing Flow Options
Figure 2-7 shows the recommended flow options. Do not use both options at the same
time. Mixing these options might cause you to lose constraints. The recommended flow
options are:
圖2-7顯示了推薦的流量選項(xiàng)。 不要同時(shí)使用這兩個(gè)選項(xiàng)。 混合這些選項(xiàng)可能會(huì)導(dǎo)致您失去約束。 推薦的流程選項(xiàng)包括:
• User Interface Option
• Hand Edit Option
User Interface Option
Because the Vivado IDE manages your constraints, you must not edit your XDC files at the
same time. When the Vivado IDE saves the memory content, the following occurs:
• The modified constraints replace the original constraints in their original file.
• The new constraints are appended to the file marked as target.
• All manual edits in the XDC files are overwritten.
用戶界面選項(xiàng)
由于Vivado IDE管理您的約束,因此您不能同時(shí)編輯XDC文件。 當(dāng)Vivado IDE保存內(nèi)存內(nèi)容時(shí),會(huì)發(fā)生以下情況:
•修改的約束替換原始文件中的原始約束。
•新約束將附加到標(biāo)記為目標(biāo)的文件中。
•將覆蓋XDC文件中的所有手動(dòng)編輯。
Hand Edit Option
When you use the Hand Edit option, you are in charge of editing and maintaining the XDC
files. While you will probably use the Tcl Console to verify the syntax of some constraints,
you must discard the changes made in memory when closing or reloading your design.
In case of a conflict when saving the constraints, you are prompted to choose one of the
following:
• Discarding the changes made in memory
• Saving the changes in a new file
• Overwriting the XDC files
手編輯選項(xiàng)
使用“手動(dòng)編輯”選項(xiàng)時(shí),您負(fù)責(zé)編輯和維護(hù)XDC文件。 雖然您可能會(huì)使用Tcl控制臺(tái)來驗(yàn)證某些約束的語(yǔ)法,
關(guān)閉或重新加載設(shè)計(jì)時(shí),必須放棄在內(nèi)存中所做的更改。
如果在保存約束時(shí)發(fā)生沖突,系統(tǒng)會(huì)提示您選擇其中一個(gè)
以下:
•放棄在內(nèi)存中進(jìn)行的更改
•將更改保存在新文件中
•覆蓋XDC文件
Constraints creation is iterative. You can use IDE editors in some cases, and hand edit the
constraint files in others.
在圖2-7中描述的每次迭代中,不要同時(shí)使用這兩個(gè)選項(xiàng)。
如果在兩個(gè)選項(xiàng)之間切換,則必須先保存約束或重新加載設(shè)計(jì),以確保內(nèi)存中的約束與XDC文件正確同步。
Pin Assignment
To create and edit existing top-level ports placement when using the RTL Analysis,
Synthesis, or Implementation views:
在使用RTL Analysis,Synthesis或Implementation視圖時(shí)創(chuàng)建和編輯現(xiàn)有的頂級(jí)端口放置:
1. Select the I/O Planning pre-configured layout.
2. Open the windows shown in Table 2-3.
有關(guān)引腳分配的更多信息,請(qǐng)參閱“Vivado Design Suite用戶指南”中的此鏈接:
I / O和時(shí)鐘規(guī)劃(UG899)[參考3]。
布局規(guī)劃
在使用RTL分析,綜合或?qū)嵤┮晥D時(shí)創(chuàng)建和編輯Pblock:
1.選擇布局規(guī)劃預(yù)配置布局。
To create cell placement constraints on a particular BEL or SITE:
1. Select the cell in the Netlist view.
2. Drag and drop the cell to the target location in the Device view.
要在特定的BEL或SITE上創(chuàng)建單元格放置約束:
1.在“網(wǎng)表”視圖中選擇單元格。
2.將單元格拖放到“設(shè)備”視圖中的目標(biāo)位置。
有關(guān)布局規(guī)劃的更多信息,請(qǐng)參閱“Vivado Design Suite用戶指南”中的以下鏈接:
設(shè)計(jì)分析和關(guān)閉技術(shù)(UG906)[參考文獻(xiàn)4]。
Timing Constraints Wizard
The Timing Constraints Wizard identifies missing timing constraints on a synthesized or
implemented design. It analyzes the netlist, the clock nets connectivity, and the existing
timing constraints in order to provide recommendations as per the UltraFast Design
Methodology Guide for the Vivado Design Suite (UG949) [Ref 5]. Three categories of
constraints are covered by the following 11 pages of the wizard, followed by a summary.
The following steps are included:
時(shí)序約束向?qū)?br />時(shí)序約束向?qū)ёR(shí)別合成或?qū)崿F(xiàn)的設(shè)計(jì)上缺少的時(shí)序約束。 它分析網(wǎng)表,時(shí)鐘網(wǎng)絡(luò)連接和現(xiàn)有的時(shí)序約束,以便根據(jù)Vivado設(shè)計(jì)套件(UG949)的UltraFast設(shè)計(jì)方法指南[參考文獻(xiàn)5]提供建議。 向?qū)У囊韵?1頁(yè)包含三類約束,后面是摘要。
包括以下步驟:
在每個(gè)步驟中,您可以接受建議的約束或通過選中或取消選中每個(gè)建議的約束來修改列表。 但是,在向?qū)У脑缙谌∠x中建議的約束可能會(huì)阻止在后續(xù)步驟中識(shí)別其他缺少的約束。 例如,如果您決定跳過創(chuàng)建時(shí)鐘,則向?qū)⒉粫?huì)識(shí)別并推薦任何引用此時(shí)鐘或其自動(dòng)派生時(shí)鐘的約束。
向?qū)У淖詈笠豁?yè)提供了將要?jiǎng)?chuàng)建的約束的摘要。 您可以單擊每個(gè)單獨(dú)的超鏈接以查看約束詳細(xì)信息,或在退出向?qū)Ш笤凇皶r(shí)序約束”窗口中顯示新約束。
您還可以選擇在單擊“完成”后生成以下建議的報(bào)告,以驗(yàn)證設(shè)計(jì)是否完全受約束:
Create Timing Summary report: Timing slack is reported with the new constraints, in
addition to a check_timing report. Timing violations will likely display if the period
or I/O delay constraints that you entered are too difficult.
• Create Check Timing report: This report identifies missing or inappropriate
constraints by running the check_timing command.
• Create DRC Report using only Timing Checks: this report runs the Timing DRCs.
重要信息:除非單擊“取消”,否則新添加的約束將自動(dòng)保存到目標(biāo)XDC文件中。 退出向?qū)Ш,您可以在Timing Constraints窗口中編輯或刪除新約束。
The Timing Constraint Wizard does not recommend a constraint if it introduces unsafe timing analysis. Also, the wizard does not fix inappropriate constraints that already existed when loading the design in memory. Nevertheless, some invalid constraints might become valid after creating all the missing clocks when using Vivado Design Suite in project mode;
for more details, see Constraints Processing Order and Invalid Constraints, below. Also, after using the wizard, if check_timing or report_drc still flag some constraints issues, it is usually due to a constraint problem that already existed in the source XDC files. You must address these problems directly instead of using the wizard to resolve them.
如果定時(shí)約束向?qū)б肓瞬话踩臅r(shí)序分析,則不建議使用約束。 此外,向?qū)Р粫?huì)修復(fù)在內(nèi)存中加載設(shè)計(jì)時(shí)已存在的不適當(dāng)約束。 然而,在項(xiàng)目模式下使用Vivado Design Suite時(shí),創(chuàng)建所有丟失的時(shí)鐘后,某些無效約束可能會(huì)生效;
有關(guān)更多詳細(xì)信息,請(qǐng)參閱下面的約束處理順序和無效約束。 此外,在使用向?qū)е,如果check_timing或report_drc仍標(biāo)記一些約束問題,則通常是由于源XDC文件中已存在的約束問題。 您必須直接解決這些問題,而不是使用向?qū)斫鉀Q它們。
約束處理順序和無效約束
時(shí)序約束向?qū)Ыㄗh缺少定義時(shí)鐘或引用時(shí)鐘的約束,這些約束將在項(xiàng)目模式下保存在目標(biāo)XDC文件的末尾,或者在其他模式的所有約束結(jié)束時(shí)保存。出于這個(gè)原因,你必須明白
以下規(guī)則:
•項(xiàng)目模式:在啟動(dòng)“計(jì)時(shí)約束”向?qū)е埃仨氈付繕?biāo)XDC文件,其處理順序設(shè)置為“正!。目標(biāo)XDC文件必須屬于在內(nèi)存中打開且當(dāng)前選定的設(shè)計(jì)的約束集。目標(biāo)XDC文件在其他XDC文件中的位置很重要,因?yàn)樗付艘院髴?yīng)用和保存建議約束的位置。此外,向?qū)?huì)嘗試重新應(yīng)用屬于目標(biāo)之后解析的XDC文件的任何無效約束
XDC文件以提供最完整和準(zhǔn)確的建議。
例如,考慮來自synth_1的網(wǎng)表在內(nèi)存中使用約束集constr_1運(yùn)行。此約束集包含序列a.xdc,b.xdc和c.xdc中的三個(gè)XDC文件。如果選擇b.xdc作為目標(biāo)XDC文件并且每個(gè)文件包含無效約束,則Timing Constraints向?qū)?yīng)用推薦的時(shí)鐘,然后在繼續(xù)執(zhí)行下一步并發(fā)現(xiàn)其他缺少的約束之前從c.xdc重新應(yīng)用無效約束。
您無法在這些模式下指定目標(biāo)XDC文件,因此“時(shí)序約束”向?qū)?huì)在約束序列的最后位置推薦并應(yīng)用新約束。 這相當(dāng)于在Tcl控制臺(tái)中輸入新約束或通過Timing Constraints窗口輸入新約束。 在這些模式下,向?qū)Р粫?huì)嘗試重新應(yīng)用無效約束。 如果需要在整個(gè)約束序列中更早地應(yīng)用新約束以解決約束依賴性或優(yōu)先級(jí)問題,則必須手動(dòng)編輯約束序列。
以下是如何手動(dòng)編輯約束的示例
You cannot specify a target XDC file in these modes, so the Timing Constraints wizard recommends and applies new constraints at the last position of the constraints sequence. This is equivalent to entering new constraints in the Tcl Console or via the Timing Constraints window. In these modes, the wizard does not attempt to re-apply invalid constraints. If the new constraints need to be applied earlier in the overall constraints sequence in order to resolve constraints dependencies or precedence issues, you must edit the constraints sequence manually.
您無法在這些模式下指定目標(biāo)XDC文件,因此“時(shí)序約束”向?qū)?huì)在約束序列的最后位置推薦并應(yīng)用新約束。 這相當(dāng)于在Tcl控制臺(tái)中輸入新約束或通過Timing Constraints窗口輸入新約束。 在這些模式下,向?qū)Р粫?huì)嘗試重新應(yīng)用無效約束。 如果需要在整個(gè)約束序列中更早地應(yīng)用新約束以解決約束依賴性或優(yōu)先級(jí)問題,則必須手動(dòng)編輯約束序列。
您可以使用Timing Constraints窗口查看更新的時(shí)序約束序列。 查看新約束后,可以將序列保存到DCP中
向?qū)Т蜷_時(shí)可用的報(bào)告功能當(dāng)“時(shí)序約束”向?qū)Т蜷_時(shí),它會(huì)阻止Vivado IDE中的大多數(shù)操作,包括使用Tcl控制臺(tái)或運(yùn)行時(shí)序分析,以避免數(shù)據(jù)庫(kù)差異。 向?qū)Т翱谑冀K位于其他Vivado IDE窗口的前面。 如果需要訪問Vivado IDE菜單或窗口,則必須將向?qū)Т翱谝频絺?cè)面。
Timing Constraints向?qū)Т蜷_時(shí),只有以下功能可用:
•報(bào)告和可視化時(shí)鐘網(wǎng)絡(luò)
Most pages of the wizard have buttons to generate and access the clock network report in order to visualize the clock topologies, their source point, and the shared segments for some of the clocks.
向?qū)У拇蠖鄶?shù)頁(yè)面都有按鈕來生成和訪問時(shí)鐘網(wǎng)絡(luò)報(bào)告,以便可視化時(shí)鐘拓?fù)洌鼈兊脑袋c(diǎn)以及某些時(shí)鐘的共享段。
有關(guān)時(shí)鐘網(wǎng)絡(luò)報(bào)告的更多詳細(xì)信息,請(qǐng)參閱“Vivado設(shè)計(jì)套件用戶指南:設(shè)計(jì)分析和關(guān)閉技術(shù)”(UG906)[參考4]。
Searching a name in source files or an object in the design in memory
The Find and Find In Files dialog boxes are available from the Edit menu. You can use these dialog boxes to retrieve some information about the design while entering the constraints in the wizard.
• Creating and Viewing schematics
You can select design objects in the main Vivado IDE window and visualize them in schematics. All schematics features are available. Only the last step of the Timing Constraints wizard, Asynchronous Clock Domain Crossings, supports convenient schematics cross-probing when selecting one or several entries in the Timing Paths tab.
Refer to the Vivado Design Suite User Guide: Using the Vivado IDE (UG893) [Ref 7] for more info on using schematics.
在源文件中搜索名稱或在內(nèi)存中搜索設(shè)計(jì)中的對(duì)象
“編輯”菜單中提供了“查找和查找文件”對(duì)話框。 在向?qū)е休斎爰s束時(shí),可以使用這些對(duì)話框檢索有關(guān)設(shè)計(jì)的一些信息。
•創(chuàng)建和查看原理圖
您可以在主Vivado IDE窗口中選擇設(shè)計(jì)對(duì)象,并在原理圖中將其可視化。 所有原理圖功能均可用。 只有時(shí)序約束向?qū)У淖詈笠徊,異步時(shí)鐘域交叉,在“時(shí)序路徑”選項(xiàng)卡中選擇一個(gè)或多個(gè)條目時(shí),支持方便的原理圖交叉探測(cè)。
有關(guān)使用原理圖的更多信息,請(qǐng)參閱“Vivado Design Suite用戶指南:使用Vivado IDE(UG893)[參考7]”。
Visualizing constraints in memory with the Timing Constraints window Each page of the wizard includes a tab that shows the existing constraints of the same type as recommended by the step. This is convenient for quickly reviewing the details of constraints already created in the XDC files. For a complete view of all timing constraints in memory, the Timing Constraints window shows the full sequence of constraints, organized by XDC file, including scoping information. It also displays the invalid constraints.
使用“時(shí)序約束”窗口可視化內(nèi)存中的約束向?qū)У拿總(gè)頁(yè)面都包含一個(gè)選項(xiàng)卡,該選項(xiàng)卡顯示與步驟建議的相同類型的現(xiàn)有約束。 這對(duì)于快速查看已在XDC文件中創(chuàng)建的約束的詳細(xì)信息很方便。 有關(guān)內(nèi)存中所有時(shí)序約束的完整視圖,Timing Constraints窗口顯示由XDC文件組織的完整約束序列,包括作用域信息。 它還顯示無效約束。
Constraints Editing within the Wizard
Each step of the wizard can recommend several constraints. Depending on the constraint,you must take one of the following actions:
• Uncheck the constraints you do not want to create, using one of the following
methods:
° Remove each constraint from the list, one at a time, by unchecking each line.
° Remove all constraints by unchecking the upper left check box of the table.
約束在向?qū)е芯庉?br />向?qū)У拿總(gè)步驟都可以推薦幾個(gè)約束。 根據(jù)約束,您必須執(zhí)行以下操作之一:
•使用以下方法之一取消選中您不想創(chuàng)建的約束
方法:
°通過取消選中每一行,從列表中刪除每個(gè)約束,一次一個(gè)。
°通過取消選中表格的左上角復(fù)選框來刪除所有約束。
提示:或者,您可以右鍵單擊約束,然后選擇“不創(chuàng)建約束”,如圖所示
圖2-11。
在圖2-12中,clk1和ddr_clk_in未選中,將被跳過。
通過單擊顯示未定義的單元格輸入缺少的值(例如,圖2-12中的clk2和clk3的頻率或周期值)。
您可以通過選擇相應(yīng)的行并單擊Edit Selected Rows按鈕同時(shí)編輯多個(gè)約束,如圖2-13所示。
接下來,填寫所有必填字段,如Frequency和Period,如圖2-14所示。
一次編輯多個(gè)約束對(duì)輸入和輸出延遲特別有用
限制。
•如果不需要采取任何措施,只需查看約束。
檢查并完成所有已檢查的建議約束后,單擊“下一步”繼續(xù)下一頁(yè)。 您錯(cuò)過的任何條目都會(huì)阻止向?qū)нM(jìn)入下一步。
您可以使用“后退”按鈕重新訪問頁(yè)面。 如果在上一頁(yè)上編輯任何約束并單擊“下一步”,則向?qū)⒅匦路治鲈O(shè)計(jì)并相應(yīng)地推薦新約束。 在大多數(shù)情況下,先前建議的約束不受影響
更改已恢復(fù)。 如果只查看上一頁(yè)而不修改任何建議的約束,則向?qū)Р粫?huì)重新運(yùn)行任何分析,這通常會(huì)節(jié)省運(yùn)行時(shí)間。
重要信息:您無法使用“時(shí)序約束”向?qū)Ь庉嫭F(xiàn)有時(shí)序約束。 相反,您必須使用Timing Constraints窗口。
Constraints Recommended by the Wizard
Primary Clocks
Two categories of clocks are identified by the wizard, as shown in Figure 2-15.
向?qū)?biāo)識(shí)兩類時(shí)鐘,如圖2-15所示。
計(jì)算時(shí)序松弛所需的主要時(shí)鐘
建議約束表中顯示建立/保持/恢復(fù)/刪除檢查。
•僅執(zhí)行脈沖寬度檢查所需的時(shí)鐘(min_period,max_period,max_skew,min_low_pulse_width和min_high_pulse_width)出現(xiàn)在“僅限脈沖寬度檢查限制”表中。 默認(rèn)情況下,這些時(shí)鐘未選中,因?yàn)樗鼈儍H用于報(bào)告目的而不會(huì)影響
實(shí)施工具的結(jié)果質(zhì)量。
向?qū)?huì)自動(dòng)識(shí)別約束的正確時(shí)鐘源點(diǎn)。 它對(duì)應(yīng)于時(shí)鐘樹根,其中時(shí)鐘信號(hào)實(shí)際進(jìn)入設(shè)計(jì)。 在大多數(shù)情況下,時(shí)鐘源點(diǎn)是輸入時(shí)鐘端口,在某些特殊情況下,它是沒有定時(shí)弧的基元的輸出。 例如,在7系列設(shè)備中,向?qū)?huì)識(shí)別GT_CHANNEL基元輸出上缺少的主時(shí)鐘。 對(duì)于UltraScale™器件,Vivado Design Suite能夠根據(jù)輸入時(shí)鐘特性以及GT_CHANNEL配置和連接自動(dòng)導(dǎo)出GT_CHANNEL輸出時(shí)鐘。 因此,向?qū)?huì)建議位于設(shè)計(jì)邊界上GT_CHANNEL單元上游的主時(shí)鐘。
生成的時(shí)鐘
Timing Constraints(時(shí)序約束)向?qū)Ыㄗh在順序單元的輸出上直接或通過某些互連邏輯驅(qū)動(dòng)其他順序單元的時(shí)鐘引腳時(shí),創(chuàng)建生成時(shí)鐘。 與PLL或MMCM不同,用戶邏輯不能乘以主時(shí)鐘的頻率,因此向?qū)H提供指定除法系數(shù)的選項(xiàng),如圖2-16所示。
當(dāng)多個(gè)主時(shí)鐘到達(dá)生成的時(shí)鐘源點(diǎn)時(shí),向?qū)⑹褂梦ㄒ坏拿Q和對(duì)各個(gè)主時(shí)鐘的清晰引用來創(chuàng)建所有相應(yīng)的生成時(shí)鐘。 圖2-16說明了兩個(gè)時(shí)鐘(clk3和clk4)到達(dá)的情況
順序單元FDIV_Reg。 因此,建議使用兩個(gè)生成的時(shí)鐘約束(FDIV和FDIV_1)。
注意:某些時(shí)鐘拓?fù)洌ɡ鐣r(shí)鐘路徑上的級(jí)聯(lián)寄存器)可能需要多次運(yùn)行“時(shí)序約束”向?qū)Р拍馨l(fā)現(xiàn)所有丟失的生成時(shí)鐘。
轉(zhuǎn)發(fā)時(shí)鐘
Timing Constraints向?qū)Ыㄗh在輸出端口上生成時(shí)鐘約束,該輸出端口由具有常量輸入的雙倍數(shù)據(jù)速率寄存器驅(qū)動(dòng)。 基于輸入恒定連接性,將生成的時(shí)鐘相位調(diào)整為正(0度相移)或反相(180度相移)。 約束中使用的主時(shí)鐘是到達(dá)雙倍數(shù)據(jù)速率寄存器的時(shí)鐘引腳的時(shí)鐘。 查看源時(shí)鐘
圖2-17中推薦約束表的列。
對(duì)于7系列器件系列,向?qū)ёR(shí)別的拓?fù)浣Y(jié)構(gòu)如下所示
圖2-18。 主時(shí)鐘或輸出緩沖器的性質(zhì)沒有限制。
對(duì)于UltraScale器件系列,ODDR和ODDRE1原語(yǔ)會(huì)自動(dòng)重定向到OSERDESE3,其屬性為ODDR_MODE = TRUE。 向?qū)ёR(shí)別圖2-19中所示的拓?fù),其中OSERDESE3 / D [0]連接到1和
OSERDESE3 / D [4]連接到0(無相移)
外部反饋延遲
Timing Constraints(時(shí)序約束)向?qū)Х治鲈O(shè)計(jì)中存在的MMCM和PLL單元的反饋環(huán)路連接。 建議使用外部延遲約束(最小和最大)
當(dāng)CLKFBIN和CLKFBOUT引腳通過IO緩沖器和MMCM或PLL屬性COMPENSATION = EXTERNAL連接到設(shè)計(jì)端口時(shí)。 圖2-20說明了推薦的外部延遲約束。
圖2-21顯示了具有外部反饋路徑電路的典型MMCM。
In the current Vivado Design Suite release, the Timing Constraints wizard cannot
recommend external delay constraints when there is a sequential cell in the feedback path,
such as ODDR, which is used for generating a forwarded clock. In this case, you must create
the external delay constraints manually or using the Timing Constraints window after
exiting the wizard.
在當(dāng)前的Vivado Design Suite版本中,當(dāng)反饋路徑中存在連續(xù)單元(例如ODDR,用于生成轉(zhuǎn)發(fā)時(shí)鐘)時(shí),Timing Constraints向?qū)Р唤ㄗh使用外部延遲約束。 在這種情況下,您必須在退出向?qū)Ш笫謩?dòng)或使用Timing Constraints窗口創(chuàng)建外部延遲約束。
Input Delays
The Timing Constraints wizard analyzes all paths from input ports to identify their
destination clock inside the design and their active edges. Based on this information, the
wizard recommends basic system synchronous input delay constraints that are based on the
XDC templates available in the Vivado IDE (see XDC Templates, page 55 for templates). The
waveform associated with the selected template is displayed at the bottom of the window
in the Waveform tab when you select a constraint entry in the Recommended Constraints
table.
輸入延遲
Timing Constraints(時(shí)序約束)向?qū)Х治鰜碜暂斎攵丝诘乃新窂剑宰R(shí)別設(shè)計(jì)中的目標(biāo)時(shí)鐘及其活動(dòng)邊緣。 根據(jù)此信息,向?qū)?huì)建議基于的基本系統(tǒng)同步輸入延遲約束
Vivado IDE中提供的XDC模板(有關(guān)模板,請(qǐng)參閱XDC模板,第55頁(yè))。 在“推薦約束”表中選擇約束條目時(shí),與所選模板關(guān)聯(lián)的波形將顯示在“波形”選項(xiàng)卡中窗口的底部。
圖2-22顯示了向?qū)岢霾⒂捎脩暨M(jìn)行部分編輯的幾個(gè)輸入約束的示例。
For each constraint, you can edit three characteristics in order to specify the appropriate waveform that corresponds to the actual interface timing on the board:
• Synchronous describes the nature of the clock-data relationship.
° System (for System Synchronous interface): use this setting when the data is launched and captured by different clock edges that are 1 period or ½ period apart.
° Source (for Source Synchronous interface): use this setting when the data is launched and captured by the same clock edge.
• Alignment describes the data transition alignment with respect to the active clock edge.
° For System Synchronous interfaces only:
- Edge: use this setting when the clock and data transition at the same time.
對(duì)于每個(gè)約束,您可以編輯三個(gè)特征,以指定與電路板上實(shí)際接口時(shí)序?qū)?yīng)的相應(yīng)波形:
•同步描述時(shí)鐘數(shù)據(jù)關(guān)系的性質(zhì)。
°系統(tǒng)(用于系統(tǒng)同步接口):當(dāng)數(shù)據(jù)通過1個(gè)周期或相隔1/2周期的不同時(shí)鐘邊沿啟動(dòng)和捕獲時(shí)使用此設(shè)置。
°Source(用于源同步接口):當(dāng)數(shù)據(jù)以相同的時(shí)鐘邊沿啟動(dòng)和捕獲時(shí)使用此設(shè)置。
•對(duì)齊描述了與活動(dòng)時(shí)鐘邊沿相關(guān)的數(shù)據(jù)轉(zhuǎn)換對(duì)齊。
°僅適用于系統(tǒng)同步接口:
- Edge:當(dāng)時(shí)鐘和數(shù)據(jù)同時(shí)轉(zhuǎn)換時(shí)使用此設(shè)置。
僅適用于源同步接口:
- 中心:當(dāng)時(shí)鐘在數(shù)據(jù)有效窗口中間轉(zhuǎn)換時(shí)使用此設(shè)置。
- Edge Direct:當(dāng)時(shí)鐘在數(shù)據(jù)有效窗口的開頭轉(zhuǎn)換時(shí)使用此設(shè)置。
- Edge MMCM:當(dāng)時(shí)鐘在數(shù)據(jù)有效窗口結(jié)束時(shí)轉(zhuǎn)換時(shí)使用此設(shè)置。
•Data Rate和Edge描述了受模板約束的活動(dòng)時(shí)鐘邊沿。 向?qū)Ыㄗh的默認(rèn)值基于捕獲順序單元的活動(dòng)時(shí)鐘邊沿。
°Single Rise:使用此設(shè)置用于只有上升時(shí)鐘沿啟動(dòng)FPGA外部數(shù)據(jù)的情況。
°Single Fall:使用此設(shè)置用于僅下降時(shí)鐘邊沿FPGA外部數(shù)據(jù)啟動(dòng)的情況。
°Dual:使用此設(shè)置用于上升和下降時(shí)鐘沿啟動(dòng)FPGA外部數(shù)據(jù)的情況。
You can also choose to generate the following recommended reports upon clicking Finish to verify that the design is completely and properly constrained:
• Create Timing Summary report: Timing slack is reported with the new constraints, in addition to a check_timing report. Timing violations will likely display if the period or I/O delay constraints that you entered are too difficult.
• Create Check Timing report: This report identifies missing or inappropriate constraints by running the check_timing command.
• Create DRC Report using only Timing Checks: this report runs the Timing DRCs.
您還可以選擇在單擊“完成”后生成以下建議的報(bào)告,以驗(yàn)證設(shè)計(jì)是否完全受約束:
•創(chuàng)建時(shí)序摘要報(bào)告:除了check_timing報(bào)告之外,還會(huì)使用新約束報(bào)告時(shí)序松弛。 如果您輸入的周期或I / O延遲限制太難,則可能會(huì)顯示時(shí)序違規(guī)。
•創(chuàng)建檢查時(shí)間報(bào)告:此報(bào)告通過運(yùn)行check_timing命令來識(shí)別缺失或不適當(dāng)?shù)募s束。
•僅使用時(shí)序檢查創(chuàng)建DRC報(bào)告:此報(bào)告運(yùn)行時(shí)序DRC。
重要信息:除非單擊“取消”,否則新添加的約束將自動(dòng)保存到目標(biāo)XDC文件中。 退出后,您可以在Timing Constraints窗口中編輯或刪除新約束
向?qū)?huì)自動(dòng)識(shí)別約束的正確時(shí)鐘源點(diǎn)。 它對(duì)應(yīng)于時(shí)鐘樹根,其中時(shí)鐘信號(hào)實(shí)際進(jìn)入設(shè)計(jì)。 在大多數(shù)情況下,時(shí)鐘源點(diǎn)是輸入時(shí)鐘端口,在某些特殊情況下,它是沒有定時(shí)弧的基元的輸出。 例如,在7系列設(shè)備中,向?qū)?huì)識(shí)別GT_CHANNEL基元輸出上缺少的主時(shí)鐘。 對(duì)于UltraScale™器件,Vivado Design Suite能夠根據(jù)輸入時(shí)鐘特性和GT_CHANNEL配置和連接自動(dòng)導(dǎo)出GT_CHANNEL輸出時(shí)鐘。 因此,向?qū)?huì)建議位于設(shè)計(jì)邊界上GT_CHANNEL單元上游的主時(shí)鐘。
當(dāng)多個(gè)主時(shí)鐘到達(dá)生成的時(shí)鐘源點(diǎn)時(shí),向?qū)⑹褂梦ㄒ坏拿Q和對(duì)各個(gè)主時(shí)鐘的清晰引用來創(chuàng)建所有相應(yīng)的生成時(shí)鐘。 圖2-16說明了兩個(gè)時(shí)鐘(clk3和clk4)到達(dá)的情況
順序單元FDIV_Reg。 因此,建議使用兩個(gè)生成的時(shí)鐘約束(FDIV和FDIV_1)。
注意:某些時(shí)鐘拓?fù)洌ɡ鐣r(shí)鐘路徑上的級(jí)聯(lián)寄存器)可能需要多次運(yùn)行“時(shí)序約束”向?qū)Р拍馨l(fā)現(xiàn)所有丟失的生成時(shí)鐘。
轉(zhuǎn)發(fā)時(shí)鐘
Timing Constraints向?qū)Ыㄗh在輸出端口上生成時(shí)鐘約束,該輸出端口由具有常量輸入的雙倍數(shù)據(jù)速率寄存器驅(qū)動(dòng)。 基于輸入恒定連接性,將生成的時(shí)鐘相位調(diào)整為正(0度相移)或反相(180度相移)。 約束中使用的主時(shí)鐘是到達(dá)雙倍數(shù)據(jù)速率寄存器的時(shí)鐘引腳的時(shí)鐘。 查看源時(shí)鐘
圖2-17中推薦約束表的列。
對(duì)于7系列器件系列,向?qū)ёR(shí)別的拓?fù)浣Y(jié)構(gòu)如下所示
圖2-18。 主時(shí)鐘或輸出緩沖器的性質(zhì)沒有限制。
For the UltraScale device family, the ODDR and ODDRE1 primitives are automatically
retargeted to OSERDESE3 with the property ODDR_MODE=TRUE. The wizard recognizes the
topology shown in Figure 2-19, where OSERDESE3/D[0] is connected to 1 and
OSERDESE3/D[4] is connected to 0 (no phase-shift).
對(duì)于UltraScale器件系列,ODDR和ODDRE1原語(yǔ)會(huì)自動(dòng)重定向到OSERDESE3,其屬性為ODDR_MODE = TRUE。向?qū)ёR(shí)別圖2-19中所示的拓?fù),其中OSERDESE3 / D [0]連接到1,OSERDESE3 / D[4]連接到0(無相移)。
外部反饋延遲
Timing Constraints(時(shí)序約束)向?qū)Х治鲈O(shè)計(jì)中存在的MMCM和PLL單元的反饋環(huán)路連接。 建議使用外部延遲約束(最小和最大)
當(dāng)CLKFBIN和CLKFBOUT引腳通過IO緩沖器和MMCM或PLL屬性COMPENSATION = EXTERNAL連接到設(shè)計(jì)端口時(shí)。 圖2-20說明了推薦的外部延遲約束。
Timing Constraints(時(shí)序約束)向?qū)Х治鰜碜暂斎攵丝诘乃新窂剑宰R(shí)別設(shè)計(jì)中的目標(biāo)時(shí)鐘及其活動(dòng)邊緣。 根據(jù)此信息,向?qū)?huì)建議基于的基本系統(tǒng)同步輸入延遲約束
Vivado IDE中提供的XDC模板(有關(guān)模板,請(qǐng)參閱XDC模板,第55頁(yè))。 在“推薦約束”表中選擇約束條目時(shí),與所選模板關(guān)聯(lián)的波形將顯示在“波形”選項(xiàng)卡中窗口的底部。
圖2-22顯示了向?qū)岢霾⒂捎脩暨M(jìn)行部分編輯的幾個(gè)輸入約束的示例。
對(duì)于每個(gè)約束,您可以編輯三個(gè)特征,以指定與電路板上實(shí)際接口時(shí)序?qū)?yīng)的相應(yīng)波形:
•同步描述時(shí)鐘數(shù)據(jù)關(guān)系的性質(zhì)。
°系統(tǒng)(用于系統(tǒng)同步接口):當(dāng)數(shù)據(jù)通過1個(gè)周期或相隔1/2周期的不同時(shí)鐘邊沿啟動(dòng)和捕獲時(shí)使用此設(shè)置。
°Source(用于源同步接口):當(dāng)數(shù)據(jù)以相同的時(shí)鐘邊沿啟動(dòng)和捕獲時(shí)使用此設(shè)置。
•對(duì)齊描述了與活動(dòng)時(shí)鐘邊沿相關(guān)的數(shù)據(jù)轉(zhuǎn)換對(duì)齊。
°僅適用于系統(tǒng)同步接口:
- Edge:當(dāng)時(shí)鐘和數(shù)據(jù)同時(shí)轉(zhuǎn)換時(shí)使用此設(shè)置。
輸出延遲
與輸入延遲步驟類似,時(shí)序約束向?qū)Х治鏊休敵龆丝诘穆窂,以識(shí)別設(shè)計(jì)中的源時(shí)鐘及其活動(dòng)邊沿。 模板選擇規(guī)則與輸入延遲中描述的相同。 圖2-24顯示了向?qū)岢龅膸讉(gè)輸出約束,并由用戶進(jìn)行了部分編輯。
對(duì)于每個(gè)約束,可以編輯三個(gè)特征,以便指定與板上實(shí)際接口時(shí)序相對(duì)應(yīng)的適當(dāng)波形:
•Synchronous描述時(shí)鐘數(shù)據(jù)關(guān)系的性質(zhì)(有關(guān)詳細(xì)信息,請(qǐng)參閱輸入延遲,頁(yè)面33)。
•對(duì)齊描述了與活動(dòng)時(shí)鐘邊沿相關(guān)的數(shù)據(jù)轉(zhuǎn)換對(duì)齊。
°建立/保持:當(dāng)根據(jù)FPGA外部的數(shù)據(jù)有效窗口時(shí)序特性指定模板延遲參數(shù)時(shí),使用此設(shè)置。
°Skew(僅限源同步):根據(jù)FPGA的輸出引腳的偏斜要求指定模板延遲參數(shù)時(shí),使用此設(shè)置。
•Data Rate和Edge描述了受模板約束的活動(dòng)時(shí)鐘邊沿(請(qǐng)參閱
輸入延遲,第33頁(yè)了解更多詳情)。
與推薦的輸入延遲約束一樣,參考時(shí)鐘通常是電路板時(shí)鐘,但以下情況除外:
•電路板時(shí)鐘和輸出路徑內(nèi)部時(shí)鐘具有不同的時(shí)鐘周期。輸出約束引用與內(nèi)部時(shí)鐘具有相同波形的虛擬時(shí)鐘,以便以1周期路徑要求執(zhí)行設(shè)置分析。
自動(dòng)創(chuàng)建虛擬時(shí)鐘。
•與電路板時(shí)鐘相比,輸出路徑內(nèi)部時(shí)鐘具有負(fù)相移。該向?qū)褂锰摂M時(shí)鐘作為參考時(shí)鐘。使用與電路板時(shí)鐘相同的波形自動(dòng)創(chuàng)建虛擬時(shí)鐘。此外,向?qū)н指定虛擬時(shí)鐘和內(nèi)部時(shí)鐘之間的多周期路徑約束,以將默認(rèn)分析調(diào)整為1個(gè)周期+設(shè)置的相移量。虛擬時(shí)鐘和多周期路徑約束的組合為Vivado Design Suite定時(shí)器提供了更簡(jiǎn)單的約束,可以處理并且只能影響輸出端口
那個(gè)對(duì)虛擬時(shí)鐘的引用。
注意:對(duì)于正相移,不需要虛擬時(shí)鐘和多周期路徑約束,因?yàn)槟J(rèn)設(shè)置路徑要求是1個(gè)周期減去相移量。
A forwarded clock has been identified for timing the output path based on the shared
clocking connectivity.
The forwarded clock must have been created during the third step of the wizard
"Forwarded Clocks," or else the board clock or a virtual clock will be used as the output
delay constraint reference clock.
已經(jīng)識(shí)別出轉(zhuǎn)發(fā)時(shí)鐘,用于基于共享時(shí)鐘連接對(duì)輸出路徑進(jìn)行定時(shí)。
必須在向?qū)А稗D(zhuǎn)發(fā)時(shí)鐘”的第三步中創(chuàng)建轉(zhuǎn)發(fā)時(shí)鐘,否則電路板時(shí)鐘或虛擬時(shí)鐘將用作輸出延遲約束參考時(shí)鐘。
時(shí)間限制電子表格
時(shí)序約束電子表格顯示特定類型的所有現(xiàn)有約束的詳細(xì)信息。使用時(shí)序約束電子表格查看和編輯約束選項(xiàng)。
該小組的最后兩列顯示:
•源文件:約束來自的XDC文件或Tcl腳本的名稱
•Scoped Cell:應(yīng)用約束時(shí)的當(dāng)前實(shí)例的名稱。 此名稱通常對(duì)應(yīng)于使用專用約束傳遞的IP實(shí)例。 有關(guān)更多信息,請(qǐng)參閱約束范圍,第67頁(yè)。
通過雙擊電子表格的最后一行,可以創(chuàng)建所選類型的新約束。 將打開相應(yīng)的約束創(chuàng)建對(duì)話框,您可以填寫新約束的詳細(xì)信息。 單擊“確定”將約束應(yīng)用于內(nèi)存并關(guān)閉
窗口。 電子表格中的新行顯示新的約束信息。
您可以通過直接在電子表格中修改值來編輯任何現(xiàn)有約束。
完成編輯后,單擊“應(yīng)用”以將修改的約束應(yīng)用于內(nèi)存。
重要信息:應(yīng)用新約束或已修改約束不會(huì)將其保存在XDC文件中。 您必須單擊“保存約束”以保存它。
重要信息:無法編輯或刪除IP約束。 要修改使用IP提供的約束,必須禁用相應(yīng)的IP XDC文件,將約束復(fù)制到XDC文件,然后根據(jù)需要編輯約束。
Constraints Creation, Grouped by Category
When you select a constraint type, the corresponding spreadsheet appears on the right
sub-window panel. This allows you to view all the constraints of the same type that have
already been created.
約束創(chuàng)作,按類別分組
選擇約束類型時(shí),相應(yīng)的電子表格將顯示在右側(cè)子窗口面板上。 這允許您查看已創(chuàng)建的相同類型的所有約束。
要?jiǎng)?chuàng)建新約束,請(qǐng)雙擊目標(biāo)約束的名稱。 使用對(duì)話框可以指定每個(gè)選項(xiàng)的值。 單擊“確定”后,該工具將執(zhí)行以下操作:
1.驗(yàn)證語(yǔ)法。
2.將語(yǔ)法應(yīng)用于內(nèi)存。
3.在電子表格的末尾添加新約束。
4.在完整約束列表的末尾添加新約束。
所有約束
窗口底部顯示內(nèi)存中加載的約束的完整列表,其順序與應(yīng)用的順序相同。 約束根據(jù)XDC文件或它們所源自的Tcl腳本進(jìn)行分組。 當(dāng)XDC文件的范圍限定為
特定的分層單元格,單元格名稱顯示在文件名旁邊。
您可以展開和折疊每個(gè)關(guān)聯(lián)源文件的約束,也可以通過單擊面板左側(cè)的兩個(gè)相應(yīng)按鈕完全展開和折疊約束。
提示:折疊視圖提供了在內(nèi)存中加載哪些約束文件以及使用范圍機(jī)制的位置的簡(jiǎn)要概述。 通過report_compile_order -constraints命令可以獲得相同的信息。
取消選擇“按源分組”圖標(biāo),將視圖切換到一個(gè)表,其中源約束文件和作用域單元格信息顯示在右側(cè)兩列中。
要?jiǎng)h除約束,請(qǐng)選擇它并單擊X.
•要編輯非只讀的約束,請(qǐng)使用電子表格視圖。 在工具注冊(cè)了更改后,必須單擊“應(yīng)用”以刷新內(nèi)存中的約束。
•要添加新約束,請(qǐng)使用前面所述的對(duì)話框,或在Tcl控制臺(tái)中鍵入約束。 新約束在名為<unsaved_constraints>的roup中出現(xiàn)在列表的末尾。
保存約束時(shí),新約束將保存在標(biāo)記為目標(biāo)的XDC文件的末尾。 如果與內(nèi)存中的設(shè)計(jì)關(guān)聯(lián)的約束集中沒有目標(biāo)XDC文件,或者約束集中只有一個(gè)Tcl腳本,則會(huì)提示您指定保存約束的位置。
Regularly save your constraints. Click Save, or select File > Constraints > Save.
重要信息:無法將新約束和已修改約束保存回Tcl腳本。
警告! 如果尚未應(yīng)用Timing Constraints窗口中的任何約束,請(qǐng)不要在Tcl控制臺(tái)中輸入新約束。 編輯器中的最終約束順序可能與內(nèi)存中的約束順序不同。 為避免混淆,每次編輯現(xiàn)有約束時(shí)都必須重新應(yīng)用所有約束。
上一篇:使用約束
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08