2022年8月12日 星期五

如何對 black box macro 進行時序約束

 進行 place and route 時,可能有些 macro 是 full-custom design,沒有針對此 macro 建立 timing library,對 IC compiler 來說,就是一個黑盒子,對於這種 black box macro,可透過以下指令進行時序約束。

Black Box Macro 的 Clock

set_clock_tree_exceptions -stop_pins [get_pins macro/CLK]

Black Box Macro 的輸入訊號

set_output_delay -max $MACRO_IN_DELAY -clock clk -reference_pin [get_pins macro/CLK] [get_pins macro/IN]

set_output_delay -min $MACRO_HOLD -clock clk -reference_pin [get_pins macro/CLK] [get_pins macro/IN]

$MACRO_IN_DELAY 是 macro 輸入訊號抵達內部 flip-flop 的延遲時間。$MACRO_HOLD 是內部 flip-flop 所需的 hold time 的負值 ($MACRO_HOLD 是負數)。

Black Box Macro 的輸出訊號

set_input_delay -max $MACRO_CLK_Q -clock clk -reference_pin [get_pins macro/CLK] [get_pins macro/OUT]

set_input_delay -min 0.0 -clock clk -reference_pin [get_pins macro/CLK] [get_pins macro/OUT]

$MACRO_CLK_Q 是 macro 內部flip-flop 的 clock to output 時間。

-max 和 -min 的設定都是必要的,假如只設定了 max delay,min delay 的延遲時間就會與 max delay 一樣。

參考資料

Static Timing Analysis for Nanometer Designs: A Practical Approach (2009)
by Rakesh Chadha & J. Bhasker

沒有留言:

張貼留言