abutFunction Property
abutFunction string t_function_name
Description
Specifies a user-defined callback to process abutment and unabutment.
The value of this property is the name of a user-defined Cadence® SKILL function to be executed before abutment takes place. Auto-abutment passes this function the following eight arguments.
- The database ID of the cell to be abutted
- The database ID of the cell to be abutted to
- The database ID of the pin figure to be abutted
- The database ID of the pin to be abutted to
If an instance is deleted, the arguments 3 and 4 above are set to nil.
- An integer to indicate the abutment access direction of the pin being abutted where
-
An integer to indicate the connection condition where
- 1 = pins are connected to the same net and do not connect to any other pin
- 2 = pins are connected to the same net and the net connects to other pins
- 3 = pins are connected to different nets. Used for nets that are not connected, so that structures like guard rings and wells can be adjusted appropriately.
-
An integer specifying the auto-abutment event where
-
1 =
abutFunctionmust compute and return abutment offset (in the direction of abutment) -
2 =
abutFunctionmust adjust Pcell parameters for abutment. This is called before the offset event. -
3 =
abutFunctionmust adjust Pcell parameters for unabutment -
4 =
abutFunctionmust compute and return spacing offset for non abutment. -
5 =
abutFunctionmust compute and update the parameters of each named abutment shape in the Pcell instance, if required, before the abutment engine computes the connection condition value to be passed to Event 2.If both the Pcell instances to be abutted support abutment Event 5, the Event 5 is executed before Event 2. If either of the instances do not support Event 5, abutment Event 5 is canceled, and the abutment of dummy shapes fails. For more information Event 5, see Abutment Event 5.
-
1 =
-
A database group ID (
dbGroupId) of the abutment group, which is used in Event 2 and 3. The group ID is used to store information so that during unabutment, pins are returned to their original state. It is a well-accepted method to use the group attribute of a cell to hold original parameter values prior to modification by abutment.
abutFunctionreturns different values for different auto-abutment events.-
For Event 1, the function returns a floating-point number representing the offset needed to abut the cells in the direction of abutment.
If it returns two floating-point numbers, the second number is the distance in user units that the abutting cell is moved in the direction perpendicular to the direction of abutment. -
For Event 2, the function must return a value of
trueto allow abutment andnilto block abutment. When it returnsnil, it must not change any parameters in any way, including setting them to new values and then resetting them to the original values. - For Event 3, the function can return anything; the value returned is not used.
- For Event 4, the function returns the value of the spacing property set on non-abutting instances that determines how much the instances need to move to return to their pre-abutment state. If the spacing property is not set, the instances do not need to move.
-
For Event 5, the function must return a pair of figIDs to identify the shapes that need to be abutted. If it returns
nil, the abutment of dummy shapes fails and Event 2 is called instead. For more information about Event 5, see Abutment Event 5.
-
For Event 1, the function returns a floating-point number representing the offset needed to abut the cells in the direction of abutment.
Below is an example of an abutFunction.
procedure( abutFunction(iA iB pA pB pASide connection event @optional
(group nil)) prog((result)
case(event
)
(1 ; Compute offset
result = getAbutmentOffset(iA iB pA pB pASide connection)
)
(2 ; Adjust Pcell parameters
result = setAbutmentParams(iA iB pA pB pASide connection
group)
)
(3 ; Adjust Pcell parameters back to default
resetAbutmentParams(group iA iB)
result = t
)
(4 ; To get the spacing offset when pins are on different nets
if(instA~>w > 3.0 && instB~>w > 3.0
then
result = 3
else
result = 1
)
(5 ; Get abut shape IDs and update Pcell parameters to remove or adjust dummy shapes
result = myGetInterfaceShapePairFn(iA iB pA pB)
);; end of case 5
(t ; Anything else return a nil
result = nil
)
)
return(result)
)
)
If each pin being abutted has a different abutFunction defined, auto-abutment calls only the function defined by the pin in the cell being moved.
Example
dbReplaceProp(obj "abutFunction" "string" "mosAbutFunc")
Related Topics
Creating CMOS Pcells to Use with Abutment
Return to top