Initial Heterogeneous Placement¶
FPGA heterogeneous Floorplanner¶
This is dedicated OpenFPGA floorplan shapes each block in the FPGA in a classic tiling structure. This floorplanning can is applied to homogeneous architecture out of the box, but external information may be required for heterogeneous architecture.
This floor planner is sequential. It honors utilization constraints and parameter constraints in the given order.
Paramater Based (Preferred):¶
Following figure details the various paramteres referred in this type of floorplanning
|<--------- GRID_X --------->|
| |
┌───────────┐┌─────────────┐┌──────────────┐┌─────────────┐┌───────────┐
│ ││ top_cbx_w ││ ││ ↑ ││ │
│ ││<----------->││ ││ top_cbx_h↓ ││ │
│ ┌──┘└─────────────┘└──┐ ┌──┘└─────────────┘└──┐ │
│ │┌───────────────────┐│ │┌───────────────────┐│ │
└────────┘│ │└────────┘│ │└────────┘
┌────────┐│ │┌────────┐│ │┌────────┐
│ ↑ ││ ││ ↑││ ││ ↑ │
│ | ││ ││ |││ ││ | │
│ | ││ ││ |││ ││ | │
│left_ | ││ ││cby11_h|││ ││right | │
|cby_h ↓ ││ ││ ↓││ ││cby_h ↓ │
└────────┘│ │└────────┘│ │└────────┘
┌────────┐│ │┌────────┐│ │┌────────┐
│ │└───────────────────┘│ │└───────────────────┘│ │
│ └──┐┌─────────────┐┌──┘ └──┐┌─────────────┐┌──┘ │
│ ││ cbx11_w ││ ││ ↑ ││ │
│ ││<----------->││ ││ cbx11_h ↓ ││ │
│ ┌──┘└─────────────┘└──┐ ┌──┘└─────────────┘└──┐ │
│ │┌───────────────────┐│ │┌───────────────────┐│ │
└────────┘│ ↑ │└────────┘│ │└────────┘
┌────────┐│ | │┌────────┐│ │┌────────┐
│ ││ | ││ ││ ││ │
│ ││ | ││ ││ ││ │
│left_ ││ clb_h | ││ ││ ││right │
│cby_w ││ | ││cby11_w ││ ││cby_W │
│<------>││ | ││<------>││ ││<------>│
└────────┘│<----------------->│└────────┘│ │└────────┘
┌────────┐│ clb_w ↓ │┌────────┐│ │┌────────┐
│ │└───────────────────┘│ │└───────────────────┘│ │
│ └──┐┌─────────────┐┌──┘ └──┐┌─────────────┐┌──┘ │
│ ││bottom_cbx_w ││ ││ ↑││ │
│ ││<----------->││ ││bottom_cbx_h↓││ │
└───────────┘└─────────────┘└──────────────┘└─────────────┘└───────────┘
Utilization Based¶
Ideas:
Optionally provide a method to apply shaping and placement to the netlist elements
This function creates a parameterized dictionary detailig SHAPE, POINTS and PLACEMENT information
self.module_shape = {
"SHAPE" : 'rect' and 'cross',
"POINTS" : (w, h) or (a, b, c, d, e, f),
"PLACEMENT" : (x_off, v_off),
}
- class util.initial_hetero_placement.initial_hetero_placement(grid, netlist, fpga_grid: spydrnet_physical.util.FPGAGridGen.FPGAGridGen, debug=False, areaFile=None, shapingConf=None)[source]¶
Attributes:
Contated-poly-pitch
(`default`=2)Standard cell height
(`default`=10)Module level variable documented inline. (`default`=100).
Stores module database without any margin
Stores module database without any margin
Stores module database with margin
All the shaping paramteres
Methods:
add_module_colors
This will be extendned in the class
Overrides the base method to create placement information
Update two dimensional placement grid
This method updates the shape of all the modules based on the s_params variable
Overwrite default configuration variables
Snaps the point in multiple for 2
Snaps the point in multiple for 4
Return the area of the given module after considering the utilisation
This function compute different base variable for shaping FPGA fabric
This method calculated switch block dimensions from grid_clb and cb
create_shapes
- margins = {}¶
Stores module database without any margin
- Type
dict
- module_shapes_final = {}¶
Stores module database without any margin
- Type
dict
- module_final = {}¶
Stores module database with margin
- Type
dict
- s_param = {'OFFSET_X': 20, 'OFFSET_Y': 2, 'TILE_ASPECT_RATIO': 1}¶
All the shaping paramteres
- Type
dict
- __init__(grid, netlist, fpga_grid: spydrnet_physical.util.FPGAGridGen.FPGAGridGen, debug=False, areaFile=None, shapingConf=None)[source]¶