您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!
Xilinx®Vivado®集成設(shè)計(jì)環(huán)境(IDE)使用Xilinx設(shè)計(jì)約束(XDC),不支持傳統(tǒng)的用戶約束文件(UCF)格式。
Xilinx設(shè)計(jì)約束(XDC)和用戶約束文件(UCF)約束之間存在關(guān)鍵差異。 XDC約束基于標(biāo)準(zhǔn)的Synopsys設(shè)計(jì)約束(SDC)格式。 SDC已經(jīng)使用和發(fā)展了20多年,使其成為描述設(shè)計(jì)約束的最流行和最成熟的格式。
XDC約束是行業(yè)標(biāo)準(zhǔn)Synopsys設(shè)計(jì)約束(SDC版本1.9)和Xilinx專有物理約束的組合。
XDC約束具有以下屬性:
•它們不是簡單的字符串,而是遵循Tcl語義的命令。
•它們可以像Vivado Tcl解釋器一樣解釋為任何其他Tcl命令。
•與其他Tcl命令相同地讀入和解析它們。
您可以在流程的不同點(diǎn)以多種方式輸入XDC約束。
•將約束存儲(chǔ)在一個(gè)或多個(gè)XDC文件中。
要在內(nèi)存中加載XDC文件,請執(zhí)行以下操作之一:
°使用read_xdc命令。
°將其添加到您的一個(gè)項(xiàng)目約束集中。 XDC文件只接受set,list和expr內(nèi)置Tcl命令。有關(guān)支持的命令的完整列表,請參閱附錄A,支持的XDC和SDC命令。
•使用非托管Tcl腳本生成約束。
要執(zhí)行Tcl腳本,請執(zhí)行以下操作之一:
°運(yùn)行source命令。
°使用read_xdc -unmanaged命令。
°將Tcl腳本添加到您的一個(gè)項(xiàng)目約束集中。
提示:與XDC文件不同,非托管Tcl腳本可以包含用于選擇設(shè)計(jì)對象和定義設(shè)計(jì)約束的任何常用Tcl命令,包括條件和循環(huán)控制結(jié)構(gòu)。
重要信息:Vivado Design Suite允許您在相同的約束集中混合使用XDC文件和Tcl腳本。僅當(dāng)修改的約束最初來自XDC文件而不是來自非托管Tcl腳本時(shí),它們才會(huì)保存回原始位置。由Tcl腳本生成的約束不由Vivado Design Suite管理,無法進(jìn)行交互式修改。欲獲得更多信息,請參閱第2章,約束方法
重要信息:對于XDC約束,命令source和read_xdc之間的行為存在差異。 使用source命令導(dǎo)入的約束不會(huì)保存在檢查點(diǎn)中與導(dǎo)入的順序相同。 首先保存使用read_xdc導(dǎo)入的約束,然后保存使用source導(dǎo)入的約束。 以與應(yīng)用順序相同的順序保存所有約束設(shè)計(jì),使用read_xdc -unmanaged而不是source。
要在將設(shè)計(jì)加載到內(nèi)存后驗(yàn)證特定約束的語法或影響,請使用Tcl控制臺(tái)和Vivado Design Suite報(bào)告功能。 這對于分析和調(diào)試時(shí)序約束和物理約束特別有用。
約束方法論
關(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ā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)用程序要求的合理約束。
組織你的約束
Vivado IDE允許您使用一個(gè)或多個(gè)約束文件。雖然對整個(gè)編譯流使用單個(gè)約束文件似乎更方便,但隨著設(shè)計(jì)變得更加復(fù)雜,維護(hù)所有約束可能是一個(gè)挑戰(zhàn)。對于使用由不同團(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ì)的順序相同。
命令行選項(xiàng)write_xdc -type可用于選擇要導(dǎo)出的約束(時(shí)間,物理或豁免)子集。
Xilinx建議您將時(shí)序約束和物理約束分開,將它們保存為兩個(gè)不同的文件。 您還可以將特定于某個(gè)模塊的約束保存在單獨(dú)的文件中。
項(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 Design Suite不會(huì)將修改后的約束寫回非托管Tcl腳本。 Tcl腳本和XDC文件的加載順序與Vivado IDE中顯示的順序相同(如果它們屬于同一個(gè)PROCESSING_ORDER組)或命令report_compile_order -constraints報(bào)告的順序。
如果需要,可以在多個(gè)約束集中使用XDC文件或Tcl腳本。 有關(guān)如何為項(xiàng)目創(chuàng)建和添加約束文件和約束集的更多信息,請參閱“Vivado Design Suite用戶指南”中的使用約束:系統(tǒng)級設(shè)計(jì)
非項(xiàng)目流程
在非項(xiàng)目模式下,必須在執(zhí)行編譯命令之前單獨(dú)讀取每個(gè)文件。
下面的示例腳本顯示了如何使用一個(gè)或多個(gè)XDC文件進(jìn)行綜合和實(shí)現(xiàn)。
語境外約束
在HD或PR流中,通常以上下文(OOC)方法合成設(shè)計(jì)的各部分。 當(dāng)使用這樣的流時(shí),可以僅為OOC合成指定一些約束。 例如,在塊的輸入邊界處傳播的時(shí)鐘必須
當(dāng)塊合成OOC時(shí)定義。 這些時(shí)鐘在OOC XDC文件中定義。
合成和實(shí)現(xiàn)約束文件
默認(rèn)情況下,添加到約束集的所有XDC文件和Tcl腳本都用于合成和實(shí)現(xiàn)。 設(shè)置USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION
XDC文件或Tcl腳本上的屬性可以更改此行為。 此屬性可以采用TRUE或FALSE的值。
DONT_TOUCH屬性不遵循USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION的屬性。 如果在綜合XDC中使用DONT_TOUCH屬性,則無論USED_IN_IMPLEMENTATION的值如何,都會(huì)將其傳播到實(shí)現(xiàn)。
有關(guān)DONT_TOUCH屬性的更多信息,請參閱RTL屬性,第58頁
例如,要僅使用約束文件進(jìn)行實(shí)現(xiàn):
1.在“源”窗口中選擇約束文件。
2.在“源文件屬性”窗口中:
a 取消選中合成。
b 檢查實(shí)施。
等效的Tcl命令是:
set_property USED_IN_SYNTHESIS false [get_files wave_gen_pins.xdc
set_property USED_IN_IMPLEMENTATION true [get_files wave_gen_pins.xdc
在非項(xiàng)目模式下運(yùn)行Vivado IDE時(shí),您可以直接在流的任何步驟之間讀取約束。 在此模式下,屬性USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION無關(guān)緊要。
以下編譯Tcl腳本顯示了如何為流的不同步驟讀取兩個(gè)XDC文件:
訂購你的約束
由于XDC約束是按順序應(yīng)用的,并且基于明確的優(yōu)先級規(guī)則進(jìn)行優(yōu)先級排序,因此必須仔細(xì)檢查約束的順序。 有關(guān)更多信息,請參見第7章,XDC優(yōu)先級。
注意:如果多個(gè)物理約束發(fā)生沖突,則最新約束將獲勝。 例如,如果I / O端口通過多個(gè)XDC文件分配了不同的位置(LOC),則為最新位置
分配給端口優(yōu)先。
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文件,都按以下順序組織約束。
注:應(yīng)在定義生成的時(shí)鐘之前定義更改時(shí)鐘關(guān)系或時(shí)鐘傳播的案例分析約束。這包括在時(shí)鐘上定義的案例分析
緩沖區(qū)導(dǎo)致緩沖區(qū)的輸出時(shí)鐘受到案例分析的影響。
從時(shí)鐘定義開始。必須先創(chuàng)建時(shí)鐘,然后才能將它們用于任何后續(xù)約束。聲明之前對時(shí)鐘的任何引用都會(huì)導(dǎo)致錯(cuò)誤,并忽略相應(yīng)的約束。這在個(gè)人中是正確的
約束文件,以及設(shè)計(jì)中的所有XDC文件(或Tcl腳本)。
約束文件的順序很重要。您必須確保每個(gè)文件中的約束不依賴于另一個(gè)文件的約束。如果是這種情況,則必須最后讀取包含約束依賴項(xiàng)的文件。如果兩個(gè)約束文件具有相互依賴性,
您必須手動(dòng)將它們合并到一個(gè)包含正確序列的文件中,或者將文件分成幾個(gè)單獨(dú)的文件并正確排序。
約束序列編輯
Vivado IDE約束管理器將任何已編輯的約束保存回XDC文件中的原始位置,但不會(huì)保存在Tcl腳本中。 任何新約束都保存在XDC文件的末尾
標(biāo)記為目標(biāo)。 在許多情況下,當(dāng)您的約束集包含多個(gè)XDC文件時(shí),其目標(biāo)約束文件不是列表中的最后一個(gè)文件,并且在打開或重新加載您的設(shè)計(jì)時(shí)不會(huì)最后加載。 因此,保存在磁盤上的約束序列可能與之前在內(nèi)存中的約束序列不同。
重要信息:您必須驗(yàn)證存儲(chǔ)在約束文件中的最終序列是否仍按預(yù)期工作。 如果必須修改序列,則必須通過直接編輯約束文件來修改它。
這對時(shí)序約束尤為重要。
約束文件順序
在沒有任何IP的項(xiàng)目流中,所有約束都位于約束集中。 默認(rèn)情況下,Vivado IDE中顯示的XDC文件(或Tcl腳本)的順序定義了在將精心設(shè)計(jì)或合成設(shè)計(jì)加載到工具中時(shí)工具使用的讀取順序記憶。
首先讀取列表頂部的文件,最后讀取底部的文件。 您只需在IDE中選擇文件并將其移動(dòng)到列表中的所需位置即可更改順序。
例如,在圖2-3中,使用拖放操作將文件wave_gen_pin.xdc移動(dòng)到文件wave_gen_timing.xdc之前。
等效的Tcl命令是:
在非項(xiàng)目模式下,read_xdc調(diào)用的順序決定了約束文件的計(jì)算順序。
約束文件使用IP核排序
許多IP內(nèi)核隨附一個(gè)或多個(gè)XDC文件。 在RTL項(xiàng)目中生成此類IP內(nèi)核時(shí),還會(huì)在各種設(shè)計(jì)編譯步驟中使用其XDC文件。
例如,圖2-4顯示項(xiàng)目中的一個(gè)IP核帶有一個(gè)XDC文件。
默認(rèn)情況下,在用戶XDC文件之前讀入IP XDC文件。 以這種方式處理它允許IP創(chuàng)建可以在XDC中引用的時(shí)鐘對象。 它還允許您覆蓋由IP內(nèi)核設(shè)置的物理約束,因?yàn)樵贗P之后評估用戶約束。 對于依賴于由用戶或其他IP創(chuàng)建的時(shí)鐘對象的IP核,此順序有一個(gè)例外(例如,get_clocks -of_objects [get_ports clka])。 在這種情況下,在用戶文件之后讀取IP XDC。
此行為由PROCESSING_ORDER屬性控制,為每個(gè)XDC文件設(shè)置:
• EARLY: Files that must be read first
• NORMAL: Default
• LATE: Files that must be read last
IP XDC將其PROCESSING_ORDER屬性設(shè)置為EARLY或LATE。 No IP提供屬于NORMAL約束組的XDC文件。 對于屬于同一個(gè)PROCESSING_ORDER組的用戶XDC(或Tcl)文件,它們的相對順序顯示在
Vivado IDE確定其讀取序列。 可以通過移動(dòng)Vivado IDE約束集中的文件或使用reorder_files命令來修改組中的順序。
對于屬于同一PROCESSING_ORDER組的IP XDC文件,順序由IP內(nèi)核的導(dǎo)入或創(chuàng)建順序確定。 創(chuàng)建項(xiàng)目后,無法更改此訂單。
最后,用戶組和IP XDC PROCESSING_ORDER組之間的相對順序是
如下:
1. User Constraints marked as EARLY
2. IP Constraints marked as EARLY (default)
3. User Constraints marked as NORMAL
4. IP Constraints marked as LATE (contain clock dependencies)
5. User Constraints marked as LATE
注意:將其PROCESSING_ORDER設(shè)置為LATE(為了在用戶約束后處理)的IP XDC文件命名為<IP_NAME> _clocks.xdc。
下圖顯示了如何設(shè)置PROCESSING_ORDER屬性的示例:
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腳本的讀取順序,請執(zhí)行以下操作:
1.在“源”窗口中,選擇要移動(dòng)的XDC文件或Tcl腳本。
2.將文件拖放到約束集中的所需位置。
對于圖2-3中所示的示例,等效的Tcl命令是:
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ì)算順序。
約束文件使用IP核排序
許多IP內(nèi)核隨附一個(gè)或多個(gè)XDC文件。 在RTL項(xiàng)目中生成此類IP內(nèi)核時(shí),還會(huì)在各種設(shè)計(jì)編譯步驟中使用其XDC文件。
例如,圖2-4顯示項(xiàng)目中的一個(gè)IP核帶有一個(gè)XDC文件。
更改讀取順序
要在約束集中更改XDC文件或非托管Tcl腳本的讀取順序,請執(zhí)行以下操作:
1.在“源”窗口中,選擇要移動(dòng)的XDC文件或Tcl腳本。
2.將文件拖放到約束集中的所需位置。
對于圖2-3中所示的示例,等效的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í)鐘的約束在XDC文件中分組
PROCESSING_ORDER設(shè)置為LATE。
默認(rèn)情況下,用戶XDC文件屬于PROCESSING_ORDER NORMAL組。 它們在EARLY XDC文件之后和LATE XDC文件之前加載。 對于每個(gè)PROCESSING_ORDER組,IP XDC文件的加載順序與IP核中列出的IP核的順序相同
來源窗口。 例如,下圖顯示了XDC文件附帶的項(xiàng)目IP內(nèi)核之一。
打開設(shè)計(jì)時(shí),日志文件顯示最后加載了IP XDC文件:
與用戶XDC文件不同,您無法直接更改IP XDC文件的讀取順序
屬于同一個(gè)PROCESSING_ORDER組。 如果您必須修改訂單,請執(zhí)行
以下:
1.禁用相應(yīng)的IP XDC文件(IS_ENABLED設(shè)置為false)。
2.復(fù)制他們的內(nèi)容。
3.將內(nèi)容粘貼到約束集中包含的一個(gè)XDC文件中。
4.使用完整的分層網(wǎng)表對象路徑名更新復(fù)制的IP XDC命令
在需要的地方。 這樣做是必需的,因?yàn)閷懭肓薎P XDC約束
這樣一種方式,它們可以作用于IP實(shí)例。
5.查看以特殊方式處理范圍約束的get_ports查詢。 有關(guān)XDC范圍的更多信息,請參閱約束范圍,第67頁。
輸入約束
Vivado IDE提供了幾種輸入約束的方法。 除非您在文本編輯器中直接編輯XDC文件,否則必須打開設(shè)計(jì)數(shù)據(jù)庫(詳細(xì)說明,綜合或?qū)崿F(xiàn))才能訪問Vivado IDE中的約束窗口。
在內(nèi)存中保存約束
您必須在內(nèi)存中設(shè)計(jì)一個(gè)設(shè)計(jì)才能在編輯期間驗(yàn)證您的約束。
使用Vivado IDE用戶界面編輯約束時(shí),將發(fā)出等效的XDC命令
在Tcl控制臺(tái)中,以便將其應(yīng)用于內(nèi)存中。必須先在內(nèi)存中應(yīng)用已編輯的時(shí)序約束,然后才能將其保存到XDC文件中。
在運(yùn)行綜合或?qū)崿F(xiàn)之前,必須將內(nèi)存中的約束保存回屬于項(xiàng)目的XDC文件。
Vivado IDE會(huì)在必要時(shí)提出您保存約束。
執(zhí)行以下操作之一以手動(dòng)保存約束
注意:保存內(nèi)存中的約束時(shí),會(huì)打開一個(gè)對話框,提醒您這可能導(dǎo)致合成和實(shí)現(xiàn)過時(shí)。 選擇“記住首選項(xiàng)”檢查
此對話框上的框以禁用此警告的未來實(shí)例。
運(yùn)行這些命令時(shí),Vivado會(huì)執(zhí)行以下操作:
•將所有新約束保存到約束集中標(biāo)記為目標(biāo)的XDC文件
與您的設(shè)計(jì)相關(guān)聯(lián)。
•將所有已編輯的約束保存回源自它們的XDC文件。
注意:約束管理系統(tǒng)保留原始XDC文件格式
可能。
約束編輯流程選項(xiàng)
圖2-7顯示了推薦的流量選項(xiàng)。 不要同時(shí)使用這兩個(gè)選項(xiàng)。 混合這些選項(xiàng)可能會(huì)導(dǎo)致您失去約束。
推薦的流程選項(xiàng)包括:
•用戶界面選項(xiàng)
•手動(dòng)編輯選項(xiàng)
用戶界面選項(xiàng)
由于Vivado IDE管理您的約束,因此您不能同時(shí)編輯XDC文件。 當(dāng)Vivado IDE保存內(nèi)存內(nèi)容時(shí),會(huì)發(fā)生以下情況:
•修改的約束替換原始文件中的原始約束。
•新約束將附加到標(biāo)記為目標(biāo)的文件中。
•將覆蓋XDC文件中的所有手動(dòng)編輯。
手編輯選項(xiàng)
使用“手動(dòng)編輯”選項(xiàng)時(shí),您負(fù)責(zé)編輯和維護(hù)XDC文件。 雖然您可能會(huì)使用Tcl控制臺(tái)來驗(yàn)證某些約束的語法,
關(guān)閉或重新加載設(shè)計(jì)時(shí),必須放棄在內(nèi)存中所做的更改。
如果在保存約束時(shí)發(fā)生沖突,系統(tǒng)會(huì)提示您選擇其中一個(gè)
以下:
Discarding the changes made in memory
• Saving the changes in a new file
• Overwriting the XDC files
約束創(chuàng)建是迭代的。 在某些情況下,您可以使用IDE編輯器,并在其他情況下手動(dòng)編輯約束文件。
在圖2-7中描述的每次迭代中,不要同時(shí)使用這兩個(gè)選項(xiàng)。
如果在兩個(gè)選項(xiàng)之間切換,則必須先保存約束或重新加載設(shè)計(jì),以確保內(nèi)存中的約束與XDC文件正確同步。
要在使用RTL分析時(shí)創(chuàng)建和編輯現(xiàn)有的頂級端口放置,
綜合或?qū)嵤┮庖姡?br />1.選擇I / O Planning預(yù)配置布局。
打開表2-3中顯示的窗口。
有關(guān)引腳分配的更多信息,請參閱“Vivado Design Suite用戶指南”中的此鏈接:
I / O和時(shí)鐘規(guī)劃(UG899)[參考3]。
布局規(guī)劃
在使用RTL分析,綜合或?qū)嵤┮晥D時(shí)創(chuàng)建和編輯Pblock:
1.選擇布局規(guī)劃預(yù)配置布局。
2. Open the windows shown in Table 2-4.
要在特定的BEL或SITE上創(chuàng)建單元格放置約束:
1.在“網(wǎng)表”視圖中選擇單元格。
2.將單元格拖放到“設(shè)備”視圖中的目標(biāo)位置。
有關(guān)布局規(guī)劃的更多信息,請參閱“Vivado Design Suite用戶指南”中的以下鏈接:
設(shè)計(jì)分析和關(guān)閉技術(shù)(UG906)[參考文獻(xiàn)4]。
時(shí)序約束向?qū)?br />時(shí)序約束向?qū)ёR(shí)別合成或?qū)崿F(xiàn)的設(shè)計(jì)上缺少的時(shí)序約束。 它分析網(wǎng)表,時(shí)鐘網(wǎng)絡(luò)連接和現(xiàn)有的時(shí)序約束,以便根據(jù)UltraFast設(shè)計(jì)提供建議
Vivado設(shè)計(jì)套件(UG949)[參考文獻(xiàn)5]的方法指南。 向?qū)У囊韵?1頁包含三類約束,后面是摘要。
包括以下步驟:
在每個(gè)步驟中,您可以接受建議的約束或通過選中或取消選中每個(gè)建議的約束來修改列表。 但是,在向?qū)У脑缙谌∠x中建議的約束可能會(huì)阻止其他的識(shí)別
后續(xù)步驟中缺少約束。 例如,如果您決定跳過創(chuàng)建時(shí)鐘,向?qū)⒉粫?huì)識(shí)別并推薦任何引用此時(shí)鐘的約束
或其自動(dòng)衍生的時(shí)鐘。
向?qū)У淖詈笠豁撎峁┝藢⒁獎(jiǎng)?chuàng)建的約束的摘要。 您可以單擊每個(gè)單獨(dú)的超鏈接以查看約束詳細(xì)信息,或在退出向?qū)Ш笤凇皶r(shí)序約束”窗口中顯示新約束。
單擊“完成”后,您還可以選擇生成以下建議的報(bào)告
驗(yàn)證設(shè)計(jì)是否完全受約束:
•創(chuàng)建時(shí)序摘要報(bào)告:除了check_timing報(bào)告之外,還會(huì)使用新約束報(bào)告時(shí)序松弛。 如果期限可能會(huì)顯示時(shí)間違規(guī)
或者您輸入的I / O延遲約束太難了。
•創(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窗口中編輯或刪除新約束
如果定時(shí)約束向?qū)б肓瞬话踩臅r(shí)序分析,則不建議使用約束。此外,該向?qū)Р粫?huì)修復(fù)已存在的不適當(dāng)約束
在內(nèi)存中加載設(shè)計(jì)時(shí)。然而,在項(xiàng)目模式下使用Vivado Design Suite時(shí),創(chuàng)建所有丟失的時(shí)鐘后,某些無效約束可能會(huì)生效;
有關(guān)更多詳細(xì)信息,請參閱下面的約束處理順序和無效約束。此外,在使用向?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è)置為“正!薄D繕(biāo)XDC文件必須屬于在內(nèi)存中打開且當(dāng)前選定的設(shè)計(jì)的約束集。目標(biāo)XDC文件在其他XDC文件中的位置很重要,因?yàn)樗付?br />建議的約束將在何時(shí)應(yīng)用并保存。此外,向?qū)?huì)嘗試重新應(yīng)用屬于目標(biāo)XDC文件之后解析的XDC文件的任何無效約束,以便提供最完整和準(zhǔn)確的建議。
例如,考慮來自synth_1的網(wǎng)表在內(nèi)存中使用約束集constr_1運(yùn)行。此約束集包含序列中的三個(gè)XDC文件
a.xdc,b.xdc和c.xdc。如果選擇b.xdc作為目標(biāo)XDC文件,并且每個(gè)文件包含無效約束,則“時(shí)序約束”向?qū)?yīng)用建議的時(shí)鐘,然后從c.xdc重新應(yīng)用無效約束,然后繼續(xù)下一步并發(fā)現(xiàn)其他缺少的約束。
非項(xiàng)目或設(shè)計(jì)檢查點(diǎn)(DCP)模式:您無法在這些模式下指定目標(biāo)XDC文件,因此“時(shí)序約束”向?qū)?huì)在約束序列的最后位置推薦并應(yīng)用新約束。 這相當(dāng)于在Tcl控制臺(tái)中輸入新約束或通過Timing Constraints窗口輸入新約束。 在這些模式下,向?qū)Р粫?huì)嘗試重新應(yīng)用無效約束。 如果需要在整個(gè)約束序列中更早地應(yīng)用新約束以解決約束依賴性或優(yōu)先級問題,則必須編輯約束
手動(dòng)順序。
您可以使用Timing Constraints窗口查看更新的時(shí)序約束序列。 查看新約束后,可以將序列保存到DCP中。
向?qū)Т蜷_時(shí)可用的報(bào)告功能
當(dāng)Timing Constraints向?qū)Т蜷_時(shí),它會(huì)阻止Vivado IDE中的大多數(shù)操作,包括使用Tcl控制臺(tái)或運(yùn)行時(shí)序分析,以避免數(shù)據(jù)庫差異。 向?qū)Т翱谑冀K位于其他Vivado IDE窗口的前面。 如果你
需要訪問Vivado IDE菜單或窗口,您必須將向?qū)Т翱谝频揭贿叀?br />Timing Constraints向?qū)Т蜷_時(shí),只有以下功能可用:
• Reporting and visualizing the clock networks
向?qū)У拇蠖鄶?shù)頁面都有按鈕來生成和訪問時(shí)鐘網(wǎng)絡(luò)報(bào)告,以便可視化時(shí)鐘拓?fù)洌鼈兊脑袋c(diǎn)以及某些時(shí)鐘的共享段。
請參閱Vivado Design Suite用戶指南:設(shè)計(jì)分析和關(guān)閉技術(shù)
(UG906)[參考4]了解有關(guān)時(shí)鐘網(wǎng)絡(luò)報(bào)告的更多詳細(xì)信息。
•在源文件中搜索名稱或在內(nèi)存中搜索設(shè)計(jì)中的對象
“編輯”菜單中提供了“查找和查找文件”對話框。您可以使用這些對話框用于在輸入時(shí)檢索有關(guān)設(shè)計(jì)的一些信息
向?qū)е械募s束。
•創(chuàng)建和查看原理圖
您可以在主Vivado IDE窗口中選擇設(shè)計(jì)對象并將其可視化原理圖。所有原理圖功能均可用。只有時(shí)間的最后一步
約束向?qū),異步時(shí)鐘域交叉,支持方便在“時(shí)序路徑”選項(xiàng)卡中選擇一個(gè)或多個(gè)條目時(shí)的原理圖交叉探測。
請參閱Vivado Design Suite用戶指南:使用Vivado IDE(UG893)[參考7]
有關(guān)使用原理圖的更多信息。
•使用Timing Constraints窗口可視化內(nèi)存中的約束
向?qū)У拿總(gè)頁面都包含一個(gè)選項(xiàng)卡,顯示相同的現(xiàn)有約束鍵入步驟建議的類型。這樣便于快速查看詳細(xì)信息
已在XDC文件中創(chuàng)建的約束。有關(guān)所有時(shí)序約束的完整視圖
在內(nèi)存中,Timing Constraints窗口顯示完整的約束序列,由XDC文件組織,包括范圍信息。它還顯示無效限制。
約束在向?qū)е芯庉?br />向?qū)У拿總(gè)步驟都可以推薦幾個(gè)約束。 根據(jù)約束,
您必須采取以下操作之一:
•使用以下方法之一取消選中您不想創(chuàng)建的約束
方法:
°通過取消選中每一行,從列表中刪除每個(gè)約束,一次一個(gè)。
°通過取消選中表格的左上角復(fù)選框來刪除所有約束。
通過單擊顯示未定義的單元格輸入缺少的值(例如,圖2-12中的clk2和clk3的頻率或周期值)。
您可以通過選擇相應(yīng)的行并單擊Edit Selected Rows按鈕同時(shí)編輯多個(gè)約束,如圖2-13所示。
Next, fill out any required fields, such as Frequency and Period as shown in Figure 2-14.
限制。
•如果不需要采取任何措施,只需查看約束。
檢查并完成所有已檢查的建議約束后,單擊
單擊下一步繼續(xù)下一頁。 您錯(cuò)過的任何條目都會(huì)阻止向?qū)нM(jìn)入下一步。
您可以使用“后退”按鈕重新訪問頁面。 如果在上一頁上編輯任何約束并單擊“下一步”,則向?qū)⒅匦路治鲈O(shè)計(jì)并推薦新約束
因此。 在大多數(shù)情況下,將恢復(fù)先前建議的不受更改影響的約束。 如果您只查看上一頁而不修改任何頁面
建議約束,向?qū)Р粫?huì)重新運(yùn)行任何分析,這通?梢怨(jié)省運(yùn)行時(shí)間。
重要信息:您無法使用“時(shí)序約束”向?qū)Ь庉嫭F(xiàn)有時(shí)序約束。 代替,
您必須使用Timing Constraints窗口。
向?qū)扑]的約束
主時(shí)鐘
向?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)。 它
對應(yīng)于時(shí)鐘信號在物理上進(jìn)入設(shè)計(jì)的時(shí)鐘樹根。 在
大多數(shù)情況下,時(shí)鐘源點(diǎn)是輸入時(shí)鐘端口,在某些特殊情況下它是
X-Ref目標(biāo) - 圖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í)鐘未經(jīng)檢查,因?yàn)樗鼈儍H用于報(bào)告目的,不會(huì)影響實(shí)現(xiàn)工具的結(jié)果質(zhì)量。
向?qū)?huì)自動(dòng)識(shí)別約束的正確時(shí)鐘源點(diǎn)。 它對應(yīng)于時(shí)鐘樹根,其中時(shí)鐘信號實(shí)際進(jìn)入設(shè)計(jì)。 在大多數(shù)情況下,時(shí)鐘源點(diǎn)是輸入時(shí)鐘端口,在某些特殊情況下,它是沒有定時(shí)弧的基元的輸出。 例如,在7系列設(shè)備中,向?qū)?huì)識(shí)別GT_CHANNEL基元輸出上缺少的主時(shí)鐘。 對于UltraScale™器件,Vivado設(shè)計(jì)套件能夠根據(jù)輸入時(shí)鐘特性和GT_CHANNEL自動(dòng)導(dǎo)出GT_CHANNEL輸出時(shí)鐘
配置和連接。 因此,向?qū)?huì)建議位于設(shè)計(jì)邊界上GT_CHANNEL單元上游的主時(shí)鐘。
生成的時(shí)鐘
時(shí)序約束向?qū)Ыㄗh在順序單元的輸出上創(chuàng)建生成時(shí)鐘,直接驅(qū)動(dòng)其他順序單元的時(shí)鐘引腳或
通過一些互連邏輯。 與PLL或MMCM不同,用戶邏輯不能乘以主時(shí)鐘的頻率,因此向?qū)H提供指定除法系數(shù)的選項(xiàng),如圖2-16所示。
當(dāng)多個(gè)主時(shí)鐘到達(dá)生成的時(shí)鐘源點(diǎn)時(shí),向?qū)⑹褂梦ㄒ坏拿Q和對個(gè)人的明確引用創(chuàng)建所有相應(yīng)的生成時(shí)鐘
主時(shí)鐘。 圖2-16說明了兩個(gè)時(shí)鐘(clk3和clk4)到達(dá)順序單元FDIV_Reg的情況。 因此,建議使用兩個(gè)生成的時(shí)鐘約束(FDIV和FDIV_1)。
注意:某些時(shí)鐘拓?fù)洌ɡ鐣r(shí)鐘路徑上的級聯(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í)鐘。 請參見圖2-17中“推薦約束”表的“源時(shí)鐘”列。
對于7系列器件系列,向?qū)ёR(shí)別的拓?fù)浣Y(jié)構(gòu)如下所示
圖2-18。 主時(shí)鐘或輸出緩沖器的性質(zhì)沒有限制。
對于UltraScale器件系列,ODDR和ODDRE1原語會(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。
在當(dāng)前的Vivado Design Suite版本中,當(dāng)反饋路徑中有連續(xù)單元時(shí),Timing Constraints向?qū)Р荒芙ㄗh外部延遲約束,
例如ODDR,用于生成轉(zhuǎn)發(fā)時(shí)鐘。 在這種情況下,您必須在退出向?qū)Ш笫謩?dòng)或使用Timing Constraints窗口創(chuàng)建外部延遲約束。
輸入延遲
Timing Constraints(時(shí)序約束)向?qū)Х治鰜碜暂斎攵丝诘乃新窂,以識(shí)別設(shè)計(jì)中的目標(biāo)時(shí)鐘及其活動(dòng)邊緣。 根據(jù)此信息,向?qū)?huì)建議基于的基本系統(tǒng)同步輸入延遲約束
Vivado IDE中提供的XDC模板(有關(guān)模板,請參閱XDC模板,第55頁)。 與所選模板關(guān)聯(lián)的波形顯示在窗口底部
在“推薦約束”表中選擇約束條目時(shí),在“波形”選項(xiàng)卡中。
對于每個(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è)置。
•對齊描述了與活動(dòng)時(shí)鐘相關(guān)的數(shù)據(jù)轉(zhuǎn)換對齊。
°僅適用于系統(tǒng)同步接口:
- Edge:當(dāng)時(shí)鐘和數(shù)據(jù)同時(shí)轉(zhuǎn)換時(shí)使用此設(shè)置。
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08