STA的準(zhǔn)備工作包括:設(shè)定時(shí)鐘、指定IO時(shí)序特性、指定false path和multicycle path
1 什么是STA環(huán)境
看下面這張圖,假定Design Under Analysis(DUA)會(huì)與其他同步設(shè)計(jì)交互,這意味著DUA會(huì)從前一級(jí)觸發(fā)器接收數(shù)據(jù),并將數(shù)據(jù)發(fā)送到DUA后一級(jí)觸發(fā)器
為了對(duì)這種設(shè)計(jì)執(zhí)行STA,需要指定觸發(fā)器的時(shí)鐘、進(jìn)入DUA和退出DUA的所有路徑上的時(shí)序約束
2 指定時(shí)鐘
定義時(shí)鐘時(shí)需要提供以下信息:
- Clock source:可以是design的port,也可以是design內(nèi)部的pin
- Period:時(shí)鐘周期
- Duty cycle:高電平持續(xù)時(shí)間和低電平持續(xù)時(shí)間
- Edge time:上升沿和下降沿出現(xiàn)的時(shí)刻
通過(guò)時(shí)鐘定義,所有內(nèi)部的timing path都將受到約束,表明所有的internal path都可以用時(shí)鐘路徑來(lái)分析
下面是一個(gè)基本的時(shí)鐘定義:
create_clock \\
-name SYSCLK \\
-period 20 \\
-waveform {0 5} \\
[get_ports SCLK]
在這個(gè)例子中,定義的時(shí)鐘名稱為SYSCLK,并且指定定義的時(shí)鐘是在端口 SCLK上定義的
SYSCLK的時(shí)鐘周期時(shí)20(如果沒(méi)有明確指定時(shí)間的單位,默認(rèn)是ns)
在-waveform
中,第一個(gè)變量是上升沿出現(xiàn)的時(shí)刻,第二個(gè)變量是下降沿出現(xiàn)的時(shí)刻,因此在這個(gè)例子中,上升沿出現(xiàn)在0ns,下降沿出現(xiàn)在5ns
這個(gè)例子對(duì)應(yīng)的波形圖如下
-waveform
中可以指定任意數(shù)量的邊沿,但是所有的邊沿必須在一個(gè)周期之內(nèi)
邊沿時(shí)刻從0時(shí)刻之后的第一個(gè)上升沿開(kāi)始,然后依次是下降沿、上升沿、下降沿……
-waveform {time_rise time_fall time_rise time_fall ...}
在-waveform
中需要指定偶數(shù)個(gè)邊沿,并且-waveform
指定的是一個(gè)周期內(nèi)的波形,在后續(xù)周期中不斷重復(fù)
如果沒(méi)有指定-waveform
,默認(rèn)是
-waveform {0, period/2}
下面看一個(gè)不使用-waveform
選項(xiàng)的時(shí)鐘定義
create_clock -period 5 [get_ports SCAN_CLK]
其對(duì)應(yīng)的波形圖如下:
在這個(gè)例子中,由于沒(méi)有指定-name
,因此定義時(shí)鐘名稱與端口名稱相同
再來(lái)看另一個(gè)例子
create_clock -name BDYCLK \\
-period 15 \\
-waveform {5 12} \\
[get_ports GBLCLK]
其對(duì)應(yīng)的波形圖如下:
在這個(gè)例子中,根據(jù)-waveform
可以知道,第一個(gè)上升沿出現(xiàn)在5ns,第一下降沿出現(xiàn)在12ns
因?yàn)檫x項(xiàng)-waveform
給出的上升沿和下降沿時(shí)刻會(huì)在每個(gè)cycle里重復(fù),又因?yàn)?code>-period指定周期是15ns,
所以在第二個(gè)cycle中,上升沿應(yīng)該出現(xiàn)在15+5=20ns處
下降沿出現(xiàn)在15+12=27ns處
再來(lái)看另外兩個(gè)例子:
# Figure (a)
create_clock -period 10 \\
-waveform {0 5} \\
[get_ports FCLK]
#Figure (b)
create_clock -period 125 \\
-waveform {100 150} \\
[get_ports ARMCLK]
對(duì)應(yīng)的波形圖如下:
對(duì)于圖(a),周期為10ns,上升沿出現(xiàn)在5ns,下降沿出現(xiàn)在10ns
在第二個(gè)cycle中,上升沿出現(xiàn)在10+5=15ns,下降沿出現(xiàn)在10+10=20ns
對(duì)于圖(b),周期為125ns,從選項(xiàng)-waveform {100 150}
可以知道,上升沿出現(xiàn)在100ns處,并且 high duration = 150-100=50ns,那么low duration = period - high duration,即low duration = 75ns
因?yàn)?50ns的時(shí)刻已經(jīng)超出了第一個(gè)cycle的時(shí)間范圍,并且low duration的時(shí)長(zhǎng)小于上升沿出現(xiàn)的時(shí)刻,那么可以推斷出 在第一個(gè)cycle中有一個(gè)下降沿 ,這個(gè)下降沿出現(xiàn)的時(shí)刻可以用100 - low duration得到(100 - 75 = 25ns)
出現(xiàn)這種情況的原因是:選項(xiàng)-waveform
要從上升沿開(kāi)始
根據(jù)下面的例子,再次理解一下選項(xiàng)-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]
對(duì)應(yīng)的波形圖如下:
在這個(gè)例子中,圖(a)的分析方式與上一個(gè)例子相同
圖(b)由于選項(xiàng)-waveform
中給出的上升沿和下降沿時(shí)刻都在第一個(gè)cycle時(shí)間范圍內(nèi),因此不需要進(jìn)行額外的推斷
在某些情況下,比如在頂層的輸入端口或某些PLL的輸出端口,工具無(wú)法自動(dòng)計(jì)算出過(guò)渡時(shí)間,此時(shí)在clock source出顯示指定過(guò)渡時(shí)間很有用,可以使用set_clock_transition
來(lái)指定
set_clock_transition -rise 0.1 [get_clocks CLK_CONFIG]
set_clock_transition -fall 0.12 [get_clocks CLK_CONFIG]
# 這個(gè)約束僅適用于ideal clocks,一旦構(gòu)建了時(shí)鐘樹(shù)就將其忽略
3 時(shí)鐘不確定度
可以用set_clock_uncertainty
來(lái)指定時(shí)鐘周期的timing uncertainty,用不確定度來(lái)建模那些會(huì)降低有效時(shí)鐘周期的因素
set_clock_uncertainty -setup 0.2 [get_clocks CLK_CONFIG]
set_clock_uncertainty -hold 0.05 [get_clocks CLK_CONFIG]
setup check會(huì)減少可用的有效時(shí)鐘周期
對(duì)于hold check,clock uncertainty被用作需要滿足的額外時(shí)序裕量
這里我的理解是,由于clock uncertainty的存在,減小了有效的時(shí)鐘周期,并且在clock uncertainty范圍內(nèi),我們無(wú)法預(yù)測(cè)clock是否有效,為了保證數(shù)據(jù)的正確性,在進(jìn)行數(shù)據(jù)傳輸時(shí),應(yīng)當(dāng)避開(kāi)clock uncertainty的范圍
下面幾個(gè)command可以用來(lái)指定跨時(shí)鐘邊界path上的clock uncertainty,被稱為 inter-clock uncertainty
set_clock_uncertainty -from VIRTUAL-SYS_CLK -to SYSCLK -hold 0.05
set_clock_uncertainty -from VIRTUAL-SYS_CLK -to SYSCLK -setup 0.3
set_clock_uncertainty -from SYS_CLK -to CFG_CLK -hold 0.05
set_clock_uncertainty -from SYS_CLK -to CFG_CLK -setup 0.1
從圖中可以看到,該電路為兩個(gè)不同的clock domain SYS_CLK和CFG_CLK之間的path,根據(jù)上面約束可知,setup check的uncertainty是100ps,hold check的uncertainty是50ps
4 時(shí)鐘延遲
可以使用set_clock_latency
來(lái)指定時(shí)鐘的延遲,用法如下:
set_clock_latency 1.8 -rise [get_clocks MAIN_CLK]
# MIN_CLK的上升沿延遲是1.8ns
set_clock_latency 2.1 -fall [all_clocks]
# 所有時(shí)鐘的下降沿延遲是2.1ns
# -rise和-fall指的是 時(shí)鐘在DFF的clock pin上的延遲
時(shí)鐘延遲有兩種:network latency和source latency
- network latency:從時(shí)鐘定義點(diǎn)(creat_clock)到DFF的clock pin上的延遲
- source latency:指的是從時(shí)鐘源到時(shí)鐘定義點(diǎn)的延遲
下圖直觀的展示了這兩個(gè)延遲類型的位置
以下是一些指定源延遲和網(wǎng)絡(luò)延遲的示例
# 沒(méi)有給出 -source 選項(xiàng),表明是 network latency
# 沒(méi)有給出 -fall和-rise選項(xiàng),表明fall和rise是相同的
# 沒(méi)有給出 -min和-max選項(xiàng),表明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]
一個(gè)重要的區(qū)別:
當(dāng)clock tree建立后,network latency可以忽略,source latency不可以忽略
這是因?yàn)閚etwork latency的作用是在clock tree綜合之前用來(lái)估算clock tree上的latency,當(dāng)clock tree綜合之后,我們可以計(jì)算出clock tree上的實(shí)際的latency,因此不在需要network latency
當(dāng)clock tree綜合后,總的clock latency = source latency + clock tree上的實(shí)際latency
-
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2018瀏覽量
61380 -
時(shí)鐘源
+關(guān)注
關(guān)注
0文章
93瀏覽量
16042 -
PLL電路
+關(guān)注
關(guān)注
0文章
92瀏覽量
6483 -
dff
+關(guān)注
關(guān)注
0文章
26瀏覽量
3459
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
USART程序USATR_RX_STA為什么要定義成無(wú)符號(hào)字符型
MCU產(chǎn)生12MHz時(shí)鐘應(yīng)用于ADC和STA339BW差異有多大?
STM32時(shí)鐘樹(shù)學(xué)習(xí)記錄
FOC學(xué)習(xí)記錄
Wifi的STA模式連接wifi的過(guò)程分享
STA7056.pdf
![<b class='flag-5'>STA</b>7056.pdf](https://file.elecfans.com/web2/M00/49/21/pYYBAGKhtDqANUrGAAASxX8gV2k833.jpg)
C語(yǔ)言學(xué)習(xí)記錄筆記需要的趕緊下載學(xué)習(xí)
![C語(yǔ)言<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>記錄</b>筆記需要的趕緊下載<b class='flag-5'>學(xué)習(xí)</b>](https://file.elecfans.com/web1/M00/85/31/pIYBAFxifm2AIucsAATq1uW6vqk703.png)
GD32F407的時(shí)鐘學(xué)習(xí)記錄
![GD32F407的<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>記錄</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
用CubeMX開(kāi)發(fā)HAL學(xué)習(xí)記錄(一)
![用CubeMX開(kāi)發(fā)HAL<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>記錄</b>(一)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Harmony OS 設(shè)備開(kāi)發(fā)學(xué)習(xí)記錄(十四)--Wifi的STA模式連接wifi
![Harmony OS 設(shè)備開(kāi)發(fā)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>記錄</b>(十四)--Wifi的<b class='flag-5'>STA</b>模式連接wifi](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
藍(lán)橋杯單片機(jī)學(xué)習(xí)過(guò)程記錄(八)時(shí)鐘芯片
![藍(lán)橋杯單片機(jī)<b class='flag-5'>學(xué)習(xí)</b>過(guò)程<b class='flag-5'>記錄</b>(八)<b class='flag-5'>時(shí)鐘</b>芯片](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
藍(lán)橋杯單片機(jī)學(xué)習(xí)過(guò)程記錄(十四)第六屆溫度記錄
![藍(lán)橋杯單片機(jī)<b class='flag-5'>學(xué)習(xí)</b>過(guò)程<b class='flag-5'>記錄</b>(十四)第六屆溫度<b class='flag-5'>記錄</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32 task3學(xué)習(xí)記錄
![STM32 task3<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>記錄</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論