Initial Placement¶
OpenFPGA Floorplaner¶
This is dedicated OpenFPGA floorplaner which shape tiles in traditional structure as shown below. This placement class is not dependent iupon the architecture and always applied to homogeneous structure.
There are total two ways
Paramater Based (Preferred):¶
Following figure details the various paramteres referred in this type of floorplanning
|<--------- GRID_X --------->|
| |
┌───────────┐┌─────────────┐┌──────────────┐┌─────────────┐┌───────────┐ ∧
│ ││ CBX_TOP ││ ││ ││ │ |
│ ││ _WIDTH ││ ││ ││ │ | CBX_TOP_HEIGHT
│ ┌──┘└─────────────┘└──┐ ┌──┘└─────────────┘└──┐ │ ⩒
│ │┌───────────────────┐│ │┌───────────────────┐│ │
└────────┘│ GRID_CLB_RATIO │└────────┘│ │└────────┘
┌────────┐│ W/H │┌────────┐│ │┌────────┐
│ ││ ││ ││ ││ │
│ CBY_ ││ ││ CB_ ││ ││ CBY_ │
│ LEFT_ ││ ││ HEIGHT ││ ││ RIGHT_ │
│ HEIGHT ││ ││ _RATIO ││ ││ HEIGHT │
│ ││ ││ ││ ││ │
└────────┘│ │└────────┘│ │└────────┘
┌────────┐│ │┌────────┐│ │┌────────┐
↑ │ │└───────────────────┘│ │└───────────────────┘│ │
| │ └──┐┌─────────────┐┌──┘ └──┐┌─────────────┐┌──┘ │
| │ ││ CB_WIDTH_ ││ ││ ││ │ FPGA_SIZE[0],y
| │ ││ RATIO ││ ││ ││ │
G │ ┌──┘└─────────────┘└──┐ ┌──┘└─────────────┘└──┐ │
R │ │┌───────────────────┐│ │┌───────────────────┐│ │
I └────────┘│ │└────────┘│ │└────────┘
D ┌────────┐│ │┌────────┐│ │┌────────┐
_ │ ││ ││ ││ ││ │
Y │ ││ ││ ││ ││ │
| │ ││ ││ ││ ││ │
| │ ││ ││ ││ ││ │
| │ ││ ││ ││ ││ │
| └────────┘│ │└────────┘│ │└────────┘
| ┌────────┐│ │┌────────┐│ │┌────────┐
↓ │ │└───────────────────┘│ │└───────────────────┘│ │
│ └──┐┌─────────────┐┌──┘ └──┐┌─────────────┐┌──┘ │ ∧
│ ││ CBX_BOTTOM_ ││ ││ ││ │ |
│ ││ _WIDTH ││ ││ ││ │ | CBX_BOTTOM_HEIGHT
└───────────┘└─────────────┘└──────────────┘└─────────────┘└───────────┘ ⩒
<-----------> <--------->
CBY_LEFT_WIDTH CBY_RIGHT_WIDTH
Area Based:
OVERALL_UTILIZATION
GRID_CLB_UTILIZATION
SB_UTILIZATION
Common Parameters (All of them are absolute numbers in multiple of SC_HEIGHT or CPP)
GRID_CLB_CHAN_X
andGRID_CLB_CHAN_Y
: Grid CLB marginsCBx_CHAN_X
andCBx_CHAN_Y
: Connection box X marginsCBy_CHAN_X
andCBy_CHAN_Y
: Connection box Y marginsGPIO_CHAN_X
andGPIO_CHAN_Y
: GPIO cell margins
Absolute Numbers (In multiple of SC_HEIGHT or CPP)
GRID_X
GRID_Y
CLB_W
CLB_H
CBX_WIDTH
CBY_HEIGHT
LEFT_CBY_WIDTH
LEFT_CBY_HEIGHT
RIGHT_CBY_WIDTH
RIGHT_CBY_HEIGHT
TOP_CBX_WIDTH
TOP_CBX_HEIGHT
BOTTOM_CBX_WIDTH
BOTTOM_CBX_HEIGHT
Utilization Based¶
Ideas:
Optionally provide a method to apply shaping and placement to the netlist elements
- class util.initial_placement.initial_placement(grid, netlist, fpga_grid: spydrnet_physical.util.FPGAGridGen.FPGAGridGen, debug=False, areaFile=None, padFile=None, gridIO=False, shapingConf=None)[source]¶
Attributes:
Contated-poly-pitch
(`default`=2)Standard cell height
(`default`=10)Module level variable documented inline. (`default`=100).
Stores list of modules i uppose
Module level variable documented inline. (`default`=100).
Methods:
Overrides the base method to create placement information
Overwrite default configuration variables
get_default_configuration
get_variables
figSize
snapDims
ComputeGrid
CreateDatabase
add_clb
add_cbx
add_cby
get_stype
unique
Adds switch-blocks in the placement database
add_gridIOH
add_gridIOV
add_pad
- PlacementDB = []¶
Stores list of modules i uppose
- Type
list