Multiple IO Ring
-
Upload
aparna-tiwari -
Category
Documents
-
view
175 -
download
9
Transcript of Multiple IO Ring
-
Creating Multi I/O Ring Die
Using IC Compiler
Sufyan Khan, Synopsys Inc.
John Ho, Synopsys Inc.
-
2
As feature sizes continue to shrink, die sizes are more often becoming pad limited
Single perimeter ring of required I/Os is larger than core required to implement functions of the chip
The Problem: Pad Limited Design
core
-
3
Fit concentric I/O rings around required core size
Innermost ring is usually segmented
The Solution: Multiple I/O Rings
-
4
Flow
IC Compiler
Design Planning Flow
Read Netlist
Virtual Flat Placement
Multiple I/O Planning
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
-
5
Set Pad Physical Constraints
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
Minimum input data: 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
Use -ring option to set ring number for each IO
-
6
Set Pad Physical Constraints
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
Example:
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_1
PAD_2 PAD_3
Note: Up to 6 levels of rings are
supported
-
7
Change Pad Orientation
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
Use
set_pad_physical_constraints
command and following options to
change orientation for four sides -lib_cell -pad_name string
-lib_cell_orientation {L T R B}
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.
-
8
N rotate 0
Change Pad Orientation
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
W rotate 90
S rotate 180
E rotate 270
FN mirror X
FS mirror Y
FW rotate 90 first and then mirror X
FE rotate 90 first and then mirror Y
-
9
Change Pad Orientation
set_pad_physical_constraints \
-lib_cell \
-pad_name F_CELL \
-lib_cell_orientation {W S N S}
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
F
F F
F
F
F F
F
Example
Initial Orientation After Rotation
-
10
Spacing Between IO Rings
You can specify the spacing between the rings using set_inter_io_ring_spacing
command
IC Compiler allows to set the inter ring spacing per side based
-left_ring_spacing
-top_ring_spacing
-right_ring_spacing
-bottom_ring_spacing
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
-
11
Spacing Between IO Rings
Example:
set_inter_io_ring_spacing \
-ring 1 \
-left_ring_spacing 40 \
-top_ring_spacing 30 \
-right_ring_spacing 20 \
-bottom_ring_spacing 10
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
30
10
40
20
20
-
12
Create Initial Floorplan
Use create_floorplan
to create the initial floorplan and place
the IO cells
Example:
create_floorplan \
-core_utilization 0.7 \
-core_aspect_ratio 1.2
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
NOTE:
Please migrate all scripts using initialize_floorplan to create_floorplan
command. Synopsys plans to retire initialize_floorplan command
-
13
Create Blockages
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
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
-
14
Create Blockages
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
Example:
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
-
15
Create Floor Plan Boundary Control
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
Use command
create_floorplan \
-control_type boundary
to honors the placement blockages
You can also use following options to set the distance between the core and the pad cells
-left_io2core distance
-top_io2core distance
-right_io2core distance
-bottom_io2core distance
NOTE:
(1) If a distance is a negative value, the boundary
of core area will beyond pads (2) Option -min_pad_height is replaced by
these -*_io2core options
-
16
Create Floor Plan Boundary Control
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
Example:
create_floorplan -control_type boundary \
-left_io2core -80 \
-top_io2core -80 \
-right_io2core -80 \
-bottom_io2core -80
-80
-80
-
17
Manual Adjusted Placements
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
You can manually place IO Macros locations by using GUI in layout view
IO Macro
-
18
Fix Placement and Insert IO Filler
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
After IO cells location are refined and fixed, its time to insert filler cells
Perform automatic filler cell insertion using insert_pad_filler ring
option specifies which ring fillers will be
placed
-
19
Remove Blockages
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
You can remove the placement
blockages
Open spaces in the internal IO ring may be used for standard cell placement
-
20
Case Study
VDDIO_2
Multi-height
I/Os
IOs in
Core Area
Pad
Filler
I/O
Macros
Corner
Cells
VDDIO_1
Multiple
I/O Power
Domains
-
21
Create Initial Floor Plan
# 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
Multi-height
I/Os
Power
Break Cell
Corner
Cells
-
22
Create Placement Blockages
# Add placement 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
Placement
Blockage
Placement
Blockage
Overlapped
with IO
Pads
Placement
Blockage
-
23
Create Floor Plan Boundary Control
# create floorplan with
# boundary control
create_floorplan \
-control_type boundary \
-top_io2core -310\
-bottom_io2core -264 \
-left_io2core -100 \
-right_io2core -467
Placement
Blockage
Core Area
Placement
Blockage
Placement
Blockage
IO Pads are
Relocated
-
24
Manual Adjusted Placement
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}
-
25
Fix I/O Placement and
Insert I/O Filler Cells
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"
-
26
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.
-
27
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
We demonstrated how to create a complex, multi-ring IO structure, including: multi-height I/O cells I/O macros multiple I/O power domains
IC Compiler supports multiple I/O rings starting from the F-2011.09 release