Pin Assignment
Pin Assignment
May 2010
Product(s)
Encounter Digital Implementation (EDI) System
Purpose
You can optimize partition and blackbox pins in the EDI System environment based on routing or
placement information. You can assign the pins or ports to a location on a partition, and set various
constraints as per your requirements on pin assignment, for example, you can create pin blockages on
specified areas.
Run the Check Pin Assignment menu command (Partition Check Pin Assignment) or the
checkPinAssignment text command after pin assignment to make sure that all pins are assigned, are
placed on routing grids, and are not overlapping.
Pin assignment support all types of pins such as partition, black box, and I/O pins. You can use
assignPtnPin command to assign pins to black box and partition as well and assignIoPins command to
assign I/O pins.
With partition pin assignment, the tool has visibility within the partitions in a virtual-flat view and uses this
information to derive pin locations. Shown here, the pin is placed such that the total net length after
assembly is more optimal.
Support both placement and route-based for black box and partition pin assignment
Placement-based pin assignment does not consider congestion, so scenic routing may occur to make this
connection. Pin assignment is based on connectivity flightlines. Cell placement should be performed
before running pin assignment.
Route-based pin assignment does consider routing blockages. For route-based pin assignment, routing
should be performed prior to the assignPtnPin command. It uses trialRoute topology to determine pin
locations, so scenic routing can be avoided.
Placement based pin assignment Routing based pin assignment
Pin assignment can place pins on abutted partition. It reserves abutment edge segments for 2 pins nets
between abutted partitions. Earlier all 2-pin nets in the channel-less design were not aligned.
SEG1: Abutted edge segment between A3 and C1 N1: Set of 2 pins nets between A3 and C1
SEG2: Abutted edge segment between C1 and C2 N2: Set of 2 pins nets between C1 and C2
SEG3: Abutted edge segment between P1 and P2 N3: Set of 2 pins nets between P1 and P2
First you need to use definePartition command or Partition->Specify Partition GUI to define
partition for this block. You can use -hinst option to specify which instance is the master. The
master partition must have a R0 orientation. Since other instances are referenced the same cell
as the master hierarchical instance, EDI will automatically know they are clones. Once you define
partition for this block, you go through the normal flow and then run assignPtnPin command.
Guiding Pin Assignment:
You can create pin/bus guide to selective guide specific signal pins to be placed in certain area.
Use createPinGuide/createBusGuide command to create pin/bus guide.
You can create pin blockage to prohibit pin placement in certain area. Use createPinBlkg
command to create pin blockage.
You can create pin/net group to place a group of pins in specific order. Use
createPinGroup/createNetGroup and addPinToPinGroup/addNetToNetGroup commands to
create pin/net group and add pins/nets to these groups.
Pin assigned in bus guide area Bus guide Pin blockage Pin guide
You can provide different types of pin constraints for pin assignment:
Pin size will be created based on the minimum area rule by default. Use the
setLayerPinWidth and setLayerPinDepth commands to set new pin width and
depth of a routing layer for a specific partition/black box cell. You can also
specify pin size for a specific pin or pin group using the setPinWidth and the
setPinDepth commands.
You can set the pin-to-corner distance constraint to keep pins away from
partition/black box corners. The default value is 5 routing tracks. Use
setPinToCornerDistance command to set the pin-to-corner distance for a
module.
5 tracks away from corner of partition
You can specify pin layers that will be used for placing pins on a specific partition
side:
You can specify layer constraint per edge at partition level. Use
setAllowedPinLayersOnEdge command with -layer and edge options to
specify layer and edge.
You can specify layer constraints for all pin members of a pin/bus guide.
Use layer option of createPinGuide/ createBusGuide command to
specify the layer. Layer constraint at pin guide will override the layer
constraint at partition level.
You can specify layer constraint for a specific partition/black box pin. Use
-layer parameter of the setPinConstraint command to specify the layer.
Layer constraint at pin level will have higher priority than layer constraint
at partition level.
You can set minimum pin spacing in terms of track number. The default pin
spacing is 2, which places a pin for every two metal tracks.
You can specify global pin spacing at design level Design. Use
setGlobalMinPinSpacing command to set global pin spacing.
You can specify min pin spacing for particular edge/side of a partition.
Use -edge parameter of the setMinPinSpacing command to specify min
pin spacing.
You can specify min pin spacing for a pin/net group. Use
createPinGroup/createNetGroup command to specify min pin spacing for
pin/net group.
You can specify min pin spacing to a particular pin. Use setPinConstraint
command to specify the min pin spacing to a particular pin.
As spacing constraint can be specified at more than one level, pin assignment will honor spacing
constraint in the following order:
- Pin spacing
- Net group or pin group spacing
- Partition/black box spacing on a particular edge
- Partition/black box spacing
- Global spacing
You can use assignPtnPin command or Partition Assign Pins GUI menu to assign pins. There is no
separate step required for assigning black box pins.
Use checkPinAssigment command after pin assignment to make sure that pins are legalized (for
example, the pins snap to routing grid, are on reserved routing layers, honor user-specified constraints,
do not cause any DRC violations, and so on).
Use pinAnalysis command to report certain Quality of Results (QoR) metrics for pin assignment. The
pinAnalysis command deletes the existing routes, reroutes the design ensuring that the routes pass
through partition pins, and reports pin assignment QoR metrics.
Adjusting Pins:
You can adjust pins using the Pin Editor or the editPin text command. You can also use direct pin
manipulation to manually move selected pins to different locations.
You can align partition pins with other block pins (using the Pin Editor or the pinAlignment text command).
The pinAlignment command can be used to align partition/black box pins with or without specified
reference object(s). Reference objects can be hard macros, blackboxes, I/O pads, and standard cells.
You can re-run pin assignment based on the current pin assignment result. You can specify pin
constraints to further guide new pin placement. If you want to reoptimize only a few specific pins, use the
-ptn and the -pin options of the assignPtnPin command to specify the list of pins that will be reassigned.
Tips:
For channel-less design, 2-pin nets should be aligned on abutted edges. If they are not aligned or
unplaced:
o Make sure abutted edge(s) have enough room for placing pins of adjacent 2-pin nets
(example, remove un-needed routing blockages)
o Check if they are pins belonged to non-neighboring partitions. If yes then corresponding net
must be feedthrough insertion.
o Check if they are pins belonged to multi-fanout net. If yes, pins are unplaced and the
corresponding net must be feedthrough insertion.
Make sure multi-fanout net has driver; otherwise feedthrough wont be inserted
o May be encounter infeasible pin solution
assignPtnPin is not channel aware. Should create routing blockages in thin channels before
running trialRoute to assure that only pins that are connected between adjacent edges are get
assigned on these edges.
assignPtnPin is not shape based aware so pins may be placed close to adjacent macros that
caused DRC violation. Currently pin assignment only looks at 4 tracks from the boundary.
If design has empty modules then its recommended to use black box pin assignment instead of
partition pin assignment
Should use fastRouteForPinAssign or routeBasedBBoxPin option of trialRoute instead of
handlePartitionComplex
o Should not use fastRouteForPinAssign/-routeBasedBBoxPin for design with thin
channels > cause congestion at thin channels
Make sure design does not have partitions with non R0 master orientation
o Encounter will automatically convert non R0 black box master to R0
Transform its clone orientation accordingly
Placement location is unchanged