Product Documentation
Virtuoso Layout Suite XL: Connectivity Driven Editing User Guide
Product Version IC23.1, November 2023

abutMosStretchMat Property

abutMosStretchMat list abutFlush f_value
abutGateSpaceSeries f_value
abutGateSpaceParallel f_value
abutEncloseGate f_value
abutEncloseContact f_value
abutSmallerSeries f_value
abutSmallerParallel f_value
abutEncloseDogBoneContact f_value
abutMinContactWidth f_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.

;; 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

abutAccessDir Property

abutClass Property

abutCondInclusion Property

abutFunction Property

abutGateNet Property

abutStretchMat Property

abutOffset Property

Device Abutment

Creating CMOS Pcells to Use with Abutment

Setting Layout XL Properties

Layout XL Properties


Return to top
 ⠀
X