Skip to content

Latest commit

 

History

History
36 lines (36 loc) · 4.76 KB

README.md

File metadata and controls

36 lines (36 loc) · 4.76 KB

Utility Scripts details

This directory contains three types of scripts: (1) TCL scripts, (2) Python scripts and (3) Shell scripts, as detailed below:

  • TCL Scripts:
    • extract_report.tcl: Contains procedure to extract metrics (e.g., Core Area, Standard Cell Area, Macro Area, Total Power, Wire Length, WNS, TNS, Congestion) at different stages of P&R in the Innovus shell. First source this file in the Innovus shell and then you can use the following commands:
      • extract_report preCTS: Use this command to extract metric after running the place_opt_design command.
      • extract_report postCTS: Use this command to extract metric after running the ccopt_design command.
      • extract_report postRoute: Use this command to extract metric after running the routeDesing or opt_desing -postRoute command.
    • gen_pb.tcl: Contains procedure to write out a flat netlist in the protocol buffer format in the Innovus shell. First source this file in the Innovus shell and then use the gen_pb_netlist command.
      • gen_pb_netlist: This command writes out the flat netlist in the protobuf format. The output file name is <top design>.pb.txt.
    • pdn_flow.tcl: This script generates the power delivery network (PDN) for the Innovus implementation. It uses the following PDN configuration file available in the ./Enablements/* directory.
    • place_pin.tcl: This script places all the top-level design ports on the left boundary. Pins are spreaded over 65% length around the center of the left boundary.
    • write_required_def.tcl: This script writes out the def and netlist files from the Innovus shell. We use these def and netlist files as inputs to CodeElement to generate the clustered netlist.
  • Python Scripts:
    • flow.py: This script runs gridding, grouping and clustering to generate the clustered netlist. It requires two inputs:
      • run directory: Provide the SP&R run directory path.
      • output directory: Provide the name of the output directory. In this directory the script will write out the clustered netlist.
      • Example: python flow.py <run directory> <output directory>
    • gen_setup.py: This is a helper script of flow.py. This extracts the required inputs from the run directory to run the CodeElement.
    • genJobList.py: It creates a run directory to run Flow-1 and Flow-2 for each design on all platforms and writes out the job file. You can use this job file to submit a GNU Parallel job.
      • Example: python ./util/genJobList.py (ensure you are in the Flows directory.)
    • plc_pb_to_placement_tcl.py: It writes out the *.plc file from the clustreed-protobuf netlist.
    • shuffle_macro.tcl: It shuffles the same type (having the same reference name) macros. First source this tcl file and then use the shuffle_macros command to shuffle the macro locations. This script randomly shuffles macros. If macro A moves to the position of macro B then the orientation of macro A will be the initial orientation of macro B.
  • Shell Scripts:
    • run_CodeFlow.sh: This runs the flow.py in the run directory to generate the clustered netlist.
      • Example: In the run directory just use ./run_CodeFlow.sh command to generate the clustered netlist while using Flow-4. Make sure PHY_SYNTH is set to 1.
    • run_grp.sh: This script generates clustered netlist using CircuitTraining grouping code. It uses the following environmental variables:
      • CT_PATH: Provide the full path of Circuit Training (CT). This path is added to import the grouping module available in the CT repo.
      • HMETIS_DIR: Provide the path of the hMETIS binary directory.
      • PLC_WRAPPER_MAIN: Provide the path of the plc_wrapper_main binary.
      • OUTPUT_DIR: Clustered netlist generated using CT grouping flow will be available in the OUTPUT_DIR. Provide the full or relative path.
      • NETLIST_FILE: Flat post-physical-synthesis protobuf netlist path.
      • BLOCK NAME: Provide the name of the design.
    • run_grp_main.sh: Here update the CT_PATH, HMETIS_DIR and PLC_WRAPPER_MAIN path and then source it in the SP&R run directory then it will generate the clustered netlist.