靜態(tài)時(shí)序分析是檢查IC系統(tǒng)時(shí)序是否滿足要求的主要手段。以往時(shí)序的驗(yàn)證依賴于仿真,采用仿真的方法,覆蓋率跟所施加的激勵(lì)有關(guān),有些時(shí)序違例會(huì)被忽略。此外,仿真方法效率非常的低,會(huì)大大延長(zhǎng)產(chǎn)品的開發(fā)周期。靜態(tài)時(shí)序分析工具很好地解決了這兩個(gè)問題。它不需要激勵(lì)向量,可以報(bào)出芯片中所有的時(shí)序違例,并且速度很快。
通過靜態(tài)時(shí)序分析,可以檢查設(shè)計(jì)中的關(guān)鍵路徑分布;檢查電路中的路徑延時(shí)是否會(huì)導(dǎo)致setup違例;檢查電路中是否由于時(shí)鐘偏移過大導(dǎo)致hold違例;檢查時(shí)鐘樹的偏移和延時(shí)等情況。此外靜態(tài)時(shí)序分析工具還可以與信號(hào)完整性工具結(jié)合在一起分析串?dāng)_問題。常用的靜態(tài)時(shí)序工具是PrimeTime。
下面主要闡述一下靜態(tài)時(shí)序的分析原理:靜態(tài)時(shí)序分析工具讀入門級(jí)網(wǎng)表、時(shí)序約束等信息,然后進(jìn)行靜態(tài)時(shí)序分析。分析過程可以分為3步:
1)將電路分解為時(shí)序路徑,即將電路轉(zhuǎn)換為時(shí)序路徑的集合。時(shí)序路徑是一個(gè)點(diǎn)到點(diǎn)的數(shù)據(jù)通路,數(shù)據(jù)沿著時(shí)序路徑進(jìn)行傳遞。它的起點(diǎn)是輸入端口或者寄存器的時(shí)鐘,終點(diǎn)是輸出端口或者一個(gè)寄存器的輸入引腳,每個(gè)路徑最多只能穿過一個(gè)寄存器。這樣時(shí)序路徑就可以劃分為:輸入端口到寄存器、寄存器到寄存器、寄存器到輸出端口、輸入端口到輸出端口。如下圖所示,分析其時(shí)序路徑:
根據(jù)時(shí)序路徑的定義,我們可以找到4條時(shí)序路徑:從輸入端口A到FF1的D端;從FF1的Clk端到FF2的D端;從FF2的clk端到輸出端口out1;從輸入端口A到輸出端口out1。將這些路徑在下圖標(biāo)出:
2)計(jì)算每個(gè)路徑上面的延時(shí)。在一個(gè)路徑上,可能包含這幾類延時(shí):連線延時(shí)(布局布線前后的延時(shí)計(jì)算方法不一樣)、組合邏輯的單位延時(shí)(影響因子有輸入信號(hào)的轉(zhuǎn)換時(shí)間,該值也決定輸入晶體管的翻轉(zhuǎn)速度、負(fù)載、單元本身的固有延時(shí)、制程、電壓、溫度等)、寄存器從clk端到Q端的延時(shí)。一個(gè)路徑上的延時(shí)是該路徑上所有連線的延時(shí)與單位延時(shí)的綜合。延時(shí)一般定義為從輸入跳變的50%時(shí)刻到輸出跳變的50%之間的時(shí)間。
3)檢查路徑時(shí)序約束是否滿足。路徑約束主要指的是建立時(shí)間約束和保持時(shí)間約束。在寄存器的綜合庫(kù)描述中對(duì)寄存器的D端定義了建立時(shí)間和保持時(shí)間的約束。所謂建立時(shí)間約束是指在采樣時(shí)鐘到達(dá)之前,數(shù)據(jù)應(yīng)該穩(wěn)定的時(shí)間;保持時(shí)間是指在時(shí)鐘到達(dá)之后,數(shù)據(jù)應(yīng)該保持的時(shí)間,這樣才能保證寄存器正確地鎖存數(shù)據(jù)。對(duì)于純組合邏輯,時(shí)序分析主要檢查最大延時(shí)約束和最小延時(shí)路徑。這種情況比較簡(jiǎn)單。
時(shí)鐘對(duì)于時(shí)序電路至關(guān)重要。在進(jìn)行RTL設(shè)計(jì)時(shí),可以認(rèn)為時(shí)鐘是理想的,但在靜態(tài)時(shí)序分析的時(shí)候,必須考慮到實(shí)際的時(shí)鐘情形。時(shí)鐘模型的精度直接影響了靜態(tài)時(shí)序分析的精度。時(shí)鐘的非理想性包括:
1)時(shí)鐘偏移(clock skew):同一時(shí)鐘原到達(dá)不同的寄存器的延時(shí)不同。
2)時(shí)鐘抖動(dòng)(clock jitter):時(shí)鐘頻率和相位會(huì)不斷變化,脈沖寬度會(huì)發(fā)生變化。
實(shí)際情況中,振蕩器、互連、電源、負(fù)載都會(huì)影響到時(shí)鐘,導(dǎo)致時(shí)鐘出現(xiàn)偏移、抖動(dòng)。下面主要講一下在靜態(tài)時(shí)序分析中,如何對(duì)實(shí)際的時(shí)鐘進(jìn)行建模??紤]下圖中的電路,電路中時(shí)鐘源位于芯片外部。我們將時(shí)鐘定義在芯片端口上,從時(shí)鐘源到達(dá)端口需要經(jīng)過3ns左右的延時(shí)(板級(jí)走線的延時(shí)),從時(shí)鐘端口到寄存器要經(jīng)過1ns左右的延時(shí)(時(shí)鐘樹的延時(shí)),對(duì)時(shí)鐘樹的延時(shí)進(jìn)行建模可以采取下面的辦法:
1)先在端口上定義時(shí)鐘:
create_clock per8.0 [get_ports clk]
2)設(shè)置從時(shí)鐘源到時(shí)鐘端口的板級(jí)延時(shí):
set_clock_latency source 3 clk
3)設(shè)置時(shí)鐘樹本身的延時(shí),在布局布線之前可以采取下面的方法: set_clock_latency 1 clk;在布局布線之后,可以得到時(shí)鐘樹延時(shí)的確定值,采用如下的命令:set_propagated_clock clk;
但是如果知道時(shí)鐘源上的時(shí)鐘具有0.2ns的不確定性,如下圖所示,可以采用下面的方法進(jìn)行建模:
set_clock_latency 2.8 source early [get_ports clk]
set_clock_latency 3.2 source late [get_ports clk]
在設(shè)計(jì)中,往往存在分頻時(shí)鐘,如下圖是一個(gè)2分頻電路。
如果進(jìn)行靜態(tài)時(shí)序分析時(shí),直接援用create_clock來設(shè)置,則PT會(huì)將分頻后的時(shí)鐘看做是一個(gè)與源時(shí)鐘毫無關(guān)系的時(shí)鐘。這樣在分析源時(shí)鐘域與分頻時(shí)鐘域之間的信號(hào)時(shí),可能會(huì)出現(xiàn)問題。正確設(shè)置分頻時(shí)鐘方法如下:
create_generated_clock name divide
source [get -pins U4/clk] divide-by 2 [get -pins U4/Q]
下面概括介紹一下對(duì)于靜態(tài)時(shí)序分析腳本構(gòu)造的大致過程:
1)讀入設(shè)計(jì)的相關(guān)信息:鏈接庫(kù)、網(wǎng)表,如果是PR之后的靜態(tài)時(shí)序分析還需要讀入寄生參數(shù)信息
2)設(shè)置驅(qū)動(dòng)及負(fù)載
3)設(shè)置時(shí)鐘
4)設(shè)置建立時(shí)間和保持時(shí)間
5)設(shè)置設(shè)計(jì)規(guī)則約束:最大負(fù)載、最大轉(zhuǎn)換時(shí)間等
6)分析時(shí)序:用report_timing 等檢查時(shí)序,用report_constraint 檢查是否有違例。
具體的構(gòu)造過程可以參考綜合腳本,這里不再詳述。
編輯:hfy
-
寄存器
+關(guān)注
關(guān)注
31文章
5359瀏覽量
120790 -
晶體管
+關(guān)注
關(guān)注
77文章
9711瀏覽量
138588 -
數(shù)據(jù)通路
+關(guān)注
關(guān)注
0文章
6瀏覽量
7491 -
靜態(tài)時(shí)序
+關(guān)注
關(guān)注
0文章
20瀏覽量
6956
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論