Core capabilities
iFP is the starting point of the physical design flow: it maps the post-synthesis gate-level netlist onto the chip's physical framework. It defines die size and core region, places IO pads, plans macro placement regions, and sets the foundation for downstream power-network construction and standard-cell placement. At its core, iFP is an explorable floorplanning engine—not a one-shot run, but a tool that lets Agents generate multiple candidate solutions within the constraint space and compare them.
Agents use iFP heavily in these scenarios: aspect ratio search—under a fixed area budget, try aspect ratios from 0.5 to 2.0 and observe estimated impact on routing congestion and timing; macro placement optimization—try different corner/edge positions for hard macros such as SRAM, PLL, and ADC, and analyze effects on standard-cell region continuity and routing resources; IO placement validation—check IO pad alignment with bumps/pad rings, uniform distribution of power pads, and proximity between signal IOs and internal blocks; floorplan constraint validation—verify physical feasibility of die/core area, placement blockages, halos, and other constraints, catching infeasible floorplans early.
In AI-assisted flows, Agents can batch-generate floorplan candidates with iFP, extract geometric features from each candidate (die area, core utilization, macro spread, standard-cell region connectivity) as vectors, feed them to learning models to predict final QoR (timing, congestion, routability), and automatically select the top-k floorplans. This generate→extract→predict→filter workflow can compress floorplan exploration from days of manual iteration to tens of minutes.
iFP floorplan algorithms support sequence-pair and B*-tree representations, combined with simulated annealing or analytical solvers for constraint resolution. Agents can steer floorplan generation by tuning simulated-annealing parameters (initial temperature, cooling rate, iteration count) and adjusting cost-function weights for area, wirelength, timing, and congestion. Results persist in iDB; downstream tools (iPDN, iPL) can reference floorplan_ref directly for placement context.
Agent calling patterns
# Agent calls iFP to generate a floorplan
from ieda_client import IEDAClient
client = IEDAClient()
# Basic floorplan — fixed aspect ratio and utilization
result = client.call("iFP.plan",
design_ref="snap_7f3a",
aspect_ratio=1.0,
utilization=0.7)
# Agent sweeps aspect_ratio to generate candidates
candidates = []
for ar in [0.6, 0.8, 1.0, 1.2, 1.4]:
fp = client.call("iFP.plan",
design_ref="snap_7f3a",
aspect_ratio=ar,
utilization=0.7)
candidates.append(fp)
# Agent evaluates candidates by die_area and core_area
best = min(candidates, key=lambda c: c['die_area'])
print(f"Best floorplan: {best['floorplan_ref']}")
{
"tool": "iFP.plan",
"arguments": {
"design_ref": "snap_7f3a",
"aspect_ratio": 1.0,
"utilization": 0.7
}
}
# Tcl interactive floorplanning
iFP::set_design snap_7f3a
iFP::set_aspect_ratio 1.0
iFP::set_utilization 0.7
iFP::create_floorplan
iFP::place_io -side {top bottom left right}
iFP::place_macro -macro_list {sram_0 sram_1 pll}
iFP::report_area
iFP::export_def -output snap_7f3a.floorplan.def
Input / output contract
| Field | Type | Required | Description |
|---|---|---|---|
design_ref | string | Yes | Design instance ID (includes post-synthesis netlist) |
aspect_ratio | float | Yes | Die aspect ratio (height/width), typical range 0.5–2.0 |
utilization | float | Yes | Target utilization, typical range 0.5–0.85 |
io_constraints | IOConstraint[] | No | IO pad placement constraints (edge, spacing, grouping) |
macro_placements | MacroPlacement[] | No | Pre-placed macro coordinates (fixed/guide) |
| Return field | Type | Description |
|---|---|---|
floorplan_ref | string | Floorplan reference ID in iDB |
die_area | float | Total die area (μm²) |
core_area | float | Core region area (μm²) |
io_positions | Point[] | (x, y) coordinates for each IO pad |
macro_positions | Point[] | Placement coordinates for each macro |
utilization | float | Achieved utilization |
Role in the flow
iMap / iNO synthesis output (netlist)
│
▼
┌─────────────┐
│ iFP │ ← Current tool: Floorplanning
│ Floorplan │
└──────┬──────┘
│ floorplan_ref
▼
┌─────────────┐
│ iPDN │ Power grid construction
│ Power Grid │
└──────┬──────┘
│
▼
┌─────────────┐
│ iPL │ Standard-cell placement (global/legalize/detailed)
│ Placement │
└──────┬──────┘
│
··· Later steps ···
Related resources
Paper
Chen TC, Chang YW. "Modern Floorplanning Based on B*-Tree and Simulated Annealing." IEEE TCAD, 2006.
View →Paper
Murata H, et al. "VLSI Module Placement Based on Rectangle-Packing by the Sequence-Pair." IEEE TCAD, 1996.
View →Related tool
iNO · Netlist optimization — post-synthesis netlist cleanup; affects module granularity in floorplanning.
iNO →