STA——multicycle path


 

  之前去地平線面試的時候被問到了multicycle path的一點問題,其實這個問題我應該知道,看過《Constraining Designs for Synthesis and Timing  Analysis A Practical Guide to Synopsys Design Constraints (SDC)》,但當時回答的不好。

  看這篇文章需要現對建立時間、保持時間的概念有一些了解。

0. 多周期路徑

  一般情況下數據在任意時鍾沿發射,在下一個時鍾沿被捕獲,但是有時設計者需要延遲幾個時鍾周期data才被捕獲,這就是多周期路徑。

默認的建立時間時序:

 

 

 多周期的建立時間時序:

 

 

 1. 發射時鍾和捕獲時鍾相同

 

 對於上面的時鍾,默認是在A沿發射,B沿捕獲。在進行建立時間分析時,我們希望在A沿發射數據,在D沿捕獲數據,我們可以通過-setup選項,指定多周期路徑為3個周期

set_multicycle_path -setup 3 -from xxx -to xxx

setup time analysis變成了:Tc-q +Tlogic +Tsetup < 3*T+skew。約束變寬松了。

但是這樣的話,在進行hold time分析的時候,工具會對捕獲寄存器捕獲沿之前的那一個時鍾沿,也就是C沿進行hold analysis。這樣的話hold time analysis變成了

Tc-q + Tlogic > Thold + 2*T,但這增加了電路的復雜性(需要插入一些buffer來增加延遲),沒有必要,通過-hold選項,將hold edge向左移動2個周期

set_multicycle_path -hold 2 -from *** -to *** 

  注意:-setup制定多周期路徑為N個周期,-hold使hold edge向左移動N-1個周期

 

2. 發射時鍾和捕獲時鍾不同

2.1 捕獲時鍾周期倍長於發射時鍾周期

 

上面例子中發射時鍾周期為10ns,捕獲時鍾周期為20ns。 

  默認情況下,setup analysis在B沿發射,N沿捕獲,組合邏輯路徑最大為10ns。對於hold analysis與保持時鍾沿沒關系,在hold analysis中,可以在A時鍾沿發射,M時鍾沿捕獲,或者在C時鍾沿發射,N時鍾沿捕獲。

  因為捕獲時鍾周期大於采樣時鍾周期,所以在一個捕獲周期中,只能發射一個data。對於在N時鍾沿捕獲的情況,可以在A或者B時鍾沿發射數據。在A發射可以增加額外的10ns的延遲余量。通過-start選項可以聲明兩個源時鍾周期的路徑,這使得發射沿從B移動到A。當然要指明是-setup。

set_multicycle_path -setup -start 2 -from xxx -to xxx

  

  對於hold check有兩種情況:
    1. A發射M捕獲。

    2.B發射N捕獲。

  對於上面兩種hold check情況,第二種約束更強,組合邏輯需要增加額外的10ns。我們希望hold check恢復到默認的位置,A發射M捕獲(或者B發射N捕獲),希望lauch edge從B移動到C,通過-start 和- hold選項。

set_multicycle_path -hold -start 1 -from xxx -to xxx

 -hold指定移動的周期數。 

2.2 發射時鍾周期倍長於捕獲時鍾周期

 

 

發射時鍾周期為20ns,捕獲時鍾周期為10ns。

默認的setup check是M發射B捕獲;hold check是 M發射A捕獲。

M發射,希望在C捕獲,這樣可以增加額外的10ns的延遲裕量。這可以通過-end選項來指定2個目的時鍾周期的路徑。

set_multicycle_path -setup -end 2 -from xxx -to xxx

  -setup指定路徑的周期數,為N

但這會使得hold check變成M發射B捕獲,希望它恢復到默認情況,用-end選項指明捕獲沿向左移動一個目的時鍾周期。

set_multicycle_path -hold -end 1 -from xxx -to xxx

  -hold指定移動的周期數,為N-1

2.3 總結

-start:移動源時鍾(發射時鍾)沿;

-end :移動目的時鍾(捕獲時鍾)沿;

-setup -start N:向左移動發射時鍾沿;

-hold -start N-1:向右移動發射時鍾沿;

-setup -end N:向右移動捕獲時鍾沿;

-hold -end N-1:向左移動捕獲時鍾沿;

3. examples

3.1 FSM

 

 如上圖所示,enable邏輯通過一個N個周期的狀態機。那么對於從F1發出的actual data,可以在N個周期內到達F3的輸入,所以約束如下:

set_multicycle_path -setup N -end -from Cs -through F1/Q -to Cd 
set_multicycle_path -hold N-1 -end -from Cs -through F1/Q -to Cd

  

3.2  reset

 In many ASIC designs, the master reset signal remains asserted for several cycles.
So, the assertion of these signals can be declared as multi cycle paths. Assuming an
active low asynchronous reset kept asserted for 3 cycles, the command would be:
set_multicycle_path -fall -from reset_n -setup 3
set_multicycle_path -fall -from reset_n -hold 2

3.3 Large data path macros

  Some data paths have huge adders, multipliers, or other data path elements . Or, they
might have deep levels of logic. Or, they might have a high setup requirement for 
the capturing device (say, a memory ), or the launching device might have a high
Clk-to-output delay (e.g., a memory). Or, the path might be on a clock which has
very high frequency. In many such cases, it might be diffifi cult for the data to meet
the timing requirements of a single cycle . In such cases, the path might have to be
declared as multi cycle. 
 

3.4 異步時鍾

 

 在跨時鍾路徑中,一般會生命為fault path,這樣STA工具不會對這條路徑進行時序分析,那么路徑可以有任意大小的delay,但是設計者可能想要約束這一段路徑的延遲,如下

set_multicycle_path -from [get_clocks C1] -to [get_clocks C2] -setup 2
set_multicycle_path -from [get_clocks C1] -to [get_clocks C2] -hold 1

  原來是在A發射P捕獲,但將路徑設置為兩個捕獲周期之后,在A發射Q捕獲,組合邏輯延遲擴展了一個捕獲周期。這樣就將組異步路徑合邏輯延遲約束在一個捕獲周期多一點。

  

 

參考:

 《 Constraining Designs for Synthesis and Timing  Analysis A Practical Guide to Synopsys Design Constraints (SDC) 》
《 專用集成電路設計使用教程 》


免責聲明!

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



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