一、背景
Vivado中時(shí)序分析工具默認(rèn)會(huì)分析設(shè)計(jì)中所有時(shí)鐘相關(guān)的時(shí)序路徑,除非時(shí)序約束中設(shè)置了時(shí)鐘組或false路徑。使用set_clock_groups命令可以使時(shí)序分析工具不分析時(shí)鐘組中時(shí)鐘的時(shí)序路徑,使用set_false_path約束則會(huì)雙向忽略時(shí)鐘間的時(shí)序路徑
使用-group參數(shù)可以將一個(gè)時(shí)鐘設(shè)置到多個(gè)時(shí)鐘組中,如果時(shí)鐘組中沒有時(shí)鐘,則時(shí)鐘組為空組。只有至少兩個(gè)組都是非空組,為有效組時(shí)set_clock_groups約束才有效。如果只有一個(gè)組有效,其他組是空的,流程將會(huì)報(bào)錯(cuò)。
二、時(shí)鐘間關(guān)系
2.1 時(shí)鐘關(guān)系分類
兩個(gè)時(shí)鐘的關(guān)系可以是同步時(shí)鐘,異步時(shí)鐘,非擴(kuò)展時(shí)鐘。
同步時(shí)鐘: 兩個(gè)時(shí)鐘的相位關(guān)系是可預(yù)知的,常見的是兩個(gè)時(shí)鐘來源于相同的根時(shí)鐘或者共同的周期,如生成時(shí)鐘和主時(shí)鐘。
異步時(shí)鐘:當(dāng)兩個(gè)是時(shí)鐘的相位關(guān)系不可預(yù)知時(shí),則為異步時(shí)鐘,例如來源兩個(gè)晶振的時(shí)鐘,通過不同的輸入端口進(jìn)入到FPGA內(nèi)部,無法知道兩者的相位關(guān)系。
非擴(kuò)展時(shí)鐘:當(dāng)兩個(gè)時(shí)鐘在1000個(gè)周期內(nèi)仍無無法找到共同的邊沿,在這種情況下,最差的setup關(guān)系在超過1000個(gè)周期上,但是時(shí)序分析工具將無法確認(rèn)這是最差的情況。典型的例子是兩個(gè)奇數(shù)倍分頻的時(shí)鐘,如clk0和clk1都是由MMCMs產(chǎn)生的生成時(shí)鐘,周期分別為5.125ns和6.666ns。它們的上升沿在1000個(gè)周期內(nèi)不存在重合。時(shí)序分析工具有一個(gè)0.01ns的setup路徑裕量,盡管兩個(gè)時(shí)鐘有已知的相位關(guān)系,但它們的波形使得無法進(jìn)行正確的時(shí)序分析。
異步時(shí)鐘中,slack值可以按常規(guī)方法計(jì)算,但計(jì)算出的值不一定正確。因此,非擴(kuò)展時(shí)鐘通常作為異步時(shí)鐘。
2.2 時(shí)鐘關(guān)系查看
時(shí)鐘Vivado中Report Clock Interaction可以查看時(shí)鐘間的關(guān)系
下圖顏色方塊中,橫坐標(biāo)表示目的時(shí)鐘,縱坐標(biāo)表示源時(shí)鐘,黑色No path表示不存在時(shí)序路徑,藍(lán)色User ignored Paths為用戶設(shè)置了不分析的約束,紅色Timed(Unsafe)表示異步時(shí)鐘或非擴(kuò)展的時(shí)鐘,顏色塊下方的列表也顯示了時(shí)序的詳細(xì)信息。
三、異步時(shí)鐘組
3.1 優(yōu)先級(jí)
異步時(shí)鐘和非擴(kuò)展時(shí)鐘是沒法正確地進(jìn)行時(shí)序分析, 在它們之間的時(shí)序路徑在分析時(shí)應(yīng)該使用set_clock_groups進(jìn)行忽略。相比于其他時(shí)序例外的命令,set_clock_groups的優(yōu)先級(jí)最高,如果需要對(duì)異步時(shí)鐘進(jìn)行分析,則不能對(duì)該時(shí)鐘使用set_clock_groups命令。
3.2 使用格式
在Timing Constraints窗口中,Clocks列下選擇Set Clock Groups
進(jìn)入Set Clock Groups界面
Group name:設(shè)置時(shí)鐘組的名稱
Group 1: 添加屬于Group 1中的時(shí)鐘,點(diǎn)擊最右側(cè)的“+”可以設(shè)置多個(gè)組
The specified clocks are: 設(shè)置時(shí)鐘組里的時(shí)鐘與其他時(shí)鐘的關(guān)系,可為asynchronous,logically exclusive,physically exclusive。
-asynchronous:約束為異步時(shí)鐘組
-logically_exclusive:約束為邏輯互斥的時(shí)鐘組
-physically_exclusive:約束為物理線路互斥的時(shí)鐘組,設(shè)計(jì)中不能同時(shí)存在,最終表現(xiàn)的效果和-logically_exclusive是相同的。
約束命令示例:
set_clock_groups -name clk_group -asynchronous -group[get_clocks{create_clk1 gen_clk_2}]
3.3 asynchronous和exclusive
參數(shù)asynchronous表示創(chuàng)建異步時(shí)鐘組,使用場景如數(shù)據(jù)在不同速率的時(shí)鐘間通過FIFO進(jìn)行傳輸時(shí),使用異步時(shí)鐘組隔離時(shí)序關(guān)系。
參數(shù)exclusive表示時(shí)鐘組里的時(shí)鐘為互斥關(guān)系,例如,同一個(gè)節(jié)點(diǎn)中存在多個(gè)時(shí)鐘,當(dāng)同一時(shí)間內(nèi)只能一個(gè)時(shí)鐘生效,常用在時(shí)鐘多路復(fù)用上。
3.4 結(jié)果示例
以設(shè)計(jì)中存在4個(gè)時(shí)鐘clk1,clk2,clk3,clk4為例,時(shí)鐘之間均存在可分析的時(shí)序路徑。對(duì)時(shí)鐘進(jìn)行不同的時(shí)鐘組約束,約束后的分析結(jié)果如下,Y表示進(jìn)行時(shí)序分析,N表示不進(jìn)行時(shí)序分析,參數(shù)使用asynchronous。
a)場景1:
set_clock_groups -name clk_group -asynchronous -group[get_clocksclk1]
b)場景2
set_clock_groups -name clk_group -asynchronous -group[get_clocks{clk1 clk2}]
時(shí)鐘組內(nèi)部的時(shí)鐘間進(jìn)行時(shí)序分析,和外部的時(shí)鐘不會(huì)進(jìn)行時(shí)序分析
c)場景3
set_clock_groups -name clk_group -asynchronous -group[get_clocksclk1] -group[get_clocksclk2]
設(shè)置多個(gè)groups時(shí),groups之間的clk不會(huì)進(jìn)行時(shí)序分析
d)場景4
set_clock_groups -name clk_group -asynchronous -group[get_clocks{clk1 clk2}] -group[get_clocks{clk3 clk4}]
設(shè)置多個(gè)group時(shí),group內(nèi)部的時(shí)鐘間會(huì)進(jìn)行時(shí)序分析,group間不會(huì)進(jìn)行時(shí)序分析
總結(jié):set_clock_group中g(shù)roup內(nèi)部的時(shí)鐘只能組內(nèi)間進(jìn)行分析,不能跨組或與非約束中的時(shí)鐘進(jìn)行時(shí)序分析
-
命令
+關(guān)注
關(guān)注
5文章
719瀏覽量
22623 -
時(shí)序約束
+關(guān)注
關(guān)注
1文章
117瀏覽量
13569 -
Vivado
+關(guān)注
關(guān)注
19文章
823瀏覽量
67871
原文標(biāo)題:FPGA時(shí)序約束之設(shè)置時(shí)鐘組set_clock_groups
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
FPGA的IO口時(shí)序約束分析
FPGA時(shí)序約束的基礎(chǔ)知識(shí)

FPGA主時(shí)鐘約束詳解 Vivado添加時(shí)序約束方法

FPGA時(shí)序約束之衍生時(shí)鐘約束和時(shí)鐘分組約束
FPGA時(shí)序約束之偽路徑和多周期路徑
FPGA時(shí)序約束之建立時(shí)間和保持時(shí)間

Xilinx FPGA編程技巧之常用時(shí)序約束詳解
Xilinx FPGA編程技巧之常用時(shí)序約束詳解
FPGA實(shí)戰(zhàn)演練邏輯篇56:VGA驅(qū)動(dòng)接口時(shí)序設(shè)計(jì)之3時(shí)鐘約束
時(shí)序約束之時(shí)鐘組約束
FPGA中的時(shí)序約束設(shè)計(jì)

FPGA設(shè)計(jì)之時(shí)序約束

FPGA時(shí)序約束的原理是什么?

FPGA設(shè)計(jì)衍生時(shí)鐘約束和時(shí)鐘分組約束設(shè)置

評(píng)論