πŸ”§ Physical Design Blog

Part 2 of 10

Floorplanning

Defining chip size and organizing major blocks

By Praveen Kumar Vagala

1,056 views

What is Floorplanning?

Floorplanning is the first step - defining the chip's physical dimensions and placing major components.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ I/O Pads (Top) β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”‚ β”‚ I/O β”‚ CORE AREA β”‚ I/O β”‚ β”‚ Pads β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Pads β”‚ β”‚(Left) β”‚ β”‚ MACRO β”‚ β”‚ MACRO β”‚ β”‚(Right)β”‚ β”‚ β”‚ β”‚ (SRAM) β”‚ β”‚ (PLL) β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Standard Cell Placement Area β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ I/O Pads (Bottom) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Terms

TermDescription
Die AreaTotal chip area (includes I/O pads)
Core AreaArea available for logic (inside I/O ring)
Utilization% of core area filled with cells
Aspect RatioWidth / Height of core
MacroLarge pre-designed block (SRAM, PLL, etc.)

Die Size Calculation

Core Area = Total Cell Area / Target Utilization

Example:
  Total cell area = 1,000,000 umΒ²
  Target utilization = 70%
  
  Core Area = 1,000,000 / 0.70 = 1,428,571 umΒ²
  
  If aspect ratio = 1:
    Width = Height = √1,428,571 = 1,195 um

Die Area = Core Area + I/O Pad Area + Margins
Utilization Guidelines:
60-70%: Standard (room for optimization)
70-80%: Tight (challenging timing closure)
80%+: Very tight (may not close timing)

Macro Placement

Macros must be placed first - they're fixed during placement.

Macro Placement Guidelines

Good Placement: Bad Placement: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”β”‚ β”‚ β”Œβ”€β”€β”€β”€β” β”‚ β”‚ β”‚SRAMβ”‚ β”‚SRAMβ”‚β”‚ β”‚ β”‚SRAMβ”‚ β”Œβ”€β”€β”€β”€β” β”‚ β”‚ β””β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜β”‚ β”‚ β”Œβ”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€SRAMβ”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”˜ β”‚ β”‚ Standard Cells β”‚ β”‚ β”‚ Congested! β”‚ β”‚ β”‚ β”‚ └──────────────────│ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Macros on edges, Macros blocking clear routing channels routing paths

Macro Placement Rules

Macro Halos and Blockages

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Halo β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ MACRO β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Halo: Keep-out zone around macro (no cells placed here)
# Innovus command example
createPlaceBlockage -type hard -box {x1 y1 x2 y2}
createPlaceBlockage -type soft -box {x1 y1 x2 y2}  # Soft = can be violated

# Halo around macro
createPlaceBlockage -inst SRAM1 -haloDistance {5 5 5 5}

I/O Planning

Signal Pads Power Pads ↓ ↓ β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β” β”‚ IO β”‚ IO β”‚ IO β”‚VDD β”‚VSS β”‚ IO β”‚ IO β”‚ IO β”‚ ← Pad Ring β”œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ CORE β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Pin Placement Considerations

Floorplan Checks

CheckWhat to Verify
Utilization60-70% target range
Macro overlapNo overlapping macros
Routing channelsEnough space between macros
Power grid spaceRoom for power straps
Timing pathsCritical macros placed optimally

Commands Example (Innovus)

# Initialize design
read_verilog design.v
read_lef tech.lef cell.lef
read_sdc design.sdc

# Create floorplan
floorPlan -site core -r 1.0 0.7 10 10 10 10
#         -site: row type
#         -r 1.0: aspect ratio
#         0.7: utilization
#         10 10 10 10: margins (left bottom right top)

# Place macros
placeInstance SRAM_inst 100 200 R0

# Create blockages
createPlaceBlockage -box {0 0 50 1000} -type hard

# Verify floorplan
checkFPlan

Summary

ConceptKey Point
FloorplanDefine chip size and major blocks
Utilization60-70% typical target
MacrosPlace on edges, leave channels
I/O PadsRing around core
HalosKeep-out zones around macros