abutMosStretchMat Property
abutMosStretchMat list abutFlush f_valueabutGateSpaceSeriesf_valueabutGateSpaceParallelf_valueabutEncloseGatef_valueabutEncloseContactf_valueabutSmallerSeriesf_valueabutSmallerParallelf_valueabutEncloseDogBoneContactf_valueabutMinContactWidthf_value
Description
Governs how a material is stretched towards or away from a gate when an instance is altered for abutment.
The picture below illustrates the MOS diffusion extension rules for the different abutMosStretchMat property values.

A = abutFlush (Not shown). Applied to the pin which does not move when abutting two pins of equal width.
B = abutGateSpaceSeries. Applied to the moving pin when abutting two pins of equal width with no contact required between the gates. The abutFlush rule is applied to the non-moving pin.
C = abutGateSpaceParallel. Applied to the moving pin when abutting pins of equal width where a contact is required between the gates and the pin widths are greater than or equal to the abutMinContactWidth rule. The abutFlush rule is applied to the non-moving pin.
D = abutEncloseGate. Applied to the larger of two abutting pins when a contact is not required between the gates. The abutSmallerSeries rule is applied to the smaller of the two pins being abutted.
E = abutEncloseContact. Applied to the larger of two different-width abutting pins when a contact is required between the gates but only if the width of the larger pin is greater than or equal to the abutMinContactWidth rule. The abutSmallerParallel rule is applied to the smaller of the two pins being abutted.
F = abutSmallerSeries. Applied to the smaller of two abutting pins when a contact is not required between the gates.
G = abutSmallerParallel. Applied to the smaller of two abutting pins when a contact is required between the gates.
H = abutEncloseDogBoneContact. Applied when contacts are required and the width of the device is less than the abutMinContactWidth rule. It is applied to the larger of two different-width pins or to the moving pin when the two pins are of equal width.
I = abutMinContactWidth. Determines whether to use the abutEncloseContact rule or the abutEncloseDogBoneContact rule when a contact is required between gates.
Example
This example illustrates the properties being applied to pins on the left and right edges of a MOS Pcell.
-
The pin rectangles were created by the
rodCreateRectcommand and are referenced by two variables calledleftObjandrightObjpointing to their rod object IDs. -
The Pcell parameters that control the stretching of the left and right pin extensions past the gate are called
leftStandrightSt. -
All abutment extension rule values in the
abutMosStretchMatproperty list must be numeric. -
The Pcell parameters that control whether or not the left or right pins have contacts over them are
leftCntandrightCnt. - The contact parameters must be of type boolean.
;; Definition of variables used in the abutRuleList calculations for
;; the abutMosStretchMat property.
;; cw = contact width
;; doc = diffusion overlap of contact
;; pps = poly to poly space
;; pcs = poly to contact space
;; pds = poly to diffusion space
abutRuleList = list(
list("abutFlush" 0.0)
list("abutGateSpaceSeries" pps)
list("abutGateSpaceParallel" max((cw + (pcs * 2)) pps))
list("abutEncloseGate" doc)
list("abutEncloseContact" doc + cw + pcs)
list("abutSmallerSeries" max((pps - doc) pds))
list("abutSmallerParallel" max((pcs - doc) (pps - pcs - cw - doc) pds))
list("abutEncloseDogBoneContact" cw + doc + max(pds+doc pcs))
list("abutMinContactWidth" cw + (2 * doc))
)
;; Definition of variables used for abutClass and autoSpacer property values.
;; d_layer = diffusion layer (used for abutClass property value)
;; dds = diffusion to diffusion space (used by autoSpacer)
;; Add the abutment and spacer properties to the left diffusion pin.
leftObj~>dbId~>pin~>name = "leftContact"
dbReplaceProp(leftObj~>dbId "abutCondInclusion" "string" "leftCnt")
dbReplaceProp(leftObj~>dbId "abutMosStretchMat" "list"
cons("leftSt" abutRuleList))
dbReplaceProp(leftObj~>dbId "abutClass" "string" d_layer)
dbReplaceProp(leftObj~>dbId "abutGateNet" "string" "G")
dbReplaceProp(leftObj~>dbId "abutAccessDir" "list" list("left"))
dbReplaceProp(leftObj~>dbId "vxlInstSpacingDir" "list" list("left"))
dbReplaceProp(leftObj~>dbId "vxlInstSpacingRule" "float" dds)
;; Add the abutment and spacer properties to the right diffusion pin.
rightObj~>dbId~>pin~>name = "rightContact"
dbReplaceProp(rightObj~>dbId "abutCondInclusion" "string" "rightCnt")
dbReplaceProp(rightObj~>dbId "abutMosStretchMat" "list"
cons("rightSt" abutRuleList))
dbReplaceProp(rightObj~>dbId "abutClass" "string" d_layer)
dbReplaceProp(rightObj~>dbId "abutGateNet" "string" "G")
dbReplaceProp(rightObj~>dbId "abutAccessDir" "list" list("right"))
dbReplaceProp(rightObj~>dbId "vxlInstSpacingDir" "list" list("right"))
dbReplaceProp(rightObj~>dbId "vxlInstSpacingRule" "float" dds)
Related Topics
Creating CMOS Pcells to Use with Abutment
Return to top