靜態(tài)時序分析原理
-
什么是STA
- 分析(計算)design是否滿足timing約束的要求
- DFF(sequential cell—有clk的器件)setup/hold需求
- 復位/設置信號
- 信號脈沖寬度
- 門控時鐘信號
- 計算design是否滿足DRC的要求
- max_capacitance—節(jié)點電容
- max_transition—信號爬升時間
- max_fanout—負載能力有多少
- 分析(計算)design是否滿足timing約束的要求
-
如上圖所示,recovery的復位并不滿足要求
-
為什么只定義了rest上升沿的時間需求,而并不討論rest的下降沿的時間需求
- 因為rest其實可以看作一個單穩(wěn)態(tài)過程,其本身并不會一直保持rest狀態(tài),而如果rest失效,這種狀態(tài)反而可以持續(xù)性保持,不需要做出約束
- 因為rest其實可以看作一個單穩(wěn)態(tài)過程,其本身并不會一直保持rest狀態(tài),而如果rest失效,這種狀態(tài)反而可以持續(xù)性保持,不需要做出約束
-
pulse寬度太小導致電路開關反映不及時
-
clk其實也是為了保證功能的正確性,要設定建立和保持過程,保證不要有毛刺出現(xiàn)
-
時鐘門控技術的解讀
- Setup時間和Hold時間是時鐘門控技術的兩個關鍵參數(shù)。Setup時間是指在時鐘信號沿上升之前,輸入信號必須穩(wěn)定的時間;而Hold時間是指在時鐘信號沿上升后,輸入信號必須保持穩(wěn)定的時間。通過調(diào)整時鐘門控技術中的這兩個參數(shù),可以確保電路在時鐘信號采樣之前穩(wěn)定,并保持穩(wěn)定直到時鐘信號被采樣,從而提高電路的可靠性和性能。
- Clock gating setup/hold是一種時鐘門控技術,用于減少系統(tǒng)功耗和提高電路的性能。它的主要目的是確保數(shù)據(jù)在時鐘信號邊沿之前穩(wěn)定,并保持穩(wěn)定直到時鐘信號被采樣。在時鐘門控技術中,時鐘信號只在需要時才被傳遞到電路的特定部分。當時鐘信號未傳遞到電路時,電路將進入低功耗模式,從而減少了功耗。時鐘門控技術可以在保持電路的性能的同時,降低整個系統(tǒng)的功耗。
綜合的基本流程介紹
- 根據(jù)RTL design和cell library,把RTL code映射到最基本的各類數(shù)字電路器件
- 根據(jù)STA timing constraint,盡量保證map后的gate level design滿足timing constraint
- 盡量把design的面積功耗優(yōu)化到最小
- 對DRC進行校正
- 盡量讓gate level的布局布線最小
了解stander cell library
- 一般來說同種工藝庫每種庫都會提供slow/typical/fast三種cell(PVT)
- slow關注setup,fast關注hold
- 對于不同晶體管的導通電壓也提供三種LVT/RVT/HVT(滿足時鐘頻率和功耗之間的平衡關系)
- 為什么提供不同版本的library
- 為了滿足更多的芯片功耗和速度的優(yōu)化可能性
- 為什么要在做STA的同時進行DRC檢查
- 因為stander cell library里面的timing數(shù)據(jù)是在一定{input_transition, output_loading}范圍下仿真/測量得出的,超出此范圍,timing數(shù)據(jù)就不準確了
- 因為stander cell library里面的timing數(shù)據(jù)是在一定{input_transition, output_loading}范圍下仿真/測量得出的,超出此范圍,timing數(shù)據(jù)就不準確了
clock相關的概念
- clock需要明確一點,clock由于受到工藝影響,存在不穩(wěn)定的波動
- clock tree
- clk如果驅(qū)動多個DFF,存在一條clk輸入到DFF端的clk存在不同的誤差,通過clock tree可以實現(xiàn)對多個DFF設備進行同步時鐘的提供
- clock skew
- 同一個時鐘的同一個沿,到達不同DFF的時間差異
- 同一個時鐘的同一個沿,到達不同DFF的時間差異
STA術語
- 對于STA分析中的哪些可以作為一個path的start or end呢
- start
- 輸入的ports
- 時序器件的clock pins
- end
- 輸出output ports
- 時序器件的data pins
- 時序器件的clock pins
- start
setup/hold check計算方法
- setup所定義的范圍
- 對于前一個寄存器在clk0上升沿發(fā)出的數(shù)據(jù),必須要在clk1上升沿被后一個寄存器看到
- 即在clk之內(nèi)保證數(shù)據(jù)發(fā)送
- hold所定義的范圍
- 對于前一個寄存器在clk0上升沿發(fā)出的數(shù)據(jù),不能被后一個寄存器的clk0上升沿看到
- setup具體計算示意
- 思路
- 明確得到第一個寄存器到第二個寄存器之間的傳輸時間
- 明確clk0和clk1之間的時間
- 兩者做出比較
- 可視化解讀
- 思路
-
標注
- clk_latency表示clk前級輸入的延遲
- clk_path_delay表示clk路徑的延遲
- ck_to_q表示數(shù)據(jù)搬移的延遲
- logic_delay組合邏輯的延遲
- dff_setup在lib中根據(jù)參數(shù)查找的setup
- clk_uncertainty自定義可能的延遲
-
最終需要滿足的條件
- data_arrival_time <= data_required time
- data_arrival_time <= data_required time
-
如何在setup不滿足的情況下想辦法進行調(diào)整
- 降低clk時鐘頻率
- ck_to_q和logic_delay可以通過PVT進行改變
-
hold check計算
- 注意是不能被后一個clk看到,因此,希望dataclk久一點更好
- 可視化解讀
-
最終需要滿足的條件
- data_arrival_time >= data_required time
- data_arrival_time >= data_required time
-
如何在hold不滿足的情況下想辦法進行調(diào)整
- ck_to_q和logic_delay可以通過PVT進行改變,進行變大
- 為什么不能通過clk頻率改變進行解決?
- 因為本來就沒有clk這一項
-
setup時鐘沿
- 在end point時鐘沿之前的第一個start point時鐘沿
- 用兩個時鐘沿最近的地方做計算
- 之前:僅僅用waveform(工藝庫中定義的上升下降時間)去比較,clock latency不考慮
- waveform其實就是人為理想的波形
-
hold時鐘沿
- start point用setup check的時鐘沿
- end pointer用setup check之前的一個時鐘沿
-
實例分析
文章來源:http://www.zghlxwxcb.cn/news/detail-752984.html
-
總結(jié)原則文章來源地址http://www.zghlxwxcb.cn/news/detail-752984.html
- setup找到最近的兩個上升沿的間距時長
- hold在setup基礎上,將后一個上升沿向前推一個周期,再進行計算
- 注意
- 這里的分析并沒有加入latency,等于是在去掉latency之后進行分析
- 什么是latency—時鐘的延遲信息包含clock tree delay
常用時序約束
- creat_clock
- creat_clock -name Name -period T -waveform {0, T*o.5} [get_port clk]
- 一般setup和hold要成對定義,保證基本上有一個clk的差異
- creat_clock -name Name -period T -waveform {0, T*o.5} [get_port clk]
到了這里,關于數(shù)字IC設計之靜態(tài)時序分析(STA)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!