日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

FPGA時(shí)序約束和timequest timing analyzer

 yng326309158 2018-06-25

FPGA時(shí)序約束

時(shí)鐘約束

#**************************************************************

# Create Clock

#**************************************************************

create_clock -period 8 -name "ENET0_RX_CLK" [get_ports ENET0_RX_CLK]

create_clock -period 8 -name "ENET1_RX_CLK" [get_ports ENET1_RX_CLK]

create_clock -period 8 -name "ENET2_RX_CLK" [get_ports ENET2_RX_CLK]

 

get_ports,get_nets,get_pins區(qū)別

 

PLL時(shí)鐘約束

# Uncommenting one of the following derive_pll_clocks lines

# will instruct the TimeQuest Timing Analyzer to automatically

# create derived clocks for all PLL outputs for all PLLs in a

# Quartus design.

# If the PLL inputs are constrained elsewhere, uncomment the

# next line to automatically constrain all PLL output clocks.

derive_pll_clocks

# If the PLL inputs are not constrained elsewhere, uncomment

# the next line to automatically constrain all PLL input and

# output clocks.

# derive_pll_clocks -create_base_clocks

 

方法 1 – 自動(dòng)創(chuàng)建基時(shí)鐘和 PLL 輸出時(shí)鐘
這一方法使您能夠自動(dòng)地約束 PLL 的輸入和輸出時(shí)鐘。ALTPLL megafunction 中指定的
所有 PLL 參數(shù)都用于約束 PLL 的輸入和輸出時(shí)鐘。自動(dòng)更新了 ALTPLL megafunction
的修改。當(dāng)創(chuàng)建 PLL 的輸入和輸出時(shí)鐘時(shí),不必跟蹤 PLL 參數(shù)的更改或指定正確的值。
為了自動(dòng)約束所有輸入和輸出 , 要將 derive_pll_clocks 命令和 -create_base_clocks
選項(xiàng)一起使用。基于 PLL MegaWizard TM  Plug-In Manager 例化,TimeQuest
analyzer
確定正確的設(shè)置。


derive_pll_clocks -create_base_clocks

 

方法 2 – 手動(dòng)創(chuàng)建基時(shí)鐘和自動(dòng)創(chuàng)建 PLL 輸出時(shí)鐘
通過(guò)這種方法 , 可以手動(dòng)約束 PLL 的輸入時(shí)鐘并且使 TimeQuest analyzer 能夠自動(dòng)
約束 PLL 的輸出時(shí)鐘。除此之外 , ALTPLL megafunction 中指定的輸入時(shí)鐘頻率相
反,您可以指定一個(gè)不同的輸入時(shí)鐘頻率。通過(guò)使用 ALTPLL megafunction 中指定的
參數(shù)自動(dòng)創(chuàng)建 PLL 輸出時(shí)鐘。您可以嘗試不同的輸入時(shí)鐘頻率 , 同時(shí)保持相同的 PLL
輸出時(shí)鐘參數(shù)。
1
確保指定的所有輸入時(shí)鐘頻率與當(dāng)前配置的 PLL 相兼容。
可以將此方法與 derive_pll_clocks 命令一起使用并且手動(dòng)創(chuàng)建 PLL 的輸入時(shí)鐘。


create_clock -period 10.000 -name clk [get_ports {clk}]
derive_pll_clocks

 

方法 3 – 手動(dòng)創(chuàng)建基時(shí)鐘和 PLL 輸出時(shí)鐘
通過(guò)這種方法 , 可以手動(dòng)約束 PLL 的輸入時(shí)鐘和輸出時(shí)鐘。指定了所有的 PLL 參數(shù)并
且參數(shù)值可以不同于 ALTPLL megafunction 中指定的參數(shù)值。除此之外 , 您可以嘗試
各種 PLL 輸入和輸出頻率以及參數(shù)。
您可以將該方法與 create_clock create_generate_clock 命令的組合一起使用。


create_clock -period 10.000 -name clk [get_ports {clk}]
create_generated_clock \
-name PLL_C0 \
-source [get_pins {PLL|altpll_component|pll|inclk[0]}] \
[get_pins {PLL|altpll_component|pll|clk[0]}]
create_generated_clock \
-name PLL_C1 \
-multiply_by 2 \
-source [get_pins {PLL|altpll_component|pll|inclk[0]}] \
[get_pins {PLL|altpll_component|pll|clk[1]}]

 

 

時(shí)鐘約束出錯(cuò)

 

Warning (332174): Ignored filter at SDC1.sdc(1): CPU_clk could not be matched with a port

Warning (332049): Ignored create_clock at SDC1.sdc(1): Argument <targets> is an empty collection

Warning (332060): Node: SYS_clk was determined to be a clock but was found without an associated clock assignment.

沒(méi)有對(duì)時(shí)鐘進(jìn)行約束設(shè)置

Node: <Node name> was determined to be a clock but was found without an associated clock assignment. (ID: 332060)

 

CAUSE: This can be caused in two ways: 1) A clock assignment was determined to be invalid, so its source objects no longer have a clock associated with them. 2) When analyzing the netlist, the node was found feeding a clock port with no other clocks feeding it.

ACTION: Use the derive_clocks command to automatically find all clock nodes in the design. Also, for any clocks that were ignored, review the warning or error message associated with the command to prevent the clock from being ignored.

 

Timequest timing analyzer使用方法

 

步驟1:執(zhí)行初始編譯

在應(yīng)用時(shí)序約束設(shè)計(jì)之前,通過(guò)表1創(chuàng)建一個(gè)初始數(shù)據(jù)庫(kù)。初始數(shù)據(jù)庫(kù)從設(shè)計(jì)的post-map結(jié)過(guò)中生成。

 

表 1-1. 執(zhí)行初始編譯 (1)

Quartus II軟件GUI

命令行

在Processing菜單上,指向Start,點(diǎn)擊Start Analysis & Synthesis。

輸入: quartus_map filtrefr

表 1-1注釋:

  1. quartus_map用于創(chuàng)建一個(gè)post-map數(shù)據(jù)庫(kù)。
  2. Analysis & Synthesis階段生成post-map數(shù)據(jù)庫(kù)。
  3. 您也可以為初始數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)post-fit網(wǎng)表。不過(guò),創(chuàng)建一個(gè)post-map網(wǎng)表耗時(shí)較少,并且用于本教程的例子已經(jīng)足夠了。

圖 1    Analysis & Synthesis

步驟2:運(yùn)行TimeQuest Timing Analyzer

通過(guò)表 2-1中的程序,運(yùn)行TimeQuest Timing Analyzer來(lái)創(chuàng)建和驗(yàn)證所有時(shí)序約束和例外。此命令將打開TimeQuest shell。

表 2-1. 運(yùn)行TimeQuest Timing Analyzer

Quartus II軟件GUI

命令行

在Tools菜單中,單擊TimeQuest Timing Analyzer。

輸入:

quartus_sta –sr

project_open fir_filter -revision filtrefr

1 當(dāng)您直接從Quartus II軟件中運(yùn)行TimeQuest Timing Analyzer時(shí),當(dāng)前工程將會(huì)自動(dòng)打開。如果使用GUI,那么當(dāng)出現(xiàn)下面的消息時(shí),請(qǐng)選擇No:

"No SDC files were found in the Quartus Settings File and filtref.sdc doesn't exist. Would you like to generate an SDC file from the Quartus Settings File?"

圖 2TimeQuest Timing Analyzer

步驟3:創(chuàng)建一個(gè)Post-map時(shí)序網(wǎng)表

在指定時(shí)序要求之前,請(qǐng)創(chuàng)建一個(gè)時(shí)序網(wǎng)表。您可以從post-map或post-fit數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)時(shí)序網(wǎng)表。在這一步驟中,通過(guò)表 3-1中的程序,從"步驟1:執(zhí)行初始編譯"中創(chuàng)建的post-map數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)時(shí)序網(wǎng)表。

表 3-1. 創(chuàng)建一個(gè)Post-Map時(shí)序網(wǎng)表

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

1.在Netlist菜單上,點(diǎn)擊Create Timing Netlist。 出現(xiàn) Create Timing Netlist對(duì)話框。

2.在Input netlist中,選擇Post-Map。

3.點(diǎn)擊OK。

輸入:create_timing_netlist –post_map

1 您不能在Tasks面板中使用Create Timing Netlist命令來(lái)創(chuàng)建一個(gè)post-map時(shí)序網(wǎng)表。默認(rèn)情況下,Create Timing Netlist需要一個(gè)post-fit數(shù)據(jù)庫(kù)。

圖 3Create Timing Netlist

圖 4Input netlist

圖 5waiting

 

圖 6創(chuàng)建完畢

步驟4:指定時(shí)序要求

在設(shè)計(jì)中定義時(shí)鐘。每個(gè)時(shí)鐘的屬性列表請(qǐng)參考表 4-1

表 4-1.設(shè)計(jì)中的時(shí)鐘

時(shí)鐘端口名稱

要求

Cpsl_Clk25M_i

50/50占空比的25 MHz

在設(shè)計(jì)中創(chuàng)建時(shí)鐘并通過(guò)表 4-2中的程序分配正確的時(shí)鐘端口。要了解關(guān)于TimeQuest Timing Analyzer所支持的約束的詳細(xì)信息,請(qǐng)參考Quartus II 手冊(cè) 第3卷中的TimeQuest Timing Analyzer章節(jié)。

表 4-2. 創(chuàng)建時(shí)鐘并分配時(shí)鐘端口

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

1.在Constraints菜單中,點(diǎn)擊 Create Clock。出現(xiàn)Create Clock對(duì)話框。對(duì)25 MHz時(shí)鐘指定參數(shù)。單擊RUN。

輸入:

#create the 25 MHz (20 ns) clock create_clock –period 20 [get_ports Cpsl_Clk25M_i]

2. 在Constraints菜單中,點(diǎn)擊Drive PLL clocks。出現(xiàn)Drive PLL clocks對(duì)話框,前面指定了PLL基時(shí)鐘,什么都不選直接單擊RUN即可。

 

1 默認(rèn)情況下,如果未使用-waveform選項(xiàng),那么create_clock命令假設(shè)50/50的占空比。

f 要了解關(guān)于創(chuàng)建不同占空比時(shí)鐘的詳細(xì)信息,請(qǐng)參考Quartus II手冊(cè) 第3卷中的TimeQuest Timing Analyzer章節(jié)。

完成表 4-2中顯示的程序后,時(shí)鐘定義完成。

圖 7Create clock

圖 8設(shè)置參數(shù)

圖 9指定時(shí)鐘

圖 10 Create clock設(shè)置完畢

圖 11Drive PLL clocks

步驟5:更新時(shí)序網(wǎng)表(timing Netlist)

在您創(chuàng)建時(shí)序約束或例外后,通過(guò)表 5-1中的程序,對(duì)時(shí)序網(wǎng)表進(jìn)行更新,將所有時(shí)序要求應(yīng)用到時(shí)序網(wǎng)表(新的clkclkx2時(shí)鐘約束)。

1 只要應(yīng)用了新的時(shí)序約束,就必須對(duì)時(shí)序網(wǎng)表進(jìn)行更新。

表 5-1. 更新時(shí)序網(wǎng)表(Timing Netlist)

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊Update Timing Netlist命令。

輸入:update_timing_netlist

圖 12Update Timing Netlist

步驟6:保存Synopsys Design Constraints(SDC)文件

在為設(shè)計(jì)指定時(shí)鐘約束并更新時(shí)序網(wǎng)表后,您可以通過(guò)表 6-1中的程序來(lái)選擇創(chuàng)建SDC文件。通過(guò)TimeQuest Timing Analyzer GUI或者在控制臺(tái)(console)中指定的約束不會(huì)自動(dòng)保存

1 如果您在設(shè)計(jì)流程中無(wú)意覆蓋任何約束,那么請(qǐng)使用這個(gè)初始SDC文件來(lái)恢復(fù)所有約束。初始SDC文件可作為包含設(shè)計(jì)的原始約束和例外的"golden" SDC文件。

