物理综合就是不单纯考虑时序、面积和功耗,还要考虑APR的形状、pin坐标、可用的金属层等物理信息。
既然要考虑这些物理信息,那么就要把这些信息提供给dc。
物理综合需要额外的license,用-topo
来使能。
dc_shell -64bit -topographical
首先,找到fab提供的tf文件和milkyway文件夹(milkyway通常是一个文件夹,文件夹里有若干个文件,描述每个stdcell的物理信息),这两个文件类似cadence格式的tech lef和stdcell lef。
create_mw_lib \
-technology xxx.tf \
-mw_reference_library milkyway/xxx \
phy_lib
open_mw_lib my_lib
读入金属上的电容、电阻等信息,用于精确计算连线的延时。在这种模式下,连线的延时比wire load model
要准确很多。
create_scenario s_mode1
set_operating_conditions \
-analysis_type bc_wc \
-max $MAX_COND \
-min $MIN_COND
set_tlu_plus_files \
-max_tluplus xxx.tluplus
set_ignored_layers -max_routing_layer M6_L116
create_scenario s_mode2
# ...
set_active_scenarios -all
APR的形状、pin坐标、row排布,blockage,金属层的默认走线方向等信息通过def传递给DC。
set_preferred_routing_direction -layers {1M} -direction horizontal
set_preferred_routing_direction -layers {2M} -direction vertical
set_preferred_routing_direction -layers {1M} -direction horizontal
set_preferred_routing_direction -layers {2M} -direction vertical
set_preferred_routing_direction -layers {1M} -direction horizontal
extract_physical_constraints xxx_floorplan.def
dc得到所有物理信息后,就可以进行compile了。
compile_ultra -spg ...