Multiple IO Ring
Multiple IO Ring
Multiple IO Ring
core
Flow
IC Compiler Design Planning Flow
Manual Adjusted Placements Fix IO Placements Insert IO Filler Cells Remove Blockages
Total number of rings Ring number for each IO Side number for each IO
Use set_pad_physical_constraints command to define IO constraints Use -chip_level_ring option to specify the total ring number
set_pad_physical_constraints \ -chip_level_ring {depth 2} set_pad_physical_constraints \ -pad_name PAD_1 -ring 1 -side 3 -order 5 set_pad_physical_constraints \ -pad_name PAD_2 -ring 1 -side 1 -order 1 set_pad_physical_constraints \ -pad_name PAD_3 -ring 2 -side 4 -order 17
PAD_2
PAD_3
set_pad_physical_constraints
The string for pad_name is a cell reference name if lib_cell is used The setting of {L T R B} is an additional rotation for left, top, right, and bottom sides of floorplan. It can be set as N, W, S, E, FN, FW, FS, or FE.
W S E
FN
FW FS FE
mirror X
rotate 90 first and then mirror X mirror Y rotate 90 first and then mirror Y
Initial Orientation
9
F After Rotation
10
\ \ \ \
30
Fix IO Placements Insert IO Filler Cells Remove Blockages
20 40 20
10
11
NOTE: Please migrate all scripts using initialize_floorplan to create_floorplan command. Synopsys plans to retire initialize_floorplan command
12
Create Blockages
User can use create_placement_blockage to reserve the space in I/O ring areas IO pads are still overlapped with blockages after blockages are created
13
Create Blockages
Example:
Set Pad Physical Constraints
Create Initial Floorplan Create Blockages Create Floorplan (Boundary Ctrl) Manual Adjusted Placements Fix IO Placements Insert IO Filler Cells Remove Blockages
create_placement_blockage \ -coordinate {{x1 y1}{x2 y2}} \ -name placement_blockage_1 \ -type hard create_placement_blockage \ -coordinate {{x3 y3}{x4 y4}} \ -name placement_blockage_2 \ -type hard
14
Create Floorplan (Boundary Ctrl) Manual Adjusted Placements Fix IO Placements Insert IO Filler Cells Remove Blockages
15
create_floorplan -control_type boundary \ -left_io2core -80 \ -top_io2core -80 \ -right_io2core -80 \ -bottom_io2core -80
-80 -80
16
IO Macro
17
18
Remove Blockages
You can remove the placement blockages
Open spaces in the internal IO ring may be used for standard cell placement
19
Case Study
Corner Cells Pad Filler IOs in Core Area
I/O Macros
Multi-height I/Os
VDDIO_1
VDDIO_2
20
Multi-height I/Os
# Rings and spacing set_pad_physical_constraints \ -chip_level_ring {{depth 2}} set_inter_io_ring_spacing \ -ring 1 \ -left_ring_spacing 100 \ -top_ring_spacing 100 \ -bottom_ring_spacing 100 \ -right_ring_spacing 100 source io_constraints.tcl # Create Initial Floorplan create_floorplan
21
Placement Blockage
22
Core Area
23
IO Macro
IO Macro
# Place IO macros set_attribute \ -quiet IOMACRO_INST1 \ origin { 638.850 2520.000} set_attribute \ -quiet IOMACRO_INST2 \ origin {4061.320 2520.000}
24
Pad Fillers
# Add IO fillers insert_pad_filler \ -ring 1 -cell \ "FILLER55 FILLER40 FILLER35 \ FILLER20 FILLER15 FILLER10 \ FILLER5 FILLER1 FILLER01 insert_pad_filler \ -ring 2 -cell \ "FILLER55 FILLER40 FILLER35 \ FILLER20 FILLER15 FILLER10 \ FILLER5 FILLER1 FILLER01"
25
Limitations
When placing IOMACROs or multi-height IOs in the IO ring the adjacent side leaves some gaps to align with the height of the taller IOs
Use placement blockage flow for IOMACROs Manually adjust some IO placement to fill the gap
Create_floorplan does not support Rectilinear floorplans at this time for Multi-IO Rings.
26
Summary
IC Compilers multiple I/O ring flow helps designers solve pad limited design challenges
Minimize die sizes as required by core density versus being limited by a single pad ring
IC Compiler supports multiple I/O rings starting from the F-2011.09 release
27