📄 route_icc.tcl
字号:
## ICC RM Version: B-2008.09 ########################## route_icc: Routing ##########################source -echo icc_setup.tclopen_mw_lib $MW_DESIGN_LIBRARYredirect /dev/null "remove_mw_cel -version_kept 0 ${ICC_ROUTE_CEL}" copy_mw_cel -from $ICC_CLOCK_OPT_ROUTE_CEL -to $ICC_ROUTE_CELopen_mw_cel $ICC_ROUTE_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_icc.tclif {$MV_MODE != "NONE" } { ########################## ## FIX SPECIAL MV CELLS ########################## if {$LS_CELLS != ""} { set LS [get_cells -hier -f "ref_name =~ ${LS_CELLS}*"] set_dont_touch $LS set_attribute $LS is_fixed true } if {$RR_CELLS != ""} { set RR [get_cells -hier -f "ref_name =~ ${RR_CELLS}*"] set_dont_touch $RR set_attribute $RR is_fixed true } if {$AO_CELLS != ""} { set AO [get_cells -hier -f "ref_name =~ ${AO_CELLS}*"] set_dont_touch $AO set_attribute $AO is_fixed true }} if { $MV_MODE == "UPF" } { ############################# ## COMPLETE POWER CONNECTIONS ############################# derive_pg_connection -create_net -verbose derive_pg_connection -reconnect -verbose check_mv_design -power_nets -verbose }####Pre route_opt checks##Check for Ideal Netsset num_ideal [sizeof [all_ideal_nets]]if {$num_ideal >= 1} {echo "SCRIPT-Error-Info: $num_ideal Nets are ideal prior to route_opt. Please investigate."}##Check for HFNsset hfn_thres "41 101 501"foreach thres $hfn_thres { set num_hfn [sizeof [all_high_fanout -nets -threshold $thres]] echo "SCRIPT-Info: Number of nets with fanout > $thres = $num_hfn" if {$thres == 501 && $num_hfn >=1} { echo "SCRIPT-Error-Info: $num_hfn Nets with fanout > 500 exist prior to route_opt - Please check if marked ideal - possibly add buffer tree" }}if {$MCMM_MODE } { set_active_scenarios [lminus [all_scenarios] $ICC_MCMM_CTS_SCENARIO] update_timing }if {$MV_MODE != "NONE" } { if {[file exists [which $CUSTOM_SECONDARY_POWER_ROUTE_SCRIPT]]} { source -echo $CUSTOM_SECONDARY_POWER_ROUTE_SCRIPT } }if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }######################################### ROUTE_OPT CORE COMMAND ########################################### some checks upfront #check_routeabilityreport_preferred_routing_direction## Route first the design ## Enable the new distributed routing algorithm report_tlu_plus_files## Enabling a different distributed algorithm for Detail Route# set_app_var droute_enable_one_pass_partitioning 1route_opt -initial_route_only -num_cpus $ICC_NUM_CPUSif { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }if {$ICC_DBL_VIA} { save_mw_cel -as ${ICC_ROUTE_CEL}_NO_DBL_VIA## To get optimal double via rate, perform first a non-timing driven double via insertion.## Later on, during chipfinishing, we will execute a Timing Driven double via insertion.## Auto mode for insert_redundant_via insert_redundant_vias -auto_mode preview insert_redundant_vias -auto_mode insert -num_cpus $ICC_NUM_CPUS## Optionally, manual mode for insert_redundant_via# insert_redundant_vias \ #-num_cpus $ICC_NUM_CPUS \ #-from_via "from_via_list" \ #-to_via "to_via_list" \ #-to_via_x_size "list_of_via_x_sizes" \ #-to_via_y_size "list_of_via_y_sizes" ##example: -from_via "VIA45 VIA45 VIA12A" -to_via "VIA45f VIA45 VIA12f" -to_via_x_size "1 1 1" -to_via_y_size "2 2 2"}######################################### 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 derive_pg_connection -reconnect } 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/route.mv {check_mv_design -power_nets -verbose} save_upf $RESULTS_DIR/$ICC_ROUTE_CEL.upf }}if {$MCMM_MODE } { set_active_scenarios [lminus [all_scenarios] $ICC_MCMM_CTS_SCENARIO] update_timing}redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.qor {report_qor}redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.con {report_constraints}if {$MCMM_MODE } { redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.max.tim {report_timing -scenario [all_scenarios] -capacitance -transition_time -input_pins -nets -delay max} redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.min.tim {report_timing -scenario [all_scenarios] -capacitance -transition_time -input_pins -nets -delay min} } else { redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.max.tim {report_timing -capacitance -transition_time -input_pins -nets -delay max} redirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.min.tim {report_timing -capacitance -transition_time -input_pins -nets -delay min} }create_qor_snapshot -timing -constraint -congestion -clock_tree -route -name $ICC_ROUTE_CELsave_mw_cel -as $ICC_ROUTE_CELredirect -file $REPORTS_DIR/$ICC_ROUTE_CEL.qor_snapshot.rpt {report_qor_snapshot}exit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -