官术网_书友最值得收藏!

2.8 設(shè)計(jì)的約束

設(shè)計(jì)者指定的設(shè)計(jì)約束、分配和邏輯選項(xiàng)會(huì)影響 Quartus Prime 軟件編譯器實(shí)現(xiàn)設(shè)計(jì)的方式。編譯器嘗試以高于滿足設(shè)計(jì)約束的行為綜合和布局邏輯。此外,設(shè)計(jì)約束還會(huì)影響時(shí)序分析器與功耗分析器影響綜合、布局和布線。

設(shè)計(jì)者可以使用腳本在圖形用戶接口(Graphic User Interface,GUI)中指定設(shè)計(jì)約束,也可以在保存約束的文件中直接指定約束。Quartus Prime 軟件在下面的文件中保留 GUI 中指定的約束。

1)Intel Quartus Prime設(shè)置文件(.qsf)

位置為“<工程目錄>/<版本名字>.qsf”。包含工程當(dāng)前版本的項(xiàng)目范圍和實(shí)例級(jí)分配,采用Tcl語(yǔ)法。工程的每個(gè)版本都有一個(gè)單獨(dú)的.qsf文件。

2)Synopsys設(shè)計(jì)約束文件(.sdc)

位置為“<工程目錄>/<版本名字>.sdc”。時(shí)序分析器使用業(yè)界標(biāo)準(zhǔn)的 SDC(Synopsys Design Constraints,SDC)格式,并將這些約束保存在.sdc文件中。

使用Tcl,通過(guò)組合.qsf文件和.sdc文件的語(yǔ)法,設(shè)計(jì)者就可以自動(dòng)執(zhí)行多個(gè)不同設(shè)置的迭代、修改約束和重新編譯。

2.8.1 通過(guò)GUI指定約束的方法

Quartus Prime軟件提供的工具可以幫助設(shè)計(jì)者手動(dòng)實(shí)現(xiàn)你的設(shè)計(jì)。這些工具支持設(shè)計(jì)可視化、預(yù)填充參數(shù)和窗口交叉探測(cè),編譯設(shè)計(jì)探索和調(diào)試。

在 Quartus Prime 軟件中創(chuàng)建或更新約束時(shí),“Message”窗口的“System”標(biāo)簽將顯示等效的Tcl命令。利用這些命令作為未來(lái)腳本化設(shè)計(jì)定義和編譯的參考。

1.全局約束和分配

全局約束和工程設(shè)置影響整個(gè) Quartus 工程和設(shè)計(jì)中所有適用的邏輯。在工程的早期開(kāi)發(fā)階段,設(shè)計(jì)者經(jīng)常定義全局約束。例如,運(yùn)行New Project Wizard時(shí),Quartus Prime軟件在.qsf 文件中保存全局約束,每個(gè)工程的修訂版本有一個(gè)。用于設(shè)置全局約束的 Quartus 工具如表2.10所示。

表2.10 用于設(shè)置全局約束的Quartus工具

2.節(jié)點(diǎn)、實(shí)體和實(shí)例級(jí)約束

節(jié)點(diǎn)、實(shí)體和實(shí)例級(jí)的約束應(yīng)用于設(shè)計(jì)層次結(jié)構(gòu)的子集,這些約束優(yōu)先于影響設(shè)計(jì)層次結(jié)構(gòu)相同部分的任何全局分配。Quartus設(shè)置節(jié)點(diǎn)、實(shí)體和實(shí)例級(jí)的約束如表2.11所示。

表2.11 Quartus設(shè)置節(jié)點(diǎn)、實(shí)體和實(shí)例級(jí)的約束

2.8.2 使用Tcl腳本約束設(shè)計(jì)的方法

設(shè)計(jì)者可以使用.sdc 和.qsf 設(shè)置文件執(zhí)行所有的設(shè)計(jì)分配。通過(guò)使用 Tcl 腳本,將這些文件集成到編譯和優(yōu)化流程中。即使.sdc 和.qsf 文件是用 Tcl 語(yǔ)法編寫的,但它們本身不能執(zhí)行。

當(dāng)使用 Quartus Tcl 包時(shí),設(shè)計(jì)者的腳本就可以打開(kāi)工程,進(jìn)行分析和編譯設(shè)計(jì),并將編譯結(jié)果與已知目標(biāo)和基準(zhǔn)進(jìn)行比較。此外,這樣的腳本可以通過(guò)修改約束和重新編譯設(shè)計(jì)來(lái)自動(dòng)迭代設(shè)計(jì)過(guò)程。

1.創(chuàng)建工程和應(yīng)用約束

命令行可執(zhí)行文件包括用于公共全局工程設(shè)置和命令的選項(xiàng)。設(shè)計(jì)者可以使用 Tcl 腳本應(yīng)用約束,如引腳位置和時(shí)序分配。通過(guò)執(zhí)行菜單命令Project->Generate Tcl File for Project來(lái)寫一個(gè)Tcl約束文件或者為一個(gè)已經(jīng)存在的工程生成一個(gè)文件。

該示例使用Tcl腳本創(chuàng)建項(xiàng)目,并使用<Intel Quartus Prime安裝目錄>/qdesigns/fir_filter目錄中的教程設(shè)計(jì)文件應(yīng)用工程約束,如代碼清單2-4所示。

代碼清單2-4 Tcl約束(1)

將腳本保存到一個(gè)名字為“setup_proj.tcl”的文件中,并在命令行提示符下面輸入示例中說(shuō)明的命令,以創(chuàng)建設(shè)計(jì)、應(yīng)用約束、編譯設(shè)計(jì),以及執(zhí)行快角(Fast-Corner)和慢角(Slow-Corner)定時(shí)分析。時(shí)序分析的結(jié)果保存在filtref_sta_1.rpt和filtref_sta_2.rpt文件中,如代碼清單2-5所示。

代碼清單2-5 Tcl約束(2)

輸入如代碼清單 2-6 所示的命令,創(chuàng)建設(shè)計(jì)、應(yīng)用約束和編譯設(shè)計(jì),沒(méi)有執(zhí)行時(shí)序分析。

代碼清單2-6 Tcl約束(3)

quartus_sh-flow 編譯命令執(zhí)行全編譯,它等效于在工具欄中單擊“Start Compilation”按鈕

2.分配一個(gè)引腳

使用下面的Tcl命令,將一個(gè)信號(hào)分配到一個(gè)引腳或器件位置,如代碼清單2-7所示。代碼清單2-7 Tcl約束(4)

有效的位置是所使用 FPGA 芯片的引腳名字。某些器件還支持邊沿位置和 I/O 組位置。其中,邊沿位置可以是 EDGE_BOTTOM、EDGE_LEFT、EDGE_TOP 和 EDGE_RIGHT;I/O組位置包括IOB ANK_1~I(xiàn)OBANK_n,其中n是設(shè)備中I/O組的數(shù)量。

3.產(chǎn)生Quartus設(shè)置文件

Quartus Prime軟件允許設(shè)計(jì)者從當(dāng)前版本產(chǎn)生.qsf文件。設(shè)計(jì)者可以在一個(gè)腳本編譯流程中嵌入這些約束,甚至為設(shè)計(jì)優(yōu)化創(chuàng)建.qsf文件集。

為了從 Quartus Prime 軟件生成.qsf 文件,在 Quartus Prime 主界面主菜單下,選擇Assignments->Export Assignments。

要以人們可讀的形式組織.qsf文件,執(zhí)行菜單命令Project->Organize Intel Quartus Prime Settings File,生成組織的.qsf文件,如代碼清單2-8所示。

代碼清單2-8 組織的.qsf文件

這個(gè)例子給出了.qsf 文件如何表征設(shè)計(jì)修訂。set_global_assignment 命令實(shí)現(xiàn)所有全局約束和軟件設(shè)置,set_location_assignment 將設(shè)計(jì)中的每個(gè) I/O 節(jié)點(diǎn)約束到器件的一個(gè)物理引腳。

4..sdc文件

Quartus Prime軟件將時(shí)序約束保存在.sdc文件中,該文件使用了Tcl腳本。設(shè)計(jì)者可以將這些約束嵌入到一個(gè)腳本編譯流程中,甚至可以為時(shí)序優(yōu)化創(chuàng)建.sdc 文件集。一個(gè)小型設(shè)計(jì)的時(shí)序約束文件如代碼清單2-9所示。

代碼清單2-9 一個(gè)小型設(shè)計(jì)的時(shí)序約束

5.Tcl腳本流程

作為對(duì).sdc 文件和.qsf 文件的替代方法,設(shè)計(jì)者可以在 Tcl 腳本中執(zhí)行所有設(shè)計(jì)分配和時(shí)序約束。在這種情況下,自動(dòng)編譯和定制結(jié)果報(bào)告的腳本也包含在設(shè)計(jì)約束中。

設(shè)計(jì)者可以將設(shè)計(jì)的內(nèi)容導(dǎo)出到過(guò)程的可執(zhí)行 Tcl(.tcl)文件,然后在嘗試使用其他約束后使用生成的腳本來(lái)恢復(fù)設(shè)置。

執(zhí)行菜單命令Project->Generate Tcl File for Project,將約束導(dǎo)出為可執(zhí)行Tcl腳本,如代碼清單2-10所示。

代碼清單2-10 bliking_led_generated.tcl文件

2.8.3 在Assignment Editor中添加約束條件

在Assignment Editor中為clk添加全局約束條件的步驟主要包括:

(1)在Quartus Prime主界面主菜單中,選擇Assignments->Assignment Editor。

(2)彈出“Assignment Editor”界面,如圖2.70所示。在該界面中,雙擊“To”一欄下面的“《new》”,則變成如圖2.71所示的界面。在“To”一欄下面單擊按鈕。

圖2.70 “Assignment Editor”界面(1)

(3)彈出“Node Finder”對(duì)話框。在該對(duì)話框界面中,單擊“Look in:”右側(cè)的按鈕。

圖2.71 “Assignment Editor”界面(2)

(4)彈出“Select Hierarchy Level”對(duì)話框,如圖2.72所示。在該對(duì)話框中,選中top。

(5)單擊“OK”按鈕,退出“Select Hierarchy Level”對(duì)話框。

(6)在“Node Finder”對(duì)話框中,在“Named”標(biāo)題欄右側(cè)的文本框中輸入通配符*,然后單擊“Search”按鈕。

(7)如圖 2.73 所示,在“Matching Nodes:”標(biāo)題欄的下方列出了設(shè)計(jì)中的所有節(jié)點(diǎn),選中clk選項(xiàng),單擊按鈕,將clk添加到右側(cè)的“Nodes Found:”標(biāo)題欄的下方。

(8)單擊“OK”按鈕,退出“Node Finder”對(duì)話框。

(9)如圖2.74所示,雙擊“Assignment Name”一欄中的“《new》”,出現(xiàn)浮動(dòng)菜單。在浮動(dòng)菜單內(nèi),選擇Global Signal(Accepts wildcards),表示clk具有全局信號(hào)屬性。

(10)如圖 2.75 所示,雙擊“Value”一欄和“clk”一行交叉的空白處,彈出浮動(dòng)菜單。在浮動(dòng)菜單內(nèi),選擇Global Clock,表示將clk指定為全局時(shí)鐘。

圖2.72 “Select Hierarchy Level”對(duì)話框

圖2.73 “Node Finder”對(duì)話框

圖2.74 選擇Global Signal(Accepts wildcards)

圖2.75 選擇Global Clock

(11)如圖 2.75 所示,雙擊“Enabled”一欄和“clk”一行交叉的空白處,彈出浮動(dòng)菜單。在浮動(dòng)菜單內(nèi),選擇Yes。

(12)按“Ctrl+S”組合鍵,保存在Assignment Editor內(nèi)的修改。

2.8.4 在Pin Planner中添加約束條件

在FPGA設(shè)計(jì)時(shí),I/O 規(guī)劃(I/O planning)包括創(chuàng)建與引腳相關(guān)的分配,并針對(duì)引腳布局指南來(lái)驗(yàn)證它們。這個(gè)過(guò)程可以確保目標(biāo)器件內(nèi)適配的成功。當(dāng)設(shè)計(jì)者在工程的初始階段規(guī)劃和分配 I/O 引腳時(shí),設(shè)計(jì)與目標(biāo)器件和 PCB 特性的兼容性。因此,設(shè)計(jì)過(guò)程可以減少迭代次數(shù),并且可以更快地開(kāi)發(fā)出精確的PCB布局。

設(shè)計(jì)者甚至可以在定義設(shè)計(jì)文件之前規(guī)劃 I/O 引腳。分配尚未在設(shè)計(jì)文件中定義的預(yù)期節(jié)點(diǎn),包括接口 IP 核信號(hào),并且產(chǎn)生頂層文件。頂層文件例化設(shè)計(jì)的下一層結(jié)構(gòu),包括存儲(chǔ)器、高速I/O、設(shè)備配置等接口端口信息和調(diào)試工具。

通過(guò)名字或拖動(dòng)到單元格,將設(shè)計(jì)元素、I/O 標(biāo)準(zhǔn)、接口 IP 和其他屬性分配到器件的I/O引腳,然后產(chǎn)生頂層文件用于I/O驗(yàn)證。

使用I/O分配驗(yàn)證來(lái)完全分析I/O引腳與VCCIO、VREF、電遷移(電流密度)、同步切換輸出(Simultaneous Switching Output,SSO)、驅(qū)動(dòng)強(qiáng)度、I/O標(biāo)準(zhǔn)、PCI_IO鉗位二極管和I/O引腳方向兼容性規(guī)則。Quartus Prime軟件提供Pin Planner工具,用于查看、分配和驗(yàn)證器件I/O引腳的邏輯與屬性?;蛘?,設(shè)計(jì)者可以在Tcl腳本中或直接在HDL代碼中輸入I/O分配。

在Pin Planner中添加I/O約束條件的步驟主要包括:

(1)在Quartus Prime主界面主菜單下,選擇Assignments->Pin Planner。

(2)彈出“Pin Planner”對(duì)話框,如圖2.76所示。下面介紹一些術(shù)語(yǔ)。

圖2.76 “Pin Planner”對(duì)話框

① 器件封裝(以BGA為例)。

如圖 2.77 所示,陶瓷或塑料散熱器表面安裝有 FPGA 芯片和 I/O 引腳或焊球。在引腳鍵合BGA示例中,銅線將檢查焊盤連接到封裝的焊球。

圖2.77 BGA封裝結(jié)構(gòu)

在 Pin Planner 主界面主菜單下,選擇 View->Show->Package Top 或 View->Show->Package Bottom,查看器件的頂視圖(從上往下看)和底視圖(從下往上看)。

② I/O組(I/O Bank)。

將 I/O 組中的 I/O 引腳分組,以分配 I/O 標(biāo)準(zhǔn)。每個(gè)編號(hào)的組有它自己的電源引腳,稱為 VCCIO 引腳,用于高 I/O 性能。VCCIO 引腳指定的電壓范圍為 1.5~3.3V。每個(gè)組包含帶有不同I/O標(biāo)準(zhǔn)的多個(gè)引腳。在一個(gè)組中的所有引腳必須使用相同的VCCIO信號(hào)。

在Pin Planner主界面主菜單下,選擇View->Show->I/O Banks,查看不同的I/O組,如圖2.78所示。

圖2.78 Cyclone 10 GX器件內(nèi)不同的I/O組(用不同的顏色和編號(hào)標(biāo)識(shí))

③ I/O引腳(I/O Pin)。

封裝底部或者外圍上的引線或小焊球。每個(gè)引腳都有一個(gè)字母行和列號(hào),從不使用字母I、O、Q、S、X和Z。當(dāng)超過(guò)時(shí),重復(fù)字母,并且以字母A作為前綴。默認(rèn),顯示所有I/O引腳。

④ 焊盤(Pad)。

I/O 引腳連接到位于硅片頂部金屬層周邊的焊盤。每個(gè)焊盤都用一個(gè)從 0 開(kāi)始的 ID 編號(hào),并在器件周圍以逆時(shí)針?lè)较蜻f增。

在Pin Planner主界面主菜單下,選擇View->Pad View,打開(kāi)“Pad View”界面,如圖2.79所示。

圖2.79 “Pad View”界面(局部放大)

⑤ VREF引腳組(VREF Pin Group)。

一組引腳,包括電壓參考I/O標(biāo)準(zhǔn)所需的一個(gè)專用VREF引腳。VREF組包含的引腳數(shù)少于 I/O 組。這樣,可以保持 VREF 引腳的信號(hào)完整性。I/O 組中存在一個(gè)或多個(gè)VREF 組。VREF 組中的引腳存在于 I/O 組中。VREF 組中的引腳共享相同的 VCCIO 和VREF電壓。

(3)在 Pin Planner 主界面底部的窗口中,以列表的形式給出了 Node Name(節(jié)點(diǎn)的名字),其中 Direction (方向)由綜合后的網(wǎng)表得到,設(shè)計(jì)者不能在這里修改其方向,如圖2.80所示。

(4)使用下列方式之一,確定“Node Name”一欄下每個(gè)邏輯端口在FPGA器件物理引腳的位置(使用C10-EDP-1硬件開(kāi)發(fā)平臺(tái),參考附錄給出的硬件原理圖)。

圖2.80 邏輯引腳與器件的物理引腳對(duì)應(yīng)

① 雙擊“Node Name”一欄下每行節(jié)點(diǎn)所對(duì)應(yīng)“Location”欄下的空白單元格,出現(xiàn)下拉框,設(shè)計(jì)者可以通過(guò)下拉框選擇合適的引腳位置,也可以在單元格中直接輸入引腳的位置。

② 選中“Node Name”一欄下的某一行節(jié)點(diǎn),然后拖曳到圖 2.78 內(nèi)相應(yīng)的引腳位置即可。

思考與練習(xí)2-8:在圖2.78中查看每個(gè)邏輯端口在FPGA上具體物理引腳的位置,以及I/O組的編號(hào)。

(5)在“I/O Standard”一欄下為所有節(jié)點(diǎn)選擇1.8V標(biāo)準(zhǔn),這是因?yàn)樵揑/O組采用1.8V供電。

(6)在Pin Planner主界面主菜單下,選擇File->Export…。

(7)彈出“Export”對(duì)話框。在該對(duì)話框中,將保存類型設(shè)置為“Tcl Script File (*.tcl)”,并將文件名命名為“Pin_constraint”,并用寫字板打開(kāi)該文件,可以看到其約束格式,如代碼清單2-11所示。

代碼清單2-11 Pin_contraint.tcl文件

(8)切換到Quartus Prime主界面中,在“Assignment Editor”界面中可以看到新添加的I/O約束條件,如圖2.81所示。

圖2.81 “Assignment Editor”界面

2.8.5 I/O分配分析

I/O 分配分析根據(jù)完整的 I/O 系統(tǒng)和電路板布線規(guī)則集來(lái)驗(yàn)證 I/O 分配的合理性。完整的 I/O 分配分析驗(yàn)證直接饋送到或由 PLL、LVDS 或千兆收發(fā)器塊等資源饋送的塊。此外,檢查器驗(yàn)證VREF引腳使用的正確性、引腳位置和混合I/O標(biāo)準(zhǔn)。

在早期引腳規(guī)劃期間運(yùn)行 I/O 分配分析,在編譯之前驗(yàn)證開(kāi)始保留的引腳分配。一旦確定了設(shè)計(jì)文件,運(yùn)行 I/O 分配分析以對(duì)綜合網(wǎng)表執(zhí)行更徹底的合法性檢查。每當(dāng)修改 I/O 分配時(shí)運(yùn)行I/O分配檢查。

適配器分配引腳以適應(yīng)你的約束。例如,如果將邊沿位置分配給一組LVDS引腳,則適配器會(huì)為指定邊沿位置的每個(gè)LVDS引腳分配引腳位置,然后執(zhí)行合法性檢查。要顯示適配器放置的引腳,在Pin Planner主界面主菜單下,選擇View->Show->Show Fitter Placements。要接受這些建議的引腳位置,設(shè)計(jì)者必須對(duì)引腳分配進(jìn)行逆向注解。

查看 I/O 分配警告報(bào)告,以查看和解決所有的分配警告。例如,警告某些設(shè)計(jì)引腳具有未定義的驅(qū)動(dòng)強(qiáng)度或壓擺率。適配器將未定義的單端輸出和雙向引腳識(shí)別未非校準(zhǔn) OCT。要解決警告,為報(bào)告的引腳分配電流強(qiáng)度和壓擺率。或者,為引腳分配端接。當(dāng)引腳有OCT分配時(shí),設(shè)計(jì)者無(wú)法分配驅(qū)動(dòng)強(qiáng)度或壓擺率。

根據(jù)表2.12給出的I/O規(guī)則檢查示例驗(yàn)證設(shè)計(jì)分配。

表2.12 I/O規(guī)則檢查示例

信號(hào)切換噪聲規(guī)則如表2.13所示。

表2.13 信號(hào)切換噪聲規(guī)則

執(zhí)行I/O分配分析的步驟主要包括:

(1)在Pin Planner主界面主菜單下,選擇Processing->Start I/O Assignment Analysis,Quartus軟件開(kāi)始執(zhí)行I/O分配分析。

(2)完成分析后,通過(guò)下面兩種方法之一打開(kāi)編譯報(bào)告。

① 在“Tasks”窗口的“Compilation”標(biāo)題欄下,單擊“Compilation Report”選項(xiàng)。

② 在“Compilation Dashboard”界面中,單擊“Plan”右側(cè)的按鈕。

(3)彈出“Compilation Report-top”界面,如圖2.82所示。

圖2.82 “Compilation Report-top”界面

① I/O Rule(I/O規(guī)則)部分包括I/O Rules Details(I/O規(guī)則細(xì)節(jié))、I/O Rules Matrix (I/O 規(guī)則矩陣)、I/O Rules Summary(I/O 規(guī)則總結(jié)),它們列出了關(guān)于測(cè)試 I/O 規(guī)則的總結(jié)、細(xì)節(jié)和矩陣信息。

圖 2.82 的右側(cè)窗口中指示規(guī)則是否 Pass(通過(guò))、Fail(失?。?、或 Unchecked(沒(méi)有檢查)。嚴(yán)重等級(jí)表示規(guī)則對(duì)有效分析的重要性。“Inapplicabe(不適用)”規(guī)則不適用于目標(biāo)器件系列。

② I/O Assignment Warnings(I/O分配警告)列出了每個(gè)引腳生成的警告信息。

③ Resource Section(資源部分),具體包括Input Pins、Output Pins、I/O Bank Usage等信息,用于定量顯示各種引腳類型和I/O組的使用。

2.8.6 添加簡(jiǎn)單的時(shí)序約束條件

本節(jié)將介紹.sdc文件及優(yōu)先級(jí),以及添加簡(jiǎn)單的時(shí)序約束的方法。

1..sdc文件及優(yōu)先級(jí)

設(shè)計(jì)者必須將自己創(chuàng)建的.sdc 文件添加到工程中,以便在適配和時(shí)序分析時(shí)讀取它。適配器和時(shí)序分析器按.sdc 文件在.qsf 文件中出現(xiàn)的順序來(lái)處理它。如果.qsf 文件中沒(méi)有出現(xiàn).sdc文件,則Quartus Primer軟件會(huì)在工程目錄中搜索名字為<current revision>.sdc的.sdc文件。

設(shè)計(jì)者可以在Quartus Prime軟件主界面主菜單下,選擇Settings->Timing Analyzer,以添加、刪除或更改工程中.sdc文件的處理順序。

如果使用Quartus Prime文本編輯器創(chuàng)建.sdc文件,則在保存文件時(shí)默認(rèn)使能“Add file to the project”(添加文件到工程中)選項(xiàng)。如果使用其他編輯器創(chuàng)建.sdc文件,則必須將該文件添加到該工程中。

.sdc 文件僅包含時(shí)序約束命令,用于操作時(shí)序網(wǎng)表或控制編譯的 Tcl 命令必須位于單獨(dú)的Tcl腳本中。

本節(jié)將添加 create_clock 約束,該約束允許設(shè)計(jì)者定義設(shè)計(jì)中時(shí)鐘的屬性和要求。設(shè)計(jì)者必須定義時(shí)鐘約束以確定設(shè)計(jì)的性能并限制進(jìn)入FPGA的外部時(shí)鐘。設(shè)計(jì)者可以在時(shí)序分析器圖形用戶接口(Graphic User Interface,GUI)中輸入約束,或者直接在.sdc文件中輸入約束條件。

如果在命令行中鍵入 read_sdc 命令而沒(méi)有任何參數(shù),則時(shí)序分析器會(huì)讀取嵌入在HDL文件中的時(shí)序,然后遵循.sdc文件的優(yōu)先級(jí)順序。

2.添加簡(jiǎn)單時(shí)序約束

下面將為該設(shè)計(jì)添加簡(jiǎn)單的時(shí)序約束條件,主要步驟包括:

(1)在Quartus Prime主界面主菜單下,選擇File->New…。

(2)彈出“New”對(duì)話框。在該對(duì)話框中,展開(kāi) Other Files。在展開(kāi)項(xiàng)中,選擇Synopsys Design Constraints File。

(3)單擊“OK”按鈕。

(4)按“Ctrl+S”組合鍵,將該文件保存為Timing_constaint.sdc,并關(guān)閉該文件。

(5)使用下面的方式之一啟動(dòng)時(shí)序分析器(Timing Analyzer)。

① 在 Quartus Prime 主界面的“Tasks”窗口的“Analysis”標(biāo)題欄下,找到并用鼠標(biāo)左鍵單擊“Timing Analyzer”。

② 在 Quartus Prime 主界面主菜單下,選擇Tools->Timing Analyzer。

(6)啟動(dòng) Timing Analyzer(時(shí)序分析器)主界面。在該主界面主菜單下,選擇 Netlist->Create Timing Netlist…。

(7)出現(xiàn)“Create Timing Netlist”對(duì)話框,如圖2.83所示。在該對(duì)話框中,單擊“OK”按鈕。

圖2.83 “Create Timing Netlist”對(duì)話框

(8)在Timing Analyzer主界面主菜單下,選擇Constraints->Create Clock…。

(9)彈出“Create Clock”對(duì)話框,如圖 2.84(a)所示。在該對(duì)話框中,設(shè)計(jì)者可以指定時(shí)鐘名字(Clock name,-name)、時(shí)鐘周期(Period,-period)、波形邊沿(Waveform edges)上升(Rising)和下降(Falling)的值,以及應(yīng)用于約束的目標(biāo)信號(hào)(Targets)。

在該設(shè)計(jì)中,按如下設(shè)置參數(shù)。

① Clock name:clk1.

② Period:10.000ns.

③ 單擊“Targets:”右側(cè)的按鈕,彈出“Name Finder”對(duì)話框。在該對(duì)話框中,單擊“List”按鈕。在左下方窗口中列出了 9 個(gè)信號(hào),選中 clk,然后單擊按鈕,將該信號(hào)添加到右側(cè)的窗口中,如圖2.84(b)所示。

圖2.84 “Create Clock”和“Name Finder”對(duì)話框

(10)單擊“OK”按鈕,退出“Name Finder”對(duì)話框。

(11)在“Create Clock”對(duì)話框的“SDC command:”右側(cè)的文本框中給出了創(chuàng)建時(shí)鐘的SDC命令格式為“create_clock-name clk1-period 10.000 [get_ports{clk}]”。

該約束將時(shí)鐘的頻率約束為最少100MHz(period為10.000ns)。

(12)單擊“Create Clock”對(duì)話框中的“Run”按鈕,退出該對(duì)話框。

(13)在 Timing Analyzer 主界面底部的窗口中,在“tcl>”提示符后,給出并運(yùn)行了該條tcl命令,如圖2.85所示。

圖2.85 運(yùn)行create_clock命令

在時(shí)序分析器中定義的約束直接應(yīng)用于時(shí)序數(shù)據(jù)庫(kù),但不會(huì)自動(dòng)轉(zhuǎn)移到.sdc文件。因此,需要選擇Write SDC File命令,以將GUI中的約束變化保留到.sdc文件中。

(14)通過(guò)下面方式之一,將tcl命令寫到.sdc文件中。

① 在Timing Analyzer左下方的“Tasks”窗口中,找到并單擊“Write SDC File…”,如圖2.86所示。

② 在Timing Analyzer主界面主菜單下,選擇Constraints->Write SDC File…。

(15)如圖2.87所示,彈出“Write SDC File”對(duì)話框。在該對(duì)話框中,通過(guò)單擊“SDC file name:”右側(cè)的按鈕,定位到前面創(chuàng)建的 Timing_constraint.sdc 文件。從該對(duì)話框中可知,寫.sdc文件的Tcl命令為“write_sdc-expand"Timing_constaint.sdc"”。

圖2.86 “Tasks”窗口

圖2.87 “Write SDC File”對(duì)話框

(16)單擊“OK”按鈕,退出“Write SDC File”對(duì)話框。

(17)退出Timing Analyzer主界面。

讀者可以打開(kāi) Timing_constraint.sdc 文件查看時(shí)鐘約束的腳本命令(后面會(huì)詳細(xì)介紹時(shí)序約束),如代碼清單2-12所示。

代碼清單2-12 Timing_constraint.sdc文件

主站蜘蛛池模板: 五指山市| 新化县| 凌海市| 和平县| 松潘县| 孟州市| 康保县| 海阳市| 射阳县| 平顶山市| 台安县| 长兴县| 岐山县| 长宁县| 缙云县| 石嘴山市| 民乐县| 博乐市| 且末县| 宁乡县| 吉木萨尔县| 上饶市| 云林县| 竹山县| 英吉沙县| 文登市| 兴和县| 蒙阴县| 江孜县| 二手房| 鄱阳县| 石屏县| 武安市| 夹江县| 中山市| 襄城县| 平湖市| 二手房| 鹤山市| 沅江市| 武宁县|