您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!
Constraints Methodology(約束方法論)
關(guān)于約束方法論
設(shè)計約束定義了編譯流程必須滿足的要求,以使設(shè)計在板上起作用。 并非所有步驟都使用所有約束
在編譯流程中。 例如,物理約束僅在實現(xiàn)步驟期間使用(即,由布局器和路由器)。
由于Xilinx®Vivado®集成設(shè)計環(huán)境(IDE)綜合和實現(xiàn)算法是時序驅(qū)動的,因此必須創(chuàng)建適當(dāng)?shù)臅r序約束。
過度約束或設(shè)計不足會使時序收斂變得困難。 您必須使用符合您的應(yīng)用程序要求的合理約束。
也就是說這一章主要就是講解約束的行為規(guī)范,上一章講述的是如何輸入約束文件,這都是有一定順序的
組織你的約束(個人認(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é)好英語很重要。。 不過沒有那么多時間讓我現(xiàn)學(xué)英文
只能退而求其次,想想辦法,
Vivado IDE允許您使用一個或多個約束文件。 雖然對整個編譯流使用單個約束文件似乎更方便,但隨著設(shè)計變得更加復(fù)雜,維護(hù)所有約束可能是一個挑戰(zhàn)。 對于使用由不同團隊開發(fā)的多個IP核或大塊的設(shè)計,通常就是這種情況。
導(dǎo)入定時和物理約束后,獨立于源文件的數(shù)量或設(shè)計是否處于項目/非項目模式,可以使用write_xdc命令將所有約束導(dǎo)出為單個文件。
約束以與讀入項目或設(shè)計相同的順序?qū)懭胫付ǖ妮敵鑫募?br />命令行選項write_xdc -type可用于選擇要導(dǎo)出的約束(時間,物理或豁免)子集。
不過這里有一個建議:
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建議您將時序約束和物理約束分開,將它們保存為兩個不同的文件。 您還可以將特定于某個模塊的約束保存在單獨的文件中。
項目模式(工程模式)/非項目模式(非工程模式)的概念:
這是兩種VIVADO的兩種設(shè)計流程模式
(一) 設(shè)計者可以使用基于工程的方法自動管理設(shè)計過程和設(shè)計數(shù)據(jù),這個就是說可以用VIVADO軟件來進(jìn)行
(二)可以根據(jù)TCL腳本的方法,可以自己設(shè)計管理源文件和設(shè)計流程,這種方法稱為非工程模式,這就非常高大上了,就像是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].
項目流程
您可以在創(chuàng)建新項目期間或稍后從Vivado IDE菜單中將Xilinx設(shè)計約束(XDC)文件添加到約束集中。
圖2-1顯示了項目中的兩個約束集,即單XDC或多XDC。 第一個約束集包括兩個XDC文件。 第二個約束集僅使用一個包含所有約束的XDC文件。
如果項目包含使用其自身約束的IP,則相應(yīng)的約束文件不會出現(xiàn)在約束集中。 相反,它與IP源文件一起列出。
您還可以將Tcl腳本添加到約束集中作為非托管約束或非托管Tcl腳本。 Vivado設(shè)計套件不會重新編寫修改的約束
進(jìn)入一個非托管的Tcl腳本。 Tcl腳本和XDC文件的加載順序與Vivado IDE中顯示的順序相同(如果它們屬于同一個PROCESSING_ORDER組)或命令report_compile_order -constraints報告的順序。
如果需要,可以在多個約束集中使用XDC文件或Tcl腳本。 有關(guān)如何為項目創(chuàng)建和添加約束文件和約束集的更多信息,請參閱“Vivado Design Suite用戶指南”中的使用約束:系統(tǒng)級設(shè)計
參賽作品(UG895)[參考文獻(xiàn)2]。
非項目流程
在非項目模式下,必須在執(zhí)行編譯命令之前單獨讀取每個文件。
下面的示例腳本顯示了如何使用一個或多個XDC文件進(jìn)行綜合和實現(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
語境外約束
在HD或PR流中,通常以上下文(OOC)方法合成設(shè)計的各部分。 當(dāng)使用這樣的流時,可以僅為OOC合成指定一些約束。 例如,當(dāng)塊合成OOC時,必須定義在塊的輸入邊界處傳播的時鐘。 這些時鐘在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.
合成和實現(xiàn)約束文件
默認(rèn)情況下,添加到約束集的所有XDC文件和Tcl腳本都用于合成和實現(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的值如何,都會傳播到實現(xiàn)中。 有關(guān)DONT_TOUCH屬性的更多信息,請參閱RTL屬性,第58頁,這可能是最需要注意的地方
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.
在非項目模式下運行Vivado IDE時,您可以直接在流的任何步驟之間讀取約束。 在此模式下,屬性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腳本顯示了如何讀取不同步驟的兩個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)先級規(guī)則進(jìn)行優(yōu)先級排序,因此必須仔細(xì)檢查約束的順序。 有關(guān)更多信息,請參見第7章,XDC優(yōu)先級
注意:如果多個物理約束發(fā)生沖突,則最新約束將獲勝。 例如,如果I / O端口通過多個XDC文件分配了不同的位置(LOC),則為最新位置
分配給端口優(yōu)先。
The Vivado IDE provides full visibility into your design. To validate your constraints step by
step:
Vivado IDE可全面了解您的設(shè)計。 要逐步驗證您的約束:
1. Run the appropriate report commands.
2. Review the messages in the Tcl Console or the Messages window.
建議:無論是為設(shè)計使用一個還是多個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)在定義生成的時鐘之前定義更改時鐘關(guān)系或時鐘傳播的案例分析約束。 這包括在時鐘上定義的案例分析
緩沖區(qū)導(dǎo)致緩沖區(qū)的輸出時鐘受到案例分析的影響。
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.
從時鐘定義開始。 必須先創(chuàng)建時鐘,然后才能將它們用于任何后續(xù)約束。 聲明之前對時鐘的任何引用都會導(dǎo)致錯誤,并忽略相應(yīng)的約束。 在單個約束文件中以及設(shè)計中的所有XDC文件(或Tcl腳本)中都是如此。
從時鐘定義開始。 必須先創(chuàng)建時鐘,然后才能將它們用于任何后續(xù)約束。 聲明之前對時鐘的任何引用都會導(dǎo)致錯誤,并忽略相應(yīng)的約束。
在單個約束文件中以及設(shè)計中的所有XDC文件(或Tcl腳本)中都是如此。
約束文件的順序很重要。 您必須確保每個文件中的約束不依賴于另一個文件的約束。 如果是這種情況,則必須最后讀取包含約束依賴項的文件。
如果兩個約束文件具有相互依賴關(guān)系,則必須將它們手動合并到一個包含正確序列的文件中,或者將文件分成幾個單獨的文件并正確排序。
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文件中的原始位置,但不會保存在Tcl腳本中。 任何新約束都保存在標(biāo)記為目標(biāo)的XDC文件的末尾。 在許多情況下,當(dāng)約束集包含多個XDC文件時,目標(biāo)約束文件不是列表中的最后一個文件,并且在打開或重新加載設(shè)計時不會最后加載。 因此,保存在磁盤上的約束序列可能與之前在內(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ù)期工作。 如果必須修改序列,則必須通過直接編輯約束文件來修改它。 這對時序約束尤為重要。
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的項目流程中,所有約束都位于約束集中。 默認(rèn)情況下,Vivado IDE中顯示的XDC文件(或Tcl腳本)的順序定義了將elaborated design或synthesized design加載到內(nèi)存時工具使用的讀取順序。 首先讀取列表頂部的文件,最后讀取底部的文件。 您只需在IDE中選擇文件并將其移動到列表中的所需位置即可更改順序。
例如,在圖1中,使用拖放操作將文件wave_gen_pin.xdc移動到文件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]
在非項目模式下,read_xdc調(diào)用的順序決定了約束文件的計算順序。
Constraint Files Order with IP Cores
許多IP內(nèi)核隨附一個或多個XDC文件。 在RTL項目中生成此類IP內(nèi)核時,還會在各種設(shè)計編譯步驟中使用其XDC文件。
例如,圖2顯示項目中的一個IP核帶有一個XDC文件。
Figure 2: XDC Files in the IP Sources
默認(rèn)情況下,在用戶XDC文件之前讀入IP XDC文件。 以這種方式處理它允許IP創(chuàng)建可在XDC中引用的時鐘對象。 它還允許您覆蓋由IP內(nèi)核設(shè)置的物理約束,因為在IP之后評估用戶約束。 對于依賴于由用戶或其他IP創(chuàng)建的時鐘對象的IP核,此順序有一個例外(例如,get_clocks -of_objects [get_ports clka])。 在這種情況下,在用戶文件之后讀取IP XDC。
此行為由PROCESSING_ORDER屬性控制,為每個XDC文件設(shè)置:
•EARLY:必須先讀取的文件
•NORMAL:默認(rèn)
•LATE:必須最后讀取的文件
IP XDC將其PROCESSING_ORDER屬性設(shè)置為EARLY或LATE。 沒有哪個 IP提供屬于NORMAL約束組的XDC文件。 對于屬于同 一PROCESSING_ORDER組的用戶XDC(或Tcl)文件,Vivado IDE中顯示的相對順序決定了它們的讀取順序。 可以通過移動Vivado IDE約束集中的文件或使用reorder_files命令來修改組中的順序。
對于屬于同一PROCESSING_ORDER組的IP XDC文件,順序由IP內(nèi)核的導(dǎo)入或創(chuàng)建順序確定。 創(chuàng)建項目后,無法更改此順序。
最后,用戶組和IP XDC PROCESSING_ORDER組之間的相對順序如下:
1.標(biāo)記為EARLY的用戶約束
2.標(biāo)記為EARLY的IP約束(默認(rèn))
3.標(biāo)記為NORMAL的用戶約束
4.標(biāo)記為LATE的IP約束(包含時鐘依賴性)
5.標(biāo)記為LATE的用戶約束
注意:將其PROCESSING_ORDER設(shè)置為LATE(以便在用戶約束后進(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控制臺中的report_compile_order -constraints命令報告由工具根據(jù)上述屬性確定的XDC文件讀取順序,包括IS_ENABLED,USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION。
Changing Read Order
要在約束集中更改XDC文件或非托管Tcl腳本的讀取順序,請執(zhí)行以下操作:
1.在“源”窗口中,選擇要移動的XDC文件或Tcl腳本。
2.將文件拖放到約束集中的所需位置。
對于圖1中所示的示例,等效的Tcl命令是:
reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] [get_files wave_gen_pins.xdc]
在非項目模式下,read_xdc或source命令的順序決定了約束文件的讀取順序。
如果使用帶有約束的IP內(nèi)核,則會自動處理兩組約束,如下所示:
•不依賴于時鐘的約束被分組到XDC文件中,PROCESSING_ORDER設(shè)置為EARLY,
•依賴于時鐘的約束在PROCESSING_ORDER設(shè)置為LATE的XDC文件中分組。
默認(rèn)情況下,用戶XDC文件屬于PROCESSING_ORDER NORMAL組。 它們在EARLY XDC文件之后和LATE XDC文件之前加載。 對于每個PROCESSING_ORDER組,IP XDC文件的加載順序與IP Sources窗口中IP核的列表順序相同。 例如,下圖顯示了XDC文件附帶的項目IP內(nèi)核之一。
Figure 4: XDC Files in the IP Sources
打開設(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文件的讀取順序。 如果必須修改訂單,請執(zhí)行以下操作:
1.禁用相應(yīng)的IP XDC文件(IS_ENABLED設(shè)置為false)。
2.復(fù)制他們的內(nèi)容。
3.將內(nèi)容粘貼到約束集中包含的一個XDC文件中。
4.在需要的地方使用完整的分層網(wǎng)表對象路徑名更新復(fù)制的IP XDC命令。 這樣做是必需的,因為IP XDC約束以這樣的方式編寫,即它們可以作用于IP實例。
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è)計數(shù)據(jù)庫(詳細(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è)計一個設(shè)計才能在編輯期間驗證您的約束。 使用Vivado IDE用戶界面編輯約束時,將在Tcl控制臺中發(fā)出等效的XDC命令,以便將其應(yīng)用于內(nèi)存。 必須先將已編輯的時序約束應(yīng)用于內(nèi)存,然后才能將其保存到XDC文件中。(啥意思?將已編輯的時序約束應(yīng)用于內(nèi)存然后才能保存XDC文件???)
在運行綜合或?qū)崿F(xiàn)之前,必須將內(nèi)存中的約束保存回屬于項目的XDC文件。 Vivado IDE會在必要時提示您保存約束。
Do one of the following to save your constraints manually:
執(zhí)行以下操作之一以手動保存約束:
•單擊“保存約束”。
•選擇“文件”>“約束”>“保存”。
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)存中的約束時,會打開一個對話框,提醒您這可能導(dǎo)致合成和實現(xiàn)過時。 選中此對話框上的“記住首選項”復(fù)選框以禁用此警告的未來實例。
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.
運行這些命令時,Vivado會執(zhí)行以下操作:
•將所有新約束保存到與設(shè)計關(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顯示了推薦的流量選項。 不要同時使用這兩個選項。 混合這些選項可能會導(dǎo)致您失去約束。 推薦的流程選項包括:
• 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.
用戶界面選項
由于Vivado IDE管理您的約束,因此您不能同時編輯XDC文件。 當(dāng)Vivado IDE保存內(nèi)存內(nèi)容時,會發(fā)生以下情況:
•修改的約束替換原始文件中的原始約束。
•新約束將附加到標(biāo)記為目標(biāo)的文件中。
•將覆蓋XDC文件中的所有手動編輯。
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
手編輯選項
使用“手動編輯”選項時,您負(fù)責(zé)編輯和維護(hù)XDC文件。 雖然您可能會使用Tcl控制臺來驗證某些約束的語法,
關(guān)閉或重新加載設(shè)計時,必須放棄在內(nèi)存中所做的更改。
如果在保存約束時發(fā)生沖突,系統(tǒng)會提示您選擇其中一個
以下:
•放棄在內(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è)計,以確保內(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視圖時創(chuàng)建和編輯現(xiàn)有的頂級端口放置:
1. Select the I/O Planning pre-configured layout.
2. Open the windows shown in Table 2-3.
有關(guān)引腳分配的更多信息,請參閱“Vivado Design Suite用戶指南”中的此鏈接:
I / O和時鐘規(guī)劃(UG899)[參考3]。
布局規(guī)劃
在使用RTL分析,綜合或?qū)嵤┮晥D時創(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ī)劃的更多信息,請參閱“Vivado Design Suite用戶指南”中的以下鏈接:
設(shè)計分析和關(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:
時序約束向?qū)?br />時序約束向?qū)ёR別合成或?qū)崿F(xiàn)的設(shè)計上缺少的時序約束。 它分析網(wǎng)表,時鐘網(wǎng)絡(luò)連接和現(xiàn)有的時序約束,以便根據(jù)Vivado設(shè)計套件(UG949)的UltraFast設(shè)計方法指南[參考文獻(xiàn)5]提供建議。 向?qū)У囊韵?1頁包含三類約束,后面是摘要。
包括以下步驟:
在每個步驟中,您可以接受建議的約束或通過選中或取消選中每個建議的約束來修改列表。 但是,在向?qū)У脑缙谌∠x中建議的約束可能會阻止在后續(xù)步驟中識別其他缺少的約束。 例如,如果您決定跳過創(chuàng)建時鐘,則向?qū)⒉粫R別并推薦任何引用此時鐘或其自動派生時鐘的約束。
向?qū)У淖詈笠豁撎峁┝藢⒁獎?chuàng)建的約束的摘要。 您可以單擊每個單獨的超鏈接以查看約束詳細(xì)信息,或在退出向?qū)Ш笤凇皶r序約束”窗口中顯示新約束。
您還可以選擇在單擊“完成”后生成以下建議的報告,以驗證設(shè)計是否完全受約束:
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.
重要信息:除非單擊“取消”,否則新添加的約束將自動保存到目標(biāo)XDC文件中。 退出向?qū)Ш螅梢栽赥iming 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.
如果定時約束向?qū)б肓瞬话踩臅r序分析,則不建議使用約束。 此外,向?qū)Р粫迯?fù)在內(nèi)存中加載設(shè)計時已存在的不適當(dāng)約束。 然而,在項目模式下使用Vivado Design Suite時,創(chuàng)建所有丟失的時鐘后,某些無效約束可能會生效;
有關(guān)更多詳細(xì)信息,請參閱下面的約束處理順序和無效約束。 此外,在使用向?qū)е,如果check_timing或report_drc仍標(biāo)記一些約束問題,則通常是由于源XDC文件中已存在的約束問題。 您必須直接解決這些問題,而不是使用向?qū)斫鉀Q它們。
約束處理順序和無效約束
時序約束向?qū)Ыㄗh缺少定義時鐘或引用時鐘的約束,這些約束將在項目模式下保存在目標(biāo)XDC文件的末尾,或者在其他模式的所有約束結(jié)束時保存。出于這個原因,你必須明白
以下規(guī)則:
•項目模式:在啟動“計時約束”向?qū)е,必須指定目?biāo)XDC文件,其處理順序設(shè)置為“正常”。目標(biāo)XDC文件必須屬于在內(nèi)存中打開且當(dāng)前選定的設(shè)計的約束集。目標(biāo)XDC文件在其他XDC文件中的位置很重要,因為它指定了以后應(yīng)用和保存建議約束的位置。此外,向?qū)䥽L試重新應(yīng)用屬于目標(biāo)之后解析的XDC文件的任何無效約束
XDC文件以提供最完整和準(zhǔn)確的建議。
例如,考慮來自synth_1的網(wǎng)表在內(nèi)存中使用約束集constr_1運行。此約束集包含序列a.xdc,b.xdc和c.xdc中的三個XDC文件。如果選擇b.xdc作為目標(biāo)XDC文件并且每個文件包含無效約束,則Timing Constraints向?qū)?yīng)用推薦的時鐘,然后在繼續(xù)執(zhí)行下一步并發(fā)現(xiàn)其他缺少的約束之前從c.xdc重新應(yīng)用無效約束。
您無法在這些模式下指定目標(biāo)XDC文件,因此“時序約束”向?qū)诩s束序列的最后位置推薦并應(yīng)用新約束。 這相當(dāng)于在Tcl控制臺中輸入新約束或通過Timing Constraints窗口輸入新約束。 在這些模式下,向?qū)Р粫䥽L試重新應(yīng)用無效約束。 如果需要在整個約束序列中更早地應(yīng)用新約束以解決約束依賴性或優(yōu)先級問題,則必須手動編輯約束序列。
以下是如何手動編輯約束的示例
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文件,因此“時序約束”向?qū)诩s束序列的最后位置推薦并應(yīng)用新約束。 這相當(dāng)于在Tcl控制臺中輸入新約束或通過Timing Constraints窗口輸入新約束。 在這些模式下,向?qū)Р粫䥽L試重新應(yīng)用無效約束。 如果需要在整個約束序列中更早地應(yīng)用新約束以解決約束依賴性或優(yōu)先級問題,則必須手動編輯約束序列。
您可以使用Timing Constraints窗口查看更新的時序約束序列。 查看新約束后,可以將序列保存到DCP中
向?qū)Т蜷_時可用的報告功能當(dāng)“時序約束”向?qū)Т蜷_時,它會阻止Vivado IDE中的大多數(shù)操作,包括使用Tcl控制臺或運行時序分析,以避免數(shù)據(jù)庫差異。 向?qū)Т翱谑冀K位于其他Vivado IDE窗口的前面。 如果需要訪問Vivado IDE菜單或窗口,則必須將向?qū)Т翱谝频絺?cè)面。
Timing Constraints向?qū)Т蜷_時,只有以下功能可用:
•報告和可視化時鐘網(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ù)頁面都有按鈕來生成和訪問時鐘網(wǎng)絡(luò)報告,以便可視化時鐘拓?fù),它們的源點以及某些時鐘的共享段。
有關(guān)時鐘網(wǎng)絡(luò)報告的更多詳細(xì)信息,請參閱“Vivado設(shè)計套件用戶指南:設(shè)計分析和關(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è)計中的對象
“編輯”菜單中提供了“查找和查找文件”對話框。 在向?qū)е休斎爰s束時,可以使用這些對話框檢索有關(guān)設(shè)計的一些信息。
•創(chuàng)建和查看原理圖
您可以在主Vivado IDE窗口中選擇設(shè)計對象,并在原理圖中將其可視化。 所有原理圖功能均可用。 只有時序約束向?qū)У淖詈笠徊,異步時鐘域交叉,在“時序路徑”選項卡中選擇一個或多個條目時,支持方便的原理圖交叉探測。
有關(guān)使用原理圖的更多信息,請參閱“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.
使用“時序約束”窗口可視化內(nèi)存中的約束向?qū)У拿總頁面都包含一個選項卡,該選項卡顯示與步驟建議的相同類型的現(xiàn)有約束。 這對于快速查看已在XDC文件中創(chuàng)建的約束的詳細(xì)信息很方便。 有關(guān)內(nèi)存中所有時序約束的完整視圖,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ū)У拿總步驟都可以推薦幾個約束。 根據(jù)約束,您必須執(zhí)行以下操作之一:
•使用以下方法之一取消選中您不想創(chuàng)建的約束
方法:
°通過取消選中每一行,從列表中刪除每個約束,一次一個。
°通過取消選中表格的左上角復(fù)選框來刪除所有約束。
提示:或者,您可以右鍵單擊約束,然后選擇“不創(chuàng)建約束”,如圖所示
圖2-11。
在圖2-12中,clk1和ddr_clk_in未選中,將被跳過。
通過單擊顯示未定義的單元格輸入缺少的值(例如,圖2-12中的clk2和clk3的頻率或周期值)。
您可以通過選擇相應(yīng)的行并單擊Edit Selected Rows按鈕同時編輯多個約束,如圖2-13所示。
接下來,填寫所有必填字段,如Frequency和Period,如圖2-14所示。
一次編輯多個約束對輸入和輸出延遲特別有用
限制。
•如果不需要采取任何措施,只需查看約束。
檢查并完成所有已檢查的建議約束后,單擊“下一步”繼續(xù)下一頁。 您錯過的任何條目都會阻止向?qū)нM(jìn)入下一步。
您可以使用“后退”按鈕重新訪問頁面。 如果在上一頁上編輯任何約束并單擊“下一步”,則向?qū)⒅匦路治鲈O(shè)計并相應(yīng)地推薦新約束。 在大多數(shù)情況下,先前建議的約束不受影響
更改已恢復(fù)。 如果只查看上一頁而不修改任何建議的約束,則向?qū)Р粫匦逻\行任何分析,這通常會節(jié)省運行時間。
重要信息:您無法使用“時序約束”向?qū)Ь庉嫭F(xiàn)有時序約束。 相反,您必須使用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)識兩類時鐘,如圖2-15所示。
計算時序松弛所需的主要時鐘
建議約束表中顯示建立/保持/恢復(fù)/刪除檢查。
•僅執(zhí)行脈沖寬度檢查所需的時鐘(min_period,max_period,max_skew,min_low_pulse_width和min_high_pulse_width)出現(xiàn)在“僅限脈沖寬度檢查限制”表中。 默認(rèn)情況下,這些時鐘未選中,因為它們僅用于報告目的而不會影響
實施工具的結(jié)果質(zhì)量。
向?qū)詣幼R別約束的正確時鐘源點。 它對應(yīng)于時鐘樹根,其中時鐘信號實際進(jìn)入設(shè)計。 在大多數(shù)情況下,時鐘源點是輸入時鐘端口,在某些特殊情況下,它是沒有定時弧的基元的輸出。 例如,在7系列設(shè)備中,向?qū)R別GT_CHANNEL基元輸出上缺少的主時鐘。 對于UltraScale™器件,Vivado Design Suite能夠根據(jù)輸入時鐘特性以及GT_CHANNEL配置和連接自動導(dǎo)出GT_CHANNEL輸出時鐘。 因此,向?qū)ㄗh位于設(shè)計邊界上GT_CHANNEL單元上游的主時鐘。
生成的時鐘
Timing Constraints(時序約束)向?qū)Ыㄗh在順序單元的輸出上直接或通過某些互連邏輯驅(qū)動其他順序單元的時鐘引腳時,創(chuàng)建生成時鐘。 與PLL或MMCM不同,用戶邏輯不能乘以主時鐘的頻率,因此向?qū)H提供指定除法系數(shù)的選項,如圖2-16所示。
當(dāng)多個主時鐘到達(dá)生成的時鐘源點時,向?qū)⑹褂梦ㄒ坏拿Q和對各個主時鐘的清晰引用來創(chuàng)建所有相應(yīng)的生成時鐘。 圖2-16說明了兩個時鐘(clk3和clk4)到達(dá)的情況
順序單元FDIV_Reg。 因此,建議使用兩個生成的時鐘約束(FDIV和FDIV_1)。
注意:某些時鐘拓?fù)洌ɡ鐣r鐘路徑上的級聯(lián)寄存器)可能需要多次運行“時序約束”向?qū)Р拍馨l(fā)現(xiàn)所有丟失的生成時鐘。
轉(zhuǎn)發(fā)時鐘
Timing Constraints向?qū)Ыㄗh在輸出端口上生成時鐘約束,該輸出端口由具有常量輸入的雙倍數(shù)據(jù)速率寄存器驅(qū)動。 基于輸入恒定連接性,將生成的時鐘相位調(diào)整為正(0度相移)或反相(180度相移)。 約束中使用的主時鐘是到達(dá)雙倍數(shù)據(jù)速率寄存器的時鐘引腳的時鐘。 查看源時鐘
圖2-17中推薦約束表的列。
對于7系列器件系列,向?qū)ёR別的拓?fù)浣Y(jié)構(gòu)如下所示
圖2-18。 主時鐘或輸出緩沖器的性質(zhì)沒有限制。
對于UltraScale器件系列,ODDR和ODDRE1原語會自動重定向到OSERDESE3,其屬性為ODDR_MODE = TRUE。 向?qū)ёR別圖2-19中所示的拓?fù)洌渲蠴SERDESE3 / D [0]連接到1和
OSERDESE3 / D [4]連接到0(無相移)
外部反饋延遲
Timing Constraints(時序約束)向?qū)Х治鲈O(shè)計中存在的MMCM和PLL單元的反饋環(huán)路連接。 建議使用外部延遲約束(最小和最大)
當(dāng)CLKFBIN和CLKFBOUT引腳通過IO緩沖器和MMCM或PLL屬性COMPENSATION = EXTERNAL連接到設(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ā)時鐘)時,Timing Constraints向?qū)Р唤ㄗh使用外部延遲約束。 在這種情況下,您必須在退出向?qū)Ш笫謩踊蚴褂肨iming 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(時序約束)向?qū)Х治鰜碜暂斎攵丝诘乃新窂,以識別設(shè)計中的目標(biāo)時鐘及其活動邊緣。 根據(jù)此信息,向?qū)ㄗh基于的基本系統(tǒng)同步輸入延遲約束
Vivado IDE中提供的XDC模板(有關(guān)模板,請參閱XDC模板,第55頁)。 在“推薦約束”表中選擇約束條目時,與所選模板關(guān)聯(lián)的波形將顯示在“波形”選項卡中窗口的底部。
圖2-22顯示了向?qū)岢霾⒂捎脩暨M(jìn)行部分編輯的幾個輸入約束的示例。
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.
對于每個約束,您可以編輯三個特征,以指定與電路板上實際接口時序?qū)?yīng)的相應(yīng)波形:
•同步描述時鐘數(shù)據(jù)關(guān)系的性質(zhì)。
°系統(tǒng)(用于系統(tǒng)同步接口):當(dāng)數(shù)據(jù)通過1個周期或相隔1/2周期的不同時鐘邊沿啟動和捕獲時使用此設(shè)置。
°Source(用于源同步接口):當(dāng)數(shù)據(jù)以相同的時鐘邊沿啟動和捕獲時使用此設(shè)置。
•對齊描述了與活動時鐘邊沿相關(guān)的數(shù)據(jù)轉(zhuǎn)換對齊。
°僅適用于系統(tǒng)同步接口:
- Edge:當(dāng)時鐘和數(shù)據(jù)同時轉(zhuǎn)換時使用此設(shè)置。
僅適用于源同步接口:
- 中心:當(dāng)時鐘在數(shù)據(jù)有效窗口中間轉(zhuǎn)換時使用此設(shè)置。
- Edge Direct:當(dāng)時鐘在數(shù)據(jù)有效窗口的開頭轉(zhuǎn)換時使用此設(shè)置。
- Edge MMCM:當(dāng)時鐘在數(shù)據(jù)有效窗口結(jié)束時轉(zhuǎn)換時使用此設(shè)置。
•Data Rate和Edge描述了受模板約束的活動時鐘邊沿。 向?qū)Ыㄗh的默認(rèn)值基于捕獲順序單元的活動時鐘邊沿。
°Single Rise:使用此設(shè)置用于只有上升時鐘沿啟動FPGA外部數(shù)據(jù)的情況。
°Single Fall:使用此設(shè)置用于僅下降時鐘邊沿FPGA外部數(shù)據(jù)啟動的情況。
°Dual:使用此設(shè)置用于上升和下降時鐘沿啟動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.
您還可以選擇在單擊“完成”后生成以下建議的報告,以驗證設(shè)計是否完全受約束:
•創(chuàng)建時序摘要報告:除了check_timing報告之外,還會使用新約束報告時序松弛。 如果您輸入的周期或I / O延遲限制太難,則可能會顯示時序違規(guī)。
•創(chuàng)建檢查時間報告:此報告通過運行check_timing命令來識別缺失或不適當(dāng)?shù)募s束。
•僅使用時序檢查創(chuàng)建DRC報告:此報告運行時序DRC。
重要信息:除非單擊“取消”,否則新添加的約束將自動保存到目標(biāo)XDC文件中。 退出后,您可以在Timing Constraints窗口中編輯或刪除新約束
向?qū)詣幼R別約束的正確時鐘源點。 它對應(yīng)于時鐘樹根,其中時鐘信號實際進(jìn)入設(shè)計。 在大多數(shù)情況下,時鐘源點是輸入時鐘端口,在某些特殊情況下,它是沒有定時弧的基元的輸出。 例如,在7系列設(shè)備中,向?qū)R別GT_CHANNEL基元輸出上缺少的主時鐘。 對于UltraScale™器件,Vivado Design Suite能夠根據(jù)輸入時鐘特性和GT_CHANNEL配置和連接自動導(dǎo)出GT_CHANNEL輸出時鐘。 因此,向?qū)ㄗh位于設(shè)計邊界上GT_CHANNEL單元上游的主時鐘。
當(dāng)多個主時鐘到達(dá)生成的時鐘源點時,向?qū)⑹褂梦ㄒ坏拿Q和對各個主時鐘的清晰引用來創(chuàng)建所有相應(yīng)的生成時鐘。 圖2-16說明了兩個時鐘(clk3和clk4)到達(dá)的情況
順序單元FDIV_Reg。 因此,建議使用兩個生成的時鐘約束(FDIV和FDIV_1)。
注意:某些時鐘拓?fù)洌ɡ鐣r鐘路徑上的級聯(lián)寄存器)可能需要多次運行“時序約束”向?qū)Р拍馨l(fā)現(xiàn)所有丟失的生成時鐘。
轉(zhuǎn)發(fā)時鐘
Timing Constraints向?qū)Ыㄗh在輸出端口上生成時鐘約束,該輸出端口由具有常量輸入的雙倍數(shù)據(jù)速率寄存器驅(qū)動。 基于輸入恒定連接性,將生成的時鐘相位調(diào)整為正(0度相移)或反相(180度相移)。 約束中使用的主時鐘是到達(dá)雙倍數(shù)據(jù)速率寄存器的時鐘引腳的時鐘。 查看源時鐘
圖2-17中推薦約束表的列。
對于7系列器件系列,向?qū)ёR別的拓?fù)浣Y(jié)構(gòu)如下所示
圖2-18。 主時鐘或輸出緩沖器的性質(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).
對于UltraScale器件系列,ODDR和ODDRE1原語會自動重定向到OSERDESE3,其屬性為ODDR_MODE = TRUE。向?qū)ёR別圖2-19中所示的拓?fù),其中OSERDESE3 / D [0]連接到1,OSERDESE3 / D[4]連接到0(無相移)。
外部反饋延遲
Timing Constraints(時序約束)向?qū)Х治鲈O(shè)計中存在的MMCM和PLL單元的反饋環(huán)路連接。 建議使用外部延遲約束(最小和最大)
當(dāng)CLKFBIN和CLKFBOUT引腳通過IO緩沖器和MMCM或PLL屬性COMPENSATION = EXTERNAL連接到設(shè)計端口時。 圖2-20說明了推薦的外部延遲約束。
Timing Constraints(時序約束)向?qū)Х治鰜碜暂斎攵丝诘乃新窂,以識別設(shè)計中的目標(biāo)時鐘及其活動邊緣。 根據(jù)此信息,向?qū)ㄗh基于的基本系統(tǒng)同步輸入延遲約束
Vivado IDE中提供的XDC模板(有關(guān)模板,請參閱XDC模板,第55頁)。 在“推薦約束”表中選擇約束條目時,與所選模板關(guān)聯(lián)的波形將顯示在“波形”選項卡中窗口的底部。
圖2-22顯示了向?qū)岢霾⒂捎脩暨M(jìn)行部分編輯的幾個輸入約束的示例。
對于每個約束,您可以編輯三個特征,以指定與電路板上實際接口時序?qū)?yīng)的相應(yīng)波形:
•同步描述時鐘數(shù)據(jù)關(guān)系的性質(zhì)。
°系統(tǒng)(用于系統(tǒng)同步接口):當(dāng)數(shù)據(jù)通過1個周期或相隔1/2周期的不同時鐘邊沿啟動和捕獲時使用此設(shè)置。
°Source(用于源同步接口):當(dāng)數(shù)據(jù)以相同的時鐘邊沿啟動和捕獲時使用此設(shè)置。
•對齊描述了與活動時鐘邊沿相關(guān)的數(shù)據(jù)轉(zhuǎn)換對齊。
°僅適用于系統(tǒng)同步接口:
- Edge:當(dāng)時鐘和數(shù)據(jù)同時轉(zhuǎn)換時使用此設(shè)置。
輸出延遲
與輸入延遲步驟類似,時序約束向?qū)Х治鏊休敵龆丝诘穆窂,以識別設(shè)計中的源時鐘及其活動邊沿。 模板選擇規(guī)則與輸入延遲中描述的相同。 圖2-24顯示了向?qū)岢龅膸讉輸出約束,并由用戶進(jìn)行了部分編輯。
對于每個約束,可以編輯三個特征,以便指定與板上實際接口時序相對應(yīng)的適當(dāng)波形:
•Synchronous描述時鐘數(shù)據(jù)關(guān)系的性質(zhì)(有關(guān)詳細(xì)信息,請參閱輸入延遲,頁面33)。
•對齊描述了與活動時鐘邊沿相關(guān)的數(shù)據(jù)轉(zhuǎn)換對齊。
°建立/保持:當(dāng)根據(jù)FPGA外部的數(shù)據(jù)有效窗口時序特性指定模板延遲參數(shù)時,使用此設(shè)置。
°Skew(僅限源同步):根據(jù)FPGA的輸出引腳的偏斜要求指定模板延遲參數(shù)時,使用此設(shè)置。
•Data Rate和Edge描述了受模板約束的活動時鐘邊沿(請參閱
輸入延遲,第33頁了解更多詳情)。
與推薦的輸入延遲約束一樣,參考時鐘通常是電路板時鐘,但以下情況除外:
•電路板時鐘和輸出路徑內(nèi)部時鐘具有不同的時鐘周期。輸出約束引用與內(nèi)部時鐘具有相同波形的虛擬時鐘,以便以1周期路徑要求執(zhí)行設(shè)置分析。
自動創(chuàng)建虛擬時鐘。
•與電路板時鐘相比,輸出路徑內(nèi)部時鐘具有負(fù)相移。該向?qū)褂锰摂M時鐘作為參考時鐘。使用與電路板時鐘相同的波形自動創(chuàng)建虛擬時鐘。此外,向?qū)н指定虛擬時鐘和內(nèi)部時鐘之間的多周期路徑約束,以將默認(rèn)分析調(diào)整為1個周期+設(shè)置的相移量。虛擬時鐘和多周期路徑約束的組合為Vivado Design Suite定時器提供了更簡單的約束,可以處理并且只能影響輸出端口
那個對虛擬時鐘的引用。
注意:對于正相移,不需要虛擬時鐘和多周期路徑約束,因為默認(rèn)設(shè)置路徑要求是1個周期減去相移量。
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)識別出轉(zhuǎn)發(fā)時鐘,用于基于共享時鐘連接對輸出路徑進(jìn)行定時。
必須在向?qū)А稗D(zhuǎn)發(fā)時鐘”的第三步中創(chuàng)建轉(zhuǎn)發(fā)時鐘,否則電路板時鐘或虛擬時鐘將用作輸出延遲約束參考時鐘。
時間限制電子表格
時序約束電子表格顯示特定類型的所有現(xiàn)有約束的詳細(xì)信息。使用時序約束電子表格查看和編輯約束選項。
該小組的最后兩列顯示:
•源文件:約束來自的XDC文件或Tcl腳本的名稱
•Scoped Cell:應(yīng)用約束時的當(dāng)前實例的名稱。 此名稱通常對應(yīng)于使用專用約束傳遞的IP實例。 有關(guān)更多信息,請參閱約束范圍,第67頁。
通過雙擊電子表格的最后一行,可以創(chuàng)建所選類型的新約束。 將打開相應(yīng)的約束創(chuàng)建對話框,您可以填寫新約束的詳細(xì)信息。 單擊“確定”將約束應(yīng)用于內(nèi)存并關(guān)閉
窗口。 電子表格中的新行顯示新的約束信息。
您可以通過直接在電子表格中修改值來編輯任何現(xiàn)有約束。
完成編輯后,單擊“應(yīng)用”以將修改的約束應(yīng)用于內(nèi)存。
重要信息:應(yīng)用新約束或已修改約束不會將其保存在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)作,按類別分組
選擇約束類型時,相應(yīng)的電子表格將顯示在右側(cè)子窗口面板上。 這允許您查看已創(chuàng)建的相同類型的所有約束。
要創(chuàng)建新約束,請雙擊目標(biāo)約束的名稱。 使用對話框可以指定每個選項的值。 單擊“確定”后,該工具將執(zhí)行以下操作:
1.驗證語法。
2.將語法應(yīng)用于內(nèi)存。
3.在電子表格的末尾添加新約束。
4.在完整約束列表的末尾添加新約束。
所有約束
窗口底部顯示內(nèi)存中加載的約束的完整列表,其順序與應(yīng)用的順序相同。 約束根據(jù)XDC文件或它們所源自的Tcl腳本進(jìn)行分組。 當(dāng)XDC文件的范圍限定為
特定的分層單元格,單元格名稱顯示在文件名旁邊。
您可以展開和折疊每個關(guān)聯(lián)源文件的約束,也可以通過單擊面板左側(cè)的兩個相應(yīng)按鈕完全展開和折疊約束。
提示:折疊視圖提供了在內(nèi)存中加載哪些約束文件以及使用范圍機制的位置的簡要概述。 通過report_compile_order -constraints命令可以獲得相同的信息。
取消選擇“按源分組”圖標(biāo),將視圖切換到一個表,其中源約束文件和作用域單元格信息顯示在右側(cè)兩列中。
要刪除約束,請選擇它并單擊X.
•要編輯非只讀的約束,請使用電子表格視圖。 在工具注冊了更改后,必須單擊“應(yīng)用”以刷新內(nèi)存中的約束。
•要添加新約束,請使用前面所述的對話框,或在Tcl控制臺中鍵入約束。 新約束在名為<unsaved_constraints>的roup中出現(xiàn)在列表的末尾。
保存約束時,新約束將保存在標(biāo)記為目標(biāo)的XDC文件的末尾。 如果與內(nèi)存中的設(shè)計關(guān)聯(lián)的約束集中沒有目標(biāo)XDC文件,或者約束集中只有一個Tcl腳本,則會提示您指定保存約束的位置。
Regularly save your constraints. Click Save, or select File > Constraints > Save.
重要信息:無法將新約束和已修改約束保存回Tcl腳本。
警告! 如果尚未應(yīng)用Timing Constraints窗口中的任何約束,請不要在Tcl控制臺中輸入新約束。 編輯器中的最終約束順序可能與內(nèi)存中的約束順序不同。 為避免混淆,每次編輯現(xiàn)有約束時都必須重新應(yīng)用所有約束。
上一篇:使用約束
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08