⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chip_finish_icc.tcl

📁 synopsys 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_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_FIX_ANTENNA } {    ########################################  #           ANTENNA FIXING             #  ########################################    ## do antenna fixing during seach&repair   if { [file exists [which $ANTENNA_RULES_FILE]]} {       set_droute_options -name doAntennaConx -value 4       source -echo $ANTENNA_RULES_FILE       report_antenna_rules       route_search_repair -rerun_drc -loop 10       report_antenna_ratio   }   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.  route_spreadwires -timing_driven -setup_slack_threshold $TIMING_PRESERVE_SLACK -search_repair_loop 3  route_widen_wire -timing_driven -setup_slack_threshold $TIMING_PRESERVE_SLACK -hold_slack_threshold $TIMING_PRESERVE_SLACK -search_repair_loop 3  if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." }  }  if {$ICC_DBL_VIA } {    ########################################  #           REDUNDANT VIA              #  ########################################    ## Running Timing driven redundant via insertion  set_app_var droute_optViaTimingDriven 1    ## When running Timing Driven 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]    ## Auto mode  insert_redundant_vias -auto_mode insert -num_cpus $ICC_NUM_CPUS    ## Optionally, manual mode  # 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"   if { [check_error -verbose] != 0} { echo "SCRIPT-Error, flagging ..." } }  ########################################  #          AUTO SHIELDING              #  ########################################    ##Shield Clocks/Nets if Constraint Set Previously  #create_auto_shield  if {$ADD_FILLER_CELL } {  ########################################  #          STD CELL FILLERS            #  ########################################  ##Filler Cellsif {$MV_MODE == "NONE" } {  if {$ADD_FILLER_CELL == "true" } {    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 {$MV_MODE == "UPF"} {  ## Manual mode derive_pg_connection command to complete PG connections of Physical only cells (fillers etc..)  ## derive_pg_connection -power_net VDDMS -power_pin VDD -cells [get_cells -filter "@is_hierarchical==false" -of [get_voltage_area MULT]]}}  if {$ICC_FIX_ANTENNA || $ICC_REDUCE_CRITICAL_AREA || $ICC_DBL_VIA || $ADD_FILLER_CELL } {  ########################################  #     INCREMENTAL TIMING OPTO          #  ########################################    route_opt -incremental -size_only  ##include -rerun_drc to ensure DRC count is correct  route_search_repair -rerun_drc -num_cpus 1 -loop 2    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  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/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 ..." } }}if {$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} }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 + -