表 6-1. 保存SDC文件

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

1.在Tasks面板中,雙擊Write SDC File命令。出現(xiàn)Write SDC File對(duì)話框。

2.在File Name欄輸入名稱。

輸入:write_sdc -name.sdc r

新的.sdc文件包含"步驟4:指定時(shí)序要求"中定義的時(shí)鐘約束。Write SDC File命令可以覆蓋任何現(xiàn)有的SDC文件。當(dāng)這種情況出現(xiàn)時(shí),新的SDC文件沒(méi)有保持順序或注釋。因此,Altera建議單獨(dú)保存利用文本編輯器可以手動(dòng)編輯的一個(gè)golden SDC文件。這使您能夠根據(jù)自身的規(guī)范輸入注釋并組織文件。

步驟7:對(duì)初始時(shí)時(shí)序網(wǎng)表生成時(shí)序報(bào)告

通過(guò)表 7-1中的程序定義的時(shí)鐘,在指定時(shí)序約束和更新時(shí)序網(wǎng)表后,生成時(shí)序報(bào)告,這驗(yàn)證了時(shí)鐘被正確地定義并應(yīng)用到正確的節(jié)點(diǎn)。TimeQuest Timing Analyzer提供易于使用的報(bào)告生成命令,使您能夠驗(yàn)證設(shè)計(jì)中的所有的時(shí)序要求。

表 7-1. 保存SDC命令

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊Report SDC命令。

輸入:report_sdc

圖 13生成SDC約束報(bào)告(SDC Assignments Report)

SDC Assignments報(bào)告了在指定設(shè)計(jì)中包含的所有時(shí)序約束和例外。生成兩個(gè)報(bào)告:一個(gè)用于時(shí)鐘和一個(gè)用于時(shí)鐘組。

可以用表 7-2中的程序生成一個(gè)報(bào)告,來(lái)總結(jié)設(shè)計(jì)中所有的時(shí)鐘。

表 7-2. 生成報(bào)告時(shí)鐘報(bào)告(Report Clocks Report)

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊Report Clocks命令。

輸入:report_clocks

圖 14時(shí)鐘報(bào)告

 

通過(guò)表 7-3中的程序,使用Report Clock Transfers命令生成一個(gè)報(bào)告來(lái)驗(yàn)證所有的時(shí)鐘到時(shí)鐘傳輸都是有效的。這種報(bào)告包含設(shè)計(jì)中所有的時(shí)鐘到時(shí)鐘傳輸。

表 7-3. 生成報(bào)告時(shí)鐘傳輸(Report Clock Transfers)

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊Report Clock Transfers命令。

輸入:report_clock_transfers

圖 15時(shí)鐘傳輸報(bào)告(Clock Transfers Report)

 

本環(huán)節(jié)只是告訴這個(gè)部分偽路徑可以作為例外不進(jìn)行分析。實(shí)際的時(shí)序要在做設(shè)計(jì)時(shí)保證其正確。So,不再詳細(xì)描述,以后可能會(huì)補(bǔ)充。

 

Clock Transfers報(bào)告表明在clk(源時(shí)鐘)和clkx2(目的時(shí)鐘)之間存在跨時(shí)鐘域路徑。共有16條路徑,其中clk為源節(jié)點(diǎn)提供時(shí)鐘,clkx2為目的節(jié)點(diǎn)提供時(shí)鐘。

在fir_filter設(shè)計(jì)中,不必分析clkclkx2的時(shí)鐘傳輸,因?yàn)樗鼈兪呛雎月窂?。通過(guò)表 7-4中的程序聲明clkclkx2的路徑為偽路徑。當(dāng)完成該程序后,TimeQuest Timing Analyzer表明Clock Transfers報(bào)告是過(guò)時(shí)的。

表 7-4. 聲明偽路徑

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

1.在Clock Transfers報(bào)告中,在From Clock列選擇clk。

2.右擊并選擇Set False Paths Between Clock Domains。這個(gè)命令表明將所有由clk驅(qū)動(dòng)的源寄存器到由clkx2驅(qū)動(dòng)的目的寄存器之間的路徑設(shè)為偽路徑。

輸入:

set_false_path -from [get_clocks clk] \

-to [get_clocks clkx2] r

1 另外,也可以使用set_clock_groups命令來(lái)聲明兩個(gè)時(shí)鐘域之間的路徑為偽路徑。例如,set_clock_groups -asynchronous -group [get_clocks clk] -group

[get_clocks clkx2]。該命令表明clkclkx2以及clkx2clk的所有路徑為偽路徑。此方法是優(yōu)選的。

由于您添加了一個(gè)新的時(shí)序約束,通過(guò)表 2-14中的程序更新時(shí)序網(wǎng)表(timing netlist)。

表 2-14. 更新Timing Netlist

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊Update Timing Netlist命令。

輸入:update_timing_netlistr

在GUI中輸入set_false_path后,所有生成的報(bào)告面板上都標(biāo)有"Out of Date",這表明報(bào)告面板不包含反映TimeQuest Timing Analyzer中當(dāng)前狀態(tài)的約束或者例外的結(jié)果。要更新報(bào)告面板,必須重新生成所有的報(bào)告。

在命令行,重新輸入命令。在GUI中,右擊報(bào)告面板列表中任何過(guò)時(shí)(out-of-date) 的報(bào)告,并選擇Regenerate或Regenerate all。

更新時(shí)序網(wǎng)表后,通過(guò)表 2-15中的程序驗(yàn)證時(shí)鐘到時(shí)鐘傳輸已經(jīng)被聲明為偽路徑。

表 2-15. 驗(yàn)證使用Report SDC命令

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊Report SDC。

輸入:report_sdcr

圖 2-4顯示了新的SDC Assignments報(bào)告。

圖 2-4中顯示的報(bào)告表明時(shí)鐘約束和偽路徑是正確的。

使用Report Clocks和Report Clock Transfers命令來(lái)驗(yàn)證這兩個(gè)時(shí)鐘已經(jīng)從分析中移除了。圖 2-5顯示了Clock Transfers報(bào)告。

步驟8:保存約束到SDC文件

在指定設(shè)計(jì)中所有的時(shí)鐘約束和偽路徑后,通過(guò)表 8-1中的程序?qū)r(shí)序約束和例外保存到SDC文件。

表 8-1. 保存約束到SDC文件

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

1.在Tasks面板中,雙擊Write SDC File。出現(xiàn)Write SDC File對(duì)話框。

2.在File name欄,輸入-name.sdc.

輸入:write_sdc -name.sdc

1 這一過(guò)程覆蓋之前所創(chuàng)建的filtref.sdc文件。如果通過(guò)Write SDC File命令覆蓋SDC,那么在新的SDC文件中移除了定制的格式和注釋。

.sdc 文件包含時(shí)鐘約束偽路徑例外

步驟9:執(zhí)行Timing-Driven編譯

保存約束到SDC文件后,在設(shè)計(jì)上運(yùn)行一個(gè)全編譯以優(yōu)化布線,從而符合約束。不過(guò),在開始全編譯之前,通過(guò)表 9-1中的程序?qū)DC添加到工程中。

表 9-1. 添加SDC文件到工程中

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

1.在Project菜單中,點(diǎn)擊Add/Remove Files In Project。出現(xiàn)Add/Remove Files In Project對(duì)話框。

2.通過(guò)瀏覽來(lái)選擇.sdc。

3.點(diǎn)擊OK。

輸入:

set_global_assignment -name SDC_FILE \ -name.sdc

將SDC添加到工程后,通過(guò)表 9-2中的程序,在設(shè)計(jì)上運(yùn)行一個(gè)全編譯。

表 9-2. 運(yùn)行一個(gè)全編譯

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Processing菜單中,點(diǎn)擊Start Compilation。

輸入:quartus_sh --flow compile -name

完成編譯后,TimeQuest Timing Analyzer在Compilation Report中生成時(shí)鐘建立和時(shí)鐘保持的檢查總結(jié)報(bào)告。

步驟10:在TimeQuest Timing Analyzer中驗(yàn)證時(shí)序

要獲得指定路徑中詳細(xì)的時(shí)序分析數(shù)據(jù),請(qǐng)查看TimeQuest Timing Analyzer中的時(shí)序分析結(jié)果。

 

1 完全執(zhí)行布線布局功能(place-and-route)后,運(yùn)行"步驟2:運(yùn)行TimeQuest Timing Analyzer"中所介紹的TimeQuest Timing Analyzer。生成一個(gè)post-fit時(shí)序網(wǎng)表,通過(guò)表 10-1中的程序,讀取SDC文件并更新時(shí)序網(wǎng)表來(lái)生成關(guān)于最新編譯的報(bào)告。

 

表 10-1. 生成關(guān)于Latest Compilation的報(bào)告

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊所需報(bào)告的命令。例如:Report All Summaries。

輸入:

create_timing_netlist read_sdc filref.sdc update_timing_netlist report_clocks

create_timing_summary -setup create_timing_summary -hold create_timing_summary -recovery create_timing_summary -removal report_min_pulse_width -nworst 10

1 當(dāng)雙擊其中一個(gè)報(bào)告命令時(shí),Create Timing Netlist、Read SDC和Update Timing Netlist命令依次在Tasks面板中執(zhí)行,自動(dòng)生成時(shí)序網(wǎng)表。

時(shí)鐘建立檢查確保每個(gè)寄存器至寄存器的傳輸不違反SDC指定的時(shí)序約束。通過(guò)表 10-2中的程序,生成一個(gè)時(shí)鐘建立總結(jié),對(duì)設(shè)計(jì)中的所有時(shí)鐘進(jìn)行檢查,來(lái)驗(yàn)證沒(méi)有出現(xiàn)違規(guī)。

表 10-2. 生成時(shí)鐘設(shè)置總結(jié)檢查(Clock Setup Summary Check)

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊 Report Setup Summary。

輸入:create_timing_summary –setup

 

Summary (Setup)報(bào)告

1 clkx2時(shí)鐘沒(méi)有出現(xiàn)在Summary (Setup)報(bào)告中,這是因?yàn)?span style="font-family: Courier New;">clk和clkx2之間所有的時(shí)鐘路徑已經(jīng)聲明是偽路徑。此外,fir_filter設(shè)計(jì)不包含任何寄存器到寄存器的路徑,其中目的寄存器路徑由clkx2來(lái)驅(qū)動(dòng)。

Summary (Setup)報(bào)告中的Slack列表明clk能滿足約束,并有11.588 ns的余量。End Point TNS列是指定時(shí)鐘域中所有的總負(fù)裕量(TNS)的總和。使用這個(gè)值來(lái)測(cè)量指定時(shí)鐘域中失敗路徑的總數(shù)。

 

生成Summary (Setup)報(bào)告后,通過(guò)表 2-21中的程序,在設(shè)計(jì)中生成一個(gè)時(shí)鐘保持檢查總結(jié)。

表 10-3. 生成Summary (Hold) Report

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊Report Hold Summary。

輸入:create_timing_summary –hold r

圖 16Summary (Hold)報(bào)告

Summary (Hold)報(bào)告表明clk時(shí)鐘節(jié)點(diǎn)符合時(shí)序約束,并有0.661 ns的余量。在執(zhí)行全編譯之前,通過(guò)表 10-4中的程序指定所有的時(shí)序約束和例外。這樣可以確保 Fitter優(yōu)化設(shè)計(jì)中的關(guān)鍵路徑。

您可以使用Report Unconstrained Paths命令來(lái)驗(yàn)證已經(jīng)約束fir_filter設(shè)計(jì)中的所有路徑。

表 10-4. 指定時(shí)序約束和例外

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

在Tasks面板中,雙擊Report Unconstrained Paths。

輸入:report_ucp r

圖 17Unconstrained Paths總結(jié)報(bào)告

Unconstrained Paths總結(jié)報(bào)告表明有大量的未約束路徑,并詳細(xì)介紹了這些路徑的類型。

要充分約束此設(shè)計(jì),利用由TimeQuest Timing Analyzer所提供的整套SDC約束。要充分約束fir_filter設(shè)計(jì),約束所有的輸入和輸出端口。使用Set Input Delay和Set Output Delay對(duì)話框,或set_input_delayset_output_delay約束來(lái)指定輸入和輸出延遲值。

由于附加約束應(yīng)用于設(shè)計(jì),通過(guò)文本編輯器(例如:inout_delay.sdc)創(chuàng)建僅包含輸入和輸出約束的額外SDC。添加表 10-5所示的輸入和輸出延遲分配到"步驟8:保存約束到SDC文件"創(chuàng)建的新SDC中。

10-5. 輸入和輸出延遲分配

The TimeQuest Timing Analyzer GUI

The TimeQuest Timing Analyzer Console

1.Constraints菜單中,點(diǎn)擊Set Input Delay。出現(xiàn)Set Input Delay對(duì)話框。

2.輸入以下內(nèi)容:

Clock name: clk

Delay value: 2

Targets: [get_ports {d[0] d[1] d[2] d[3] \

d[4] d[5] d[6] d[7] newt reset}]

3.Constraints菜單中,點(diǎn)擊Set Output Delay。出現(xiàn)Set Output Delay對(duì)話框。

4.輸入以下內(nèi)容:

Clock name: clk

Delay value: 1.5

Targets: [get_ports {yn_out[0] yn_out[1] \ yn_out[2] yn_out[3] yn_out[4] yn_out[5] \ yn_out[6] yn_out[7] yvalid follow}]

要約束輸入端口,輸入:

set_input_delay -clock clk 2 \

[get_ports {d* newt reset}] r

要約束輸出端口,輸入:

set_output_delay -clock clk 1.5 \ [get_ports {yn_out* yvalid follow}] r

在讀取包含輸入和輸出延遲約束的SDC后,所有設(shè)計(jì)中的端口應(yīng)該都加上了約束。

1 記住讀取新的約束后更新時(shí)序網(wǎng)表。要了解更多信息,請(qǐng)參考"步驟5:更新時(shí)序網(wǎng)表(Timing Netlist)"。要驗(yàn)證所有設(shè)計(jì)中的端口都已經(jīng)加上了約束,重新生成Unconstrained Paths Summary 報(bào)告。

圖 18重新生成Unconstrained Paths Summary報(bào)告

結(jié)論

通過(guò)表 10-6中的程序,對(duì)設(shè)計(jì)的時(shí)鐘或節(jié)點(diǎn)生成特定的時(shí)序檢查報(bào)告。表 10-6中的程序生成一個(gè)報(bào)告,其中clk驅(qū)動(dòng)目的寄存器,并且目的寄存器為 acc:inst3|result,報(bào)告10條最差路徑。

10-6. 生成Report Timing報(bào)告

TimeQuest Timing Analyzer GUI

TimeQuest Timing Analyzer Console

1.在Tasks面板中,雙擊Report Timing。出現(xiàn)Report Timing 對(duì)話框。

2.輸入以下內(nèi)容:

To Clock: clk

To: acc:inst3|result*

Report number of paths: 10

3.剩下其它的欄使用默認(rèn)的設(shè)置。

輸入:

report_timing -to_clock clk -to / acc:inst3|result* -setup -npaths 10

圖 2-10顯示了Report Timing報(bào)告。

使用Tasks面板中的Report Top Failing Paths命令來(lái)生成一個(gè)報(bào)告,該報(bào)告詳細(xì)介紹了設(shè)計(jì)中的最差的失敗路徑。

 

根據(jù)Quartus_II_TimeQuest說(shuō)明書_CH.pdf修改而成,因原教程使用的工程quartus中l(wèi)isence不支持器件。

 

 

結(jié)論

您創(chuàng)建新的約束或例外,基于新的約束或例外重新運(yùn)行Quartus II Fitter來(lái)優(yōu)化設(shè)計(jì)。設(shè)計(jì)上的多個(gè)迭代對(duì)于完成所需的結(jié)果是必要的。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多