OpenFPGA Physical- Directory Structure

Creating Tapeout Project

The hierarchical flow of the OpenFPGA-Physical recommends incrementally building the large FPGA fabric. In that methodology, the larger fabric such as a 100x100 FPGA design can be derived from a smaller replica 4x4. The OpenFPGA-Tapeout directory is designed to support such a design hierarchy

OpenFPGA-Physical-Tapeout-Template
├ <project_1_directory>
├ <project_2_directory>
|   ├ CommonFiles
|   |   ├ config.sh
|   |   ├ common_task/
|   |   |   ├ arch/
|   |   |   ├ config/
|   |   |   ├ custom_modules/
|   |   |   ├ IPs/
|   |   |   ├ micro_benchmark/
|   |   |   └ sc_verilog/
|   |   ├ icc2_custom_project_dp_scripts/
|   |   └ icc2_custom_project_pnr_scripts/
|   ├ FPGA4x4_k4n8_design_pnr
|   |   ├ config.sh
|   |   ├ FPGA4x4_k4n8_design_task/
|   |   ├ FPGA4x4_k4n8_design_verilog/
|   |   ├ dp
|   |   |   └ fpga_top
|   |   |       ├ dp_setup/
|   |   |       ├ icc2_dp_scripts/
|   |   |       ├ icc2_custom_dp_scripts/
|   |   |       ├ icc2_custom_project_dp_scripts/
|   |   |       └ Makefile
|   |   ├ pnr
|   |   |   ├ <tile1_name>
|   |   |   └ <tile2_name>
|   |   |       ├ pnr_setup/
|   |   |       ├ icc2_pnr_scripts/
|   |   |       ├ icc2_custom_pnr_scripts/
|   |   |       ├ icc2_custom_project_pnr_scripts/
|   |   |       └ Makefile
|   |   ├ release
|   |   |   ├ ConnectNets
|   |   |   ├ rpts
|   |   |   ├ SVG
|   |   |   ├ TCL
|   |   |   ├ dp
|   |   |   ├ pnr
|   |   └ Makefile
|   └ FPGA16x16_k4n8_design_pnr
|       └ ....
└ OpenFPGAPhysicalDesign-ICC2
   ├ LoadTools.sh
   ├ dp
   |   └ fpga_top
   |       ├ dp_setup/
   |       ├ icc2_dp_scripts/
   |       ├ icc2_custom_dp_scripts/
   ├ pnr
   |   ├ pnr_setup/
   |   ├ icc2_pnr_scripts/
   |   └ icc2_custom_pnr_scripts/
   ├ Makefile
   └ scripts

Module Place and Route

Scripts

Remark

init design

SH_PRE_INIT_DESIGN

Sourced before launching init_design icc2_shell

TCL_USER_TAP_CELL_ADDITION

Module level tap cell addition

TCL_USER_PG_CREATION_FILE

Power grid connections

TCL_USER_INIT_DESIGN_POST_SCRIPT

Physical hierarchical restructuring if required

TCL_USER_SET_SDC

This script set the explicit SDCs for the module

SH_POST_INIT_DESIGN

Sourced after finishing init_design phase in icc2_shell

place_out

SH_PRE_PLACE_OPT

Sourced before launching place_opt phase in icc2_shell

TCL_LIB_CELL_PURPOSE_FILE

Setting cell purpose for the library cells

TCL_USER_PLACE_OPT_PRE_SCRIPT

Sourced before running detailed placement

TCL_USER_PLACE_OPT_SCRIPT

Overwrites the existing placement flow

TCL_USER_PLACE_OPT_POST_SCRIPT

Sourced after running detailed placement

SH_POST_PLACE_OPT

Sourced after launching place_opt phase in icc2_shell

clock_opt

SH_PRE_CLOCK_OPT_SCRIPT

Sourced before running clock synthesis

TCL_USER_CLOCK_OPT_CTS_PRE_SCRIPT

Sourced before running clock synthesis

TCL_USER_CLOCK_OPT_CTS_SCRIPT

Overwrite the clock synthesis run

TCL_USER_CLOCK_OPT_CTS_POST_SCRIPT

Sourced after running clock synthesis

SH_POST_CLOCK_OPT_SCRIPT

Sourced after clock synthesis

clock_opt_opto

SH_PRE_CLOCK_OPT_SCRIPT

Sourced before running clock optimization

TCL_USER_CLOCK_OPT_CTS_PRE_SCRIPT

Sourced before running clock optimization

TCL_USER_CLOCK_OPT_CTS_SCRIPT

Overwrite the clock optimization run

TCL_USER_CLOCK_OPT_CTS_POST_SCRIPT

Sourced after running clock optimization

SH_POST_CLOCK_OPT_SCRIPT

Sourced after clock optimization

route_auto

SH_PRE_ROUTE_AUTO_SCRIPT

Sourced before running detailed routing

TCL_USER_ROUTE_AUTO_PRE_SCRIPT

Sourced before running detailed routing

TCL_USER_ROUTE_AUTO_SCRIPT

Overwrite the detailed routing run

TCL_USER_ROUTE_AUTO_POST_SCRIPT

Sourced after running detailed routing

SH_POST_ROUTE_AUTO_SCRIPT

Sourced after detailed routing

route_opt

SH_PRE_ROUTE_OPT_SCRIPT

Sourced before running route optimization

TCL_USER_ROUTE_OPT_PRE_SCRIPT

Sourced before running route optimization

TCL_USER_ROUTE_OPT_SCRIPT

Overwrite the route optimization run

TCL_USER_ROUTE_OPT_POST_SCRIPT

Sourced after running route optimization

SH_POST_ROUTE_OPT_SCRIPT

Sourced after route optimization

chip_finish

SH_PRE_ROUTE_OPT_SCRIPT

Sourced before running route optimization

TCL_USER_CHIP_FINISH_PRE_SCRIPT

Sourced before running route optimization

TCL_USER_CHIP_FINISH_POST_SCRIPT

Sourced after running route optimization

SH_POST_ROUTE_OPT_SCRIPT

Sourced after route optimization

icv_in_design

SH_PRE_ICV_IN_DESIGN_SCRIPT

Sourced before running route optimization

TCL_USER_ICV_IN_DESIGN_PRE_SCRIPT

Sourced before running route optimization

TCL_USER_ICV_IN_DESIGN_POST_SCRIPT

Sourced after running route optimization

SH_POST_ICV_IN_DESIGN_SCRIPT

Sourced after route optimization