📄 chip_finish_icc.tcl
字号:
## ICC RM Version: B-2008.09 ##################################################### chip_finish_icc: Several chipfinishing steps #####################################################source -echo icc_setup.tclopen_mw_lib $MW_DESIGN_LIBRARYredirect /dev/null "remove_mw_cel -version_kept 0 ${ICC_CHIP_FINISH_CEL}"copy_mw_cel -from $ICC_ROUTE_OPT_CEL -to $ICC_CHIP_FINISH_CELopen_mw_cel $ICC_CHIP_FINISH_CELlinksource -echo common_optimization_settings_icc.tclsource -echo common_placement_settings_icc.tclsource -echo common_post_cts_timing_settings.tcl######################################### LOAD THE ROUTE AND SI SETTINGS #########################################source -echo common_route_si_settings_zrt_icc.tclif {$MV_MODE == "UPF"} {############################### COMPLETE POWER CONNECTIONS############################# derive_pg_connection -create_net -verbose derive_pg_connection -reconnect -verbose check_mv_design -power_nets -verbose}if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }if {$ICC_DBL_VIA } { ######################################## # REDUNDANT VIA # ######################################## ## When running Via insertion in MCMM mode, be aware that it works only from the current_scenario - ## You can use [get_dominant scenarios] to get a critical one loaded # set_active_scenarios [get_dominant_scenarios] ## Optionally, manual mode : # define_zrt_redundant_vias # insert_zrt_redundant_vias -list_only insert_zrt_redundant_vias -effort high if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." } }if {$ICC_REDUCE_CRITICAL_AREA } { ######################################## # CRITICAL AREA REDUCTION # ######################################## ## Timing driven wire spreading for shorts and widening for opens ## It is recommended to define a slack threshold to avoid that nets with too small slack are touched ## the unit of $TIMING_PRESERVE_SLACK is the library unit, so make sure that you provide the correct ## value in case your library has ps as unit. Default is 0.1, i.e. 0.1ns. spread_zrt_wires -timing_preserve_setup_slack_threshold $TIMING_PRESERVE_SLACK -timing_preserve_hold_slack_threshold $TIMING_PRESERVE_SLACK widen_zrt_wires -timing_preserve_setup_slack_threshold $TIMING_PRESERVE_SLACK -timing_preserve_hold_slack_threshold $TIMING_PRESERVE_SLACK if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." } } if {$ICC_FIX_ANTENNA } { ######################################## # ANTENNA DIODE FIXING # ######################################## if { [file exists [which $ANTENNA_RULES_FILE]]} { set_route_zrt_detail_options -antenna true -insert_diodes_during_routing true route_zrt_detail -incremental true } } ################################### # SHIELDING # ################################### ##Shield Clocks/Nets if Constraint Set Previously #create_zrt_shield if {$ADD_FILLER_CELL } { ######################################## # STD CELL FILLERS # ######################################## ##Filler Cellsif {$MV_MODE == "NONE" } { if {$ADD_FILLER_CELL == "true" } { ## Zroute with metal filler cells is not supported until 2008.09-SP2 ## insert_stdcell_filler -cell_with_metal $FILLER_CELL_METAL -connect_to_power $MW_POWER_NET -connect_to_ground $MW_GROUND_NET insert_stdcell_filler -cell_without_metal $FILLER_CELL -connect_to_power $MW_POWER_NET -connect_to_ground $MW_GROUND_NET }} else {echo "SCRIPT-ERROR: Filler cell insertion chosen and scripts do not support filler insertion in MV flow"}if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }} if {$ICC_FIX_ANTENNA || $ICC_REDUCE_CRITICAL_AREA || $ICC_DBL_VIA || $ADD_FILLER_CELL } { ######################################## # INCREMENTAL TIMING OPTO # ######################################## route_opt -incremental -size_only if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }}if {$ICC_DBL_VIA } { ## Optionally, if DV is really a key issue, we recommend to run a 3rd time ## but with timing preserve on, so that any critical paths are not touched by this step. ######################################## # REDUNDANT VIA # ######################################## #insert_zrt_redundant_vias -effort high \ # -timing_preserve_setup_slack_threshold $TIMING_PRESERVE_SLACK \ # -timing_preserve_hold_slack_threshold $TIMING_PRESERVE_SLACK # #if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." } }if {$ADD_FILLER_CELL } { ######################################## # STD CELL FILLERS # ######################################## ##Filler Cells if {$MV_MODE == "NONE" } { if {$ADD_FILLER_CELL == "true" } { insert_stdcell_filler -cell_without_metal $FILLER_CELL -connect_to_power $MW_POWER_NET -connect_to_ground $MW_GROUND_NET } } else {echo "SCRIPT-ERROR: Filler cell insertion chosen and scripts do not support filler insertion in MV flow"} if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }} if {$MV_MODE != "NONE"} { ## in case new nets are created that go from one VA to another, level shifters need to be inserted on these nets # insert_level_shifters -all_clock_nets -verbose ## optionally insert isolation cells # insert_isolation_cell -reference $lib_cell -enable [find net $enable_net] -object_list [get_net $nets_missing_isolation_cells] } ######################################### CONNECT P/G ########################################### Connect Power & Ground for non-MV and MV-modeif { $CUSTOM_CONNECT_PG_NETS_SCRIPT != ""} { if {[file exists [which $CUSTOM_CONNECT_PG_NETS_SCRIPT]]} { source -echo $CUSTOM_CONNECT_PG_NETS_SCRIPT }} else { if {$MV_MODE == "NONE"} { derive_pg_connection -create_net -verbose derive_pg_connection -reconnect -verbose } if {$MV_MODE == "NONUPF"} { source -echo mv_pg_connect.tcl } if {$MV_MODE == "UPF"} { derive_pg_connection -create_net -verbose derive_pg_connection -reconnect -verbose redirect -file $REPORTS_DIR/chip_finish.mv {check_mv_design -power_nets -verbose} save_upf $RESULTS_DIR/$ICC_CHIP_FINISH_CEL.upf if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." } }}##Final Route clean-up - if needed:route_zrt_eco ;#catch any opens and try to re-route them, recheck DRCif {$ADD_METAL_FILL} { ######################################## # TIMING DRIVEN METAL FILL # ######################################## insert_metal_filler -routing_space 2 -timing_driven if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }}if {$MV_MODE == "NONUPF"} { redirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.mv {check_mv_design -verbose}}if {$MV_MODE == "UPF"} { derive_pg_connection -create_net -verbose derive_pg_connection -reconnect -verbose redirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.mv {check_mv_design -power_nets -verbose} save_upf $RESULTS_DIR/$ICC_CHIP_FINISH_CEL.upf }redirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.qor {report_qor}redirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.con {report_constraints}if {$MCMM_MODE } { set_active_scenarios [lminus [all_scenarios] $ICC_MCMM_CTS_SCENARIO] update_timing redirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.max.tim {report_timing -crosstalk_delta -scenario [all_scenarios] -capacitance -transition_time -input_pins -nets -delay max} redirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.min.tim {report_timing -crosstalk_delta -scenario [all_scenarios] -capacitance -transition_time -input_pins -nets -delay min} } else { redirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.max.tim {report_timing -crosstalk_delta -capacitance -transition_time -input_pins -nets -delay max} redirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.min.tim {report_timing -crosstalk_delta -capacitance -transition_time -input_pins -nets -delay min} }## Uncomment if you want detailed routing violation report with or without antenna info# if {$ICC_FIX_ANTENNA} {# verify_zrt_route -antenna true # } else {# verify_zrt_route -antenna false # }redirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.sum {report_design -physical}## Create Snapshot and Savecreate_qor_snapshot -timing -constraint -congestion -clock_tree -route -name $ICC_CHIP_FINISH_CELsave_mw_cel -as $ICC_CHIP_FINISH_CELredirect -file $REPORTS_DIR/$ICC_CHIP_FINISH_CEL.qor_snapshot.rpt {report_qor_snapshot}exit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -