STA——multicycle path

 

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

  看這篇文章須要現對創建時間、保持時間的概念有一些瞭解。面試

0. 多週期路徑

  通常狀況下數據在任意時鐘沿發射,在下一個時鐘沿被捕獲,可是有時設計者須要延遲幾個時鐘週期data才被捕獲,這就是多週期路徑。異步

默認的創建時間時序:async

 

 

 多週期的創建時間時序:ide

 

 

 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。約束變寬鬆了。

ui

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

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個週期code

 

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) 》
《 專用集成電路設計使用教程 》

原文出處:https://www.cnblogs.com/east1203/p/11523737.html

相關文章
相關標籤/搜索