Skip to content

Latest commit

 

History

History
 
 

util

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.