STA分析(一) setup and hold


timing check可以分為Dynamic Timing Analysis(Post_sim)和Static Timing Analysis

STA:可以分析的很全面;仿真速度也很快;可以分析控制到Noise,Crosstalk,On Chip Variations;

DTA:只能分析到一部分timing path,而且仿真速度很慢,Noise,Crosstalk是不可控的。

STA的分析基礎是SDC,DTA的分析基礎是vectors和Vendor的model,后端出來的SDF文件。

 

時序檢查的最基本的兩個指標:setup和hold check. 一旦一個時鍾加在FF的時鍾斷,setup和hold check就會自動加在該FF的時序檢查中。其中worst_case

         對應setup check.其中best_case對應hold check。

setup timing check 檢查max constraint, Tlaunch + Tck2q + Tdp < Tcapture +Tcycle - Tsetup.

        Tlaunch和Tcapture分別是clock tree到launch FF和capture FF時鍾端的延時。其中左側也稱為data arriving time,右側稱為data requiring time.

        當data requiring time - data arrving time為正時,slack為正,否則setup violated。

        所有的Path Group按時鍾clock來進行分組。

        在時序報告中,還會有clock uncertainty和clock network delay兩項參數。分別由clock source的jitter和network的propagated產生。

        SDC定義:create_clock -name CLKM -period 10 -waveform {0 5} [get_ports CLKM]

                       set_clock_uncertainty -setup 0.3 [all_clocks] (參數由lib決定)

                       set_clock_transition -rise 0.2 [all_clocks]

                       set_clock_transition -fall 0.15 [all_clocks]

        1)clock latency可以分為兩類:clock source latency也叫做insertion delay,propagated delay from clock source to clock definition point.

                                                  clock network delay,propagated from clock definition point to FF clock.

          其中clock network latency用來在CTS之前的clock path 建模。一旦CTS完成,clock network latency會被忽略。 

                       SDC命令:set_clock_latency (-source) -rise 0.7 [get_clocks CLKM]

                                      set_clock_latency (-source) -fall 0.65 [get_clocks CLKM]

        2)Input to FF Path。

            因為input的關系,時序報告中會有一個input external delay, 這個input delay可以掛接在virtual clock或real clock中,

            create_clock -name VIRTUAL_CLKM -period -waveform {0 5} set_input_delay -clock VIRTUAL_CLKM -max 2.55 [get_ports INA]

            2.55可以通過指定input port的driving cell,然后根據input transaction和output capacitance來確定。

            set_driving_cell -lib_cell BUFF -library lib013lwc [get_ports INA]。

            set_input_transition -rise 0.3 [get_ports CLKM]

            set_input_transition -fall 0.45 [get_ports CLKM]

            set_input_delay -clock VIRTUAL_CLKM -max 3.6 [get_ports INB]

            該input delay加在data arriving time一端。

        3)FF to output path

            因為output的關系,時序報告中會有一個output external delay, 這個output delay可以掛接在virtual clock或real clock中,

            set_output_delay -clock VIRTUAL_CLKP -max 5.1 [get_ports ROUT] set_load 0.02 [get_ports ROUT],set_load表示額外的load。

            注意這個output external delay是加在data requiring time一側的。

頻率直方圖(Frequency Histogram):對於一個optimized design來說,zero slack line會盡可能的靠近左,也就是說,slack多數為正。

                                                  還有一個指標是直方圖的拱頂,代表最多數的slack水平,如果越靠近左,timing越是嚴峻。

Hold Timing Check:保證一個正在改變輸出的FF不會覆蓋掉該FF的當前值,在capture FF還未收到該值時。

                             檢查同一個時鍾active edge下,launch FF到capture FF的時間。所以hold check與時鍾周期無關。

                             檢查min constraint, Tlaunch + Tck2q + Tdp > Tcapture +Thold. 即在不考慮時鍾延時問題時,路徑延時大於hold時間。好讓寄存器中

                                                                                                                   的鎖存器無法在當前時鍾鎖存影響該值,而等到下一時鍾。

                             左側同樣是data arrving time,右側是data requiring time。data requiring time - data arrving time為負時,slack為負,此時

                                   hold check滿足,否則hold check violated。 

                             當launch FF和capture FF不是一個時鍾源時,如果Capture FF的clock edge在launch FF clock之前,則時鍾對於hold

                                   check來說,是正余量。

                             當launch FF和capture FF是一個時鍾源時,Capture FF的clock edge一般在launch clock之后,此時,時鍾是負余量。

                             setup violation只能引起操作頻率的下降,但是hold violation會毀掉一個design.因為本該下一時鍾到達Capture FF的數據,卻在當前

                                   時鍾到達Capture FF,時序關系亂了,而且建立時間也得不到保證。

                         1)Input to FF Path.

                              用來設置input external delay

                              約束為min,set_input_delay -clock VIRTUAL_CLKM -min 1.1 [get_ports INA]  

                              該input delay加在data arriving time一端。

                         2)Ouput to FF Path.

                              用來設置output external delay

                              約束為max,set_output_delay -clock VIRTUAL_CLKP -min 2.5 [get_ports ROUT]

                              注意這個output external delay是加在data requiring time一側的。但是為負。即這也應該是一個正余量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM