User Tools

Site Tools


icc-par:ic_compiler_script_notes

This is an old revision of the document!


IC Compiler Script Notes

Synopsys Home

Synopsys provides a bunch of Tcl scripts as part of their reference methodology (rm) offering. An incomplete view into this flow for the ICC tool is shown below.

0.1 init_design_icc.tcl (rm_icc_scripts)

This script reads the logic design netlist and constraints, creates the floorplan or reads the floorplan from a DEF or floorplan file, and generates a zero interconnect timing report. The purpose of this script is to hand off a floorplanned design to the place_opt step, which is the next step in the flow. Depending on the input format (Milkyway, Verilog, or .ddc), the script reads the appropriate files and includes the floorplan information that already exists in the initial floorplanned design or that is provided in a separate DEF file. For a Milkyway CEL view or a .ddc file, no SDC constraints are loaded because the constraints are assumed to exist in the CEL view or .ddc file. For a Verilog netlist file, the read_sdc command is also executed. If you need to add floorplan constraints such as placement or routing blockages or different multivoltage or multicorner-multimode features, it is recommended that you do this in the file after reading in the design. Comments and commands in the scripts advise you where to specify the floorplan inputs. The name of the output design saved in this step is: init_design_icc.

  • icc_setup.tcl (in rm_setup): Whole bunch of ICC variables set.
    • make_generated_vars.tcl: Generated in the Makefile and defines some basic stuff.
    • common_setup.tcl (in rm_setup): Basic definitions like VDD and VSS.
    • set_mw_lib_reference $MW_DESIGN_LIBRARY -mw_reference_library *
    • check_icc_rm_values.tcl (in rm_icc_scripts): Exits ICC if script error.
  • open_mw_cel
  • initialize_floorplan: Make an initial floorplan.
  • $ICC_PHYSICAL_CONSTRAINTS_FILE (optional)
  • common_optimization_settings_icc.tcl (in rm_icc_scripts)
  • common_placement_settings_icc.tcl ( in rm_icc_scripts)
  • derive_pg_connection
  • save_mw_cell

0.2 flat_dp.tcl (rm_icc_dp_scripts)

The floorplan describes the size of the core; the shape and placement of standard cell rows and routing channels; standard cell placement constraints; and the placement of peripheral I/O, power, ground, corner, and filler pad cells.

  • icc_setup.tcl (in rm_setup): Called at the beginning of all scripts.
  • proc_explore.tcl (in rm_icc_dp_scripts)
    • dp_explore
    • set_host_options
    • set_fp_placement_strategy
    • create_fp_placement:
    • synthesize_fp_rail
    • commit_fp_rail
    • create_fp_virtual_pad (optional)
    • analyze_fp_rail
    • optimize_fp_timing
    • route_zrt_global OR route_global
    • remove_route_by_type
    • extract_rc
    • create_qor_snapshot
    • report_timing
    • report_qor_snapshot
    • write_floorplan
    • write_pin_pad_physical_constraints
    • write_def
  • gui_set_current_task
  • common_optimization_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_placement_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • ONE OF: macro_placement_exploration_dp.tcl OR baseline.tcl (both in rm_icc_dp_scripts), for baseline…
    • create_fp_placement: Place the standard cells in your boundary.
    • route_fp_proto
    • save_mw_cell
    • remove_route_by_type
    • extract_rc
    • create_qor_snapshot
    • synthesize_fp_rail: Synthesize the power rails. Can see estimated rail voltage drops.
    • commit_fp_rail: Commit power plan if power budget is met.
    • analyze_fp_rail
    • common_optimization_settings_icc.tcl
    • extract_rc
    • report_timing
    • optimize_fp_timing
    • route_fp_proto
    • save_mw_cel
    • remove_route_by_type
    • extract_rc
    • create_qor_snapshot
    • report_qor_snapshot
    • report_timing
    • set_dont_touch_placement
    • save_mw_cel
    • write_floorplan
    • write_pin_pad_physical_constraints

0.3 place_opt_icc.tcl (rm_icc_scripts)

  • icc_setup.tcl (in rm_setup): Called at the beginning of all scripts.
  • common_optimization_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_placement_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_cts_settings.tcl (in rm_icc_scripts): Clock tree synthesis. Set in place_opt and clock_opt sessions.
  • open_mw_lib
  • copy_mw_cel
  • open_mw_cel
  • place_opt
  • derive_pg_connection
  • save_mw_cell

0.4 clock_opt_cts_icc.tcl (rm_icc_scripts)

  • icc_setup.tcl (in rm_setup)
  • open_mw_lib
  • copy_mw_cel
  • open_mw_cel
  • common_optimization_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_placement_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_cts_settings.tcl (in rm_icc_scripts): Clock tree synthesis. Set in place_opt and clock_opt sessions.
  • set_app_var
  • set_delay_calculation
  • clock_opt -only_cts -no_clock_route: Perform clock tree synthesis.
  • derive_pg_connection
  • common_post_cts_timing_settings.tcl (in rm_icc_scripts)
  • remove_ideal_network
  • set_fix_hold
  • save_mw_cel

0.5 clock_opt_psyn_icc.tcl (rm_icc_scripts)

  • icc_setup.tcl
  • open_mw_lib
  • copy_mw_cel
  • open_mw_cel
  • common_optimization_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_placement_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_cts_settings.tcl (in rm_icc_scripts): Clock tree synthesis. Set in place_opt and clock_opt sessions.
  • common_post_cts_timing_settings_icc.tcl (in rm_icc_scripts)
  • set_app_var
  • extract_rc
  • clock_opt -no_clock_route -only_psyn -area_recovery
  • route_group
  • derive_pg_connection
  • same_mw_cel

0.6 clock_opt_route_icc.tcl (rm_icc_scrips)

  • icc_setup.tcl (in rm_setup)
  • open_mw_lib
  • copy_mw_cel
  • open_mw_cel
  • common_optimization_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_placement_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_cts_settings.tcl (in rm_icc_scripts): Clock tree synthesis. Set in place_opt and clock_opt sessions.
  • common_post_cts_timing_settings.tcl
  • common_route_si_settings_icc.tcl (in rm_icc_scripts)
  • set_si_options: Turn off SI for clock routing
  • set_delay_calculation
  • set_route_mode_options
  • optimize_clock_tree
  • derive_pg_connection
  • save_mw_cel

0.7 route_icc.tcl (rm_icc_scripts)

  • icc_setup.tcl (in rm_setup)
  • open_mw_lib
  • copy_mw_cel
  • open_mw_cel
  • common_optimization_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_placement_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_cts_settings.tcl (in rm_icc_scripts): Clock tree synthesis. Set in place_opt and clock_opt sessions.
  • common_post_cts_timing_settings.tcl
  • common_route_si_settings_icc.tcl (in rm_icc_scripts)
  • set_route_mode_options: Load route and SI settings.
  • report_preferred_routing_direction: Check routability.
  • report_tlu_plus_files
  • route_opt -initial_route_only -num cpus *: Initial route. CPU count can be set to 1 as a minimum.
  • update_clock_latency

0.8 route_opt_icc.tcl (rm_icc_scripts)

  • icc_setup.tcl (in rm_setup)
  • open_mw_lib
  • copy_mw_cel
  • open_mw_cel
  • common_optimization_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_placement_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_post_cts_timing_settings.tcl (in rm_icc_scripts)
  • common_route_si_settings_icc.tcl (in rm_icc_scripts)
  • set_app_var compile_instance_name_prefix icc_route_opt: Start post route optimization.
  • set_route_mode_options -zroute false
  • route_opt -skip_initial_route -effort * -xtalk_reduction: effort can be set to “low”
  • derive_pg_connection
  • save_mw_cel

0.9 chip_finish_icc.tcl (rm_icc_scripts)

  • icc_setup.tcl (in rm_setup)
  • open_mw_lib
  • copy_mw_cel
  • open_mw_cel
  • common_optimization_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_placement_settings_icc.tcl (in rm_icc_scripts): In all scripts.
  • common_post_cts_timing_settings.tcl (in rm_icc_scripts)
  • common_route_si_settings_icc.tcl (in rm_icc_scripts): Loads the route and SI settings.
  • set_droute_options -name doAntennaConx -value 4: Antenna fixing.
  • report_antenna_rules: Antenna fixing
  • route_search_repair -rerun_drc -loop 10: Antenna fixing.
  • report_antenna_ratio: Antenna fixing
  • insert_diode -no_auto_cell_selection -diode_cells *: Antenna fixing.
  • route_search_repair -rerun_drc -loop 3: Antenna fixing.
  • report_antenna_ration: Antenna fixing.
  • route_spreadwires: Wire spreading for shorts.
  • route_widen_wire: Wire widening for opens.
  • set_app_var droute_optViaTimingDriven 1: Timing driven redundant via insertion.
  • interst_redundant_vias -auto_mode insert -num_cpus *
  • insert_stdcell_filler -cell_without_metal $FILLER_CELL -connect_to_power “VDD” -connect_to_ground “VSS”: $FILLER_CELL defined in make_generated_vars.tcl.
  • route_opt -incremental -size_only: Incremental timing optimization.
  • route_search_repair -rerun_drc -num_cpus 1 -loop 2
  • derive_pg_connection
  • save_mw_cel

0.10 signoff_opt_icc

0.11 metal_fill_icc

0.12 outputs_icc.tcl (rm_icc_scripts)

  • icc_setup.tcl (in rm_setup)
  • open_mw_cel metal_fill_icc -lib *_LIB
  • change_names -rules verilog -hierarchy
  • save_mw_cel -as change_names_icc
  • close_mw_cel
  • open_mw_cel change_names_icc
  • write_verilog -diode_ports -no_physical_only_cells *.output.v
  • write_verilog -no_physical_only_cells *.output.dc.v
  • write_verilog -diode_ports -pg *.output.pg.lvs.v
  • set_app_var write_sdc_output_lumped_net_capacitance false
  • set_app_var write_sdc_output_net_resistance false
  • write_sdc *.output.sdc
  • extract_rc -coupling_cap
  • write_parasitics -format SBPF -output *.output.sbpf
  • write_def -output *.output.def
  • save_mw_cel
  • close_mw_cel
  • open_mw_cel
  • create_ilm -include_xtalk
  • create_macro_fram
  • set_droute_options -name doAntennaConx -value 4
  • extract_hier_antenna_property -cell_name *
  • close_mw_cel

0.13 ic

  1. initialize_floorplan (create_floorplan): In /rm_icc_scripts/init_design_icc.tcl Here you can set how close the design comes to your i/o pins.
  2. create_rectilinear_rings (in Preroute → Create Rings…)
icc-par/ic_compiler_script_notes.1399160171.txt.gz · Last modified: 2014/05/03 23:36 by magiero

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki