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

如何載入 max/min delay library 進行 setup/hold time 分析

Design Compiler 或 IC Compiler 預設都是會使用在 target library 和 link_library 中第一個讀取到的 .db 檔。但是做 timing analysis 時,我們要用 worst case library 來分析 setup time,用 best case library 來分析 hold time。以下說明如何載入 max/min delay library,這部分是在 .synopsys_dc.setup 檔中進行。

在 target_library 中,要引入 max delay 的 standard cell library:

set target_library "std_cell_max.db"

在 link library 中,要引入 max/min delay 的 memory library、io library:

set link_library "* $target_library dw_foundation.sldb \
    std_cell_min.db \
    io_max.db \
    io_min.db \
    memory_max.db \
    memory_min.db \
    "

接下來我們要設定在 max/min timing analysis 時所使用的 library:

set_min_library std_cell_max.db \
-min_version std_cell_min.db

set_min_library io_max.db \
-min_version io_min.db

set_min_library memory_max.db \
-min_version memory_min.db

如此一來,Design Compiler 和 IC Compiler 就會根據以上設定的 max/min delay library 來進行 setup/hold time analysis。若沒有用 set_operating_conditions 來選擇 operating condition 的話,會直接使用 max/min delay library 中的 default operating condition。