新四季網

sta時序約束(STA學習記錄-時鐘定義)

2023-04-21 16:31:38 3

#頭條創作挑戰賽#

STA的準備工作包括:設定時鐘、指定IO時序特性、指定false path和multicycle path

1 什麼是STA環境

看下面這張圖,假定Design Under Analysis(DUA)會與其他同步設計交互,這意味著DUA會從前一級觸發器接收數據,並將數據發送到DUA後一級觸發器

為了對這種設計執行STA,需要指定觸發器的時鐘、進入DUA和退出DUA的所有路徑上的時序約束

2 指定時鐘

定義時鐘時需要提供以下信息:

Clock source:可以是design的port,也可以是design內部的pinPeriod:時鐘周期Duty cycle:高電平持續時間和低電平持續時間Edge time:上升沿和下降沿出現的時刻

通過時鐘定義,所有內部的timing path都將受到約束,表明所有的internal path都可以用時鐘路徑來分析

下面是一個基本的時鐘定義:

create_clock \ -name SYSCLK \ -period 20 \ -waveform {0 5} \ [get_ports SCLK]

在這個例子中,定義的時鐘名稱為SYSCLK,並且指定定義的時鐘是在埠 SCLK上定義的

SYSCLK的時鐘周期時20(如果沒有明確指定時間的單位,默認是ns)

在-waveform中,第一個變量是上升沿出現的時刻,第二個變量是下降沿出現的時刻,因此在這個例子中,上升沿出現在0ns,下降沿出現在5ns

這個例子對應的波形圖如下

-waveform中可以指定任意數量的邊沿,但是所有的邊沿必須在一個周期之內

邊沿時刻從0時刻之後的第一個上升沿開始,然後依次是下降沿、上升沿、下降沿……

-waveform {time_rise time_fall time_rise time_fall ...}

在-waveform中需要指定偶數個邊沿,並且-waveform指定的是一個周期內的波形,在後續周期中不斷重複

如果沒有指定-waveform,默認是

-waveform {0, period/2}

下面看一個不使用-waveform選項的時鐘定義

create_clock -period 5 [get_ports SCAN_CLK]

其對應的波形圖如下:

在這個例子中,由於沒有指定-name,因此定義時鐘名稱與埠名稱相同

再來看另一個例子

create_clock -name BDYCLK \ -period 15 \ -waveform {5 12} \ [get_ports GBLCLK]

其對應的波形圖如下:

在這個例子中,根據-waveform可以知道,第一個上升沿出現在5ns,第一下降沿出現在12ns

因為選項-waveform給出的上升沿和下降沿時刻會在每個cycle裡重複,又因為-period指定周期是15ns,

所以在第二個cycle中,上升沿應該出現在15 5=20ns處

下降沿出現在15 12=27ns處

再來看另外兩個例子:

# Figure (a) create_clock -period 10 \ -waveform {0 5} \ [get_ports FCLK] #Figure (b) create_clock -period 125 \ -waveform {100 150} \ [get_ports ARMCLK]

對應的波形圖如下:

對於圖(a),周期為10ns,上升沿出現在5ns,下降沿出現在10ns

在第二個cycle中,上升沿出現在10 5=15ns,下降沿出現在10 10=20ns

對於圖(b),周期為125ns,從選項-waveform {100 150}可以知道,上升沿出現在100ns處,並且 high duration = 150-100=50ns,那麼low duration = period - high duration,即low duration = 75ns

因為150ns的時刻已經超出了第一個cycle的時間範圍,並且low duration的時長小於上升沿出現的時刻,那麼可以推斷出 在第一個cycle中有一個下降沿,這個下降沿出現的時刻可以用100 - low duration得到(100 - 75 = 25ns)

出現這種情況的原因是:選項-waveform要從上升沿開始

根據下面的例子,再次理解一下選項-waveform

#Figure (a) create_clock -period 1.0 \ -waveform {0.5 1.375} \ [get_ports MAIN_CLK] ​ #Figure (b) create_clock -period 1.2 \ -waveform {0.3 0.4 0.8 1.0} \ [get_ports JTAG_CLK]

對應的波形圖如下:

在這個例子中,圖(a)的分析方式與上一個例子相同

圖(b)由於選項-waveform中給出的上升沿和下降沿時刻都在第一個cycle時間範圍內,因此不需要進行額外的推斷

在某些情況下,比如在頂層的輸入埠或某些PLL的輸出埠,工具無法自動計算出過渡時間,此時在clock source出顯示指定過渡時間很有用,可以使用set_clock_transition來指定

set_clock_transition -rise 0.1 [get_clocks CLK_CONFIG]set_clock_transition -fall 0.12 [get_clocks CLK_CONFIG]# 這個約束僅適用於ideal clocks,一旦構建了時鐘樹就將其忽略

3 時鐘不確定度

可以用set_clock_uncertainty來指定時鐘周期的timing uncertainty,用不確定度來建模那些會降低有效時鐘周期的因素

set_clock_uncertainty -setup 0.2 [get_clocks CLK_CONFIG]set_clock_uncertainty -hold 0.05 [get_clocks CLK_CONFIG]

setup check會減少可用的有效時鐘周期

對於hold check,clock uncertainty被用作需要滿足的額外時序裕量

這裡我的理解是,由於clock uncertainty的存在,減小了有效的時鐘周期,並且在clock uncertainty範圍內,我們無法預測clock是否有效,為了保證數據的正確性,在進行數據傳輸時,應當避開clock uncertainty的範圍

下面幾個command可以用來指定跨時鐘邊界path上的clock uncertainty,被稱為 inter-clock uncertainty

set_clock_uncertainty -from VIRTUAL-SYS_CLK -to SYSCLK -hold 0.05set_clock_uncertainty -from VIRTUAL-SYS_CLK -to SYSCLK -setup 0.3set_clock_uncertainty -from SYS_CLK -to CFG_CLK -hold 0.05set_clock_uncertainty -from SYS_CLK -to CFG_CLK -setup 0.1

從圖中可以看到,該電路為兩個不同的clock domain SYS_CLK和CFG_CLK之間的path,根據上面約束可知,setup check的uncertainty是100ps,hold check的uncertainty是50ps

4 時鐘延遲

可以使用set_clock_latency來指定時鐘的延遲,用法如下:

set_clock_latency 1.8 -rise [get_clocks MAIN_CLK]# MIN_CLK的上升沿延遲是1.8nsset_clock_latency 2.1 -fall [all_clocks]# 所有時鐘的下降沿延遲是2.1ns# -rise和-fall指的是 時鐘在DFF的clock pin上的延遲

時鐘延遲有兩種:network latency和source latency

network latency:從時鐘定義點(creat_clock)到DFF的clock pin上的延遲source latency:指的是從時鐘源到時鐘定義點的延遲

下圖直觀地展示了這兩個延遲類型的位置

以下是一些指定源延遲和網絡延遲的示例

# 沒有給出 -source 選項,表明是 network latency# 沒有給出 -fall和-rise選項,表明fall和rise是相同的# 沒有給出 -min和-max選項,表明min和max是相同的set_clock_latency 0.8 [get_clocks CLK_CONFIG]set_clock_latency 1.9 -source [get_clocks SYS_CLK]set_clock_latency 0.851 -source -min [get_clocks CFG_CLK]set_clock_latency 1.322 -source -max [get_clocks CFG_CLK]

一個重要的區別:

當clock tree建立後,network latency可以忽略,source latency不可以忽略

這是因為network latency的作用是在clock tree綜合之前用來估算clock tree上的latency,當clock tree綜合之後,我們可以計算出clock tree上的實際的latency,因此不在需要network latency

當clock tree綜合後,總的clock latency = source latency clock tree上的實際latency

參考

Static Timing Analysis for Nanometer Designs: A Practical Approach

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了