The MASK statement was added to specify how many masks for double- or triple-patterning will be used for a specified layer. You can use this statement for layers - cut, routing, implant, overlap, and/or masterslice.
Includes the following new syntax (in bold):
LAYER layerName
TYPE ROUTING ; #or TYPE CUT, IMPLANT, MASTERSLICE, OVERLAP
[MASK numMasks ;]
Some technologies do not allow mask shifting for cells using multi-mask patterning, e.g., pin and routing shapes are all pre-colored and must not be shifted to other masks. The FIXEDMASK statement was added to indicate that mask shifting is not allowed. All the LEF macro pin mask assignments are kept fixed and cannot be shifted to a different mask.
Includes the following new syntax (in bold):
FIXEDMASK ;
LAYER <statement>
MACRO macroName
[CLASS className [subclassName] ;]
[FIXEDMASK ;]
...
For fixed vias - rectangle or polygon - the masks in the via-master for cut layer are required for multi-cut vias. The VIARULE statement was enhanced to include masks. The MASK statement indicates which mask for double- or triple-patterning lithography is to be applied to the shapes defined using the RECT or POLYGON statements of the via master.
Includes the following new syntax (in bold):
VIA viaName [DEFAULT]
{ VIARULE viaRuleName ;
CUTSIZE xSize ySize ;
LAYERS botMetalLayer cutLayer topMetalLayer ;
CUTSPACING xCutSpacing yCutSpacing ;
ENCLOSURE xBotEnc yBotEnc xTopEnc yTopEnc ;
[ROWCOL numCutRows numCutCols ;]
[ORIGIN xOffset yOffset ;]
[OFFSET xBotOffset yBotOffset xTopOffset yTopOffset ;]
[PATTERN cutPattern ;]
}
| [RESISTANCE resistValue ;]
{LAYER layerName ;
{ RECT [MASK maskNum] pt pt ;
| POLYGON [MASK maskNum] pt pt pt ...; } ...
}...
}
[PROPERTY propName propVal ;] ...
END viaName
Macro layer geometries support multi-mask patterning. Three different masks can be added to the same layer geometries. The MASK statement was added to indicate which mask from double- or triple-patterning is to be used for path, rectangle, polygon, or via geometries.
Includes the following new syntax (in bold):
{ LAYER layerName
[EXCEPTPGNET]
[SPACING minSpacing | DESIGNRULEWIDTH value] ;
[WIDTH width ;]
{ PATH [MASK maskNum] pt ... ;
| PATH [MASK maskNum] ITERATE pt ... stepPattern ;
| RECT [MASK maskNum] pt pt ;
| RECT [MASK maskNum] ITERATE pt pt stepPattern ;
| POLYGON [MASK maskNum] pt pt pt pt ... ;
| POLYGON [MASK maskNum] ITERATE pt pt pt pt ... stepPattern ;
} ...
| VIA [MASK viaMaskNum] pt viaName ;
| VIA ITERATE [MASK viaMaskNum] pt viaName stepPattern ;
} ...
For syntax information, see "LEF Syntax" chapter in the LEF/DEF Language Reference.
The BLOCKAGES section was enhanced to include masks. The MASK statement indicates which mask for double- or triple-patterning lithography is to be used for the specified shapes.
Includes the following new syntax (in bold):
[BLOCKAGES numBlockages ;
[- LAYER layerName
[+ COMPONENT compName | + SLOTS | + FILLS | + PUSHDOWN
| + EXCEPTPGNET]
[+ SPACING minSpacing | + DESIGNRULEWIDTH effectiveWidth]
[+ MASK maskNum]
{RECT pt pt | POLYGON pt pt pt ...} ...
;] ...
END BLOCKAGES]
The COMPONENTMASKSHIFT statement defines which layers of a component are allowed to be shifted from the original mask colors in the LEF. This can be useful to shift all the layers of a specific component in order to align the masks with other component or router mask settings to increase routing density. This definition allows a specific component to compactly describe the mask shifting for that component.
Includes the following new syntax:
[COMPONENTMASKSHIFT layer1 [layer2 ...] ;]
The MASKSHIFT statement was added to allow shifting of the cell-master masks used in double- or triple-patterning for specific layers of an instance of the cell-master.
Includes the following new syntax (in bold):
COMPONENTS numComps ;
[- compName modelName
[+ EEQMASTER macroName]
[+ SOURCE {NETLIST | DIST | USER | TIMING}]
[+ {FIXED pt orient | COVER pt orient | PLACED pt orient
| UNPLACED} ]
[+ MASKSHIFT shiftLayerMasks]
[+ HALO [SOFT] left bottom right top]
[+ ROUTEHALO haloDist minLayer maxLayer]
[+ WEIGHT weight]
[+ REGION regionName]
[+ PROPERTY {propName propVal} ...]...
;] ...
END COMPONENTS
The MASK statement was added to specify which mask for double- or triple-patterning lithography is to be applied to the specified rectangles, polygons, or via shapes on each layer.
Includes the following new syntax (in bold):
[FILLS numFills ;
[- LAYER layerName [+ MASK maskNum] [+ OPC]
{RECT pt pt
| POLYGON pt pt pt ...} ... ;] ...
[- VIA viaName [+ MASK viaMaskNum] [+ OPC] pt ... ;] ...
END FILLS]
The NETS section was enhanced to provide the ability to create a rectangle or add a virtual connection to maintain the symbolic routing graph.
The RECT statement allows creating a rectangle from the previous routing points. The VIRTUAL statement indicates that there is a virtual connection between the previous point and the new routing point.
Includes the following new syntax (in bold):
{ ( x y [extValue] )
{ ( x y [extValue] )
| viaName [orient]
| RECT ( deltax1 deltay1 deltax2 deltay2 )
| VIRTUAL ( x y ) } } ...
The NETS section routing points was enhanced to add masks - up to three different masks for the same layer can be added.
Includes the following new syntax (in bold):
{ ( x y [extValue] )
[MASK maskNum] ( x y [extValue] )
| [MASK viaMaskNum] viaName [orient]]
| [MASK maskNum] RECT ( deltax1 deltay1 deltax2 deltay2 )
| VIRTUAL ( x y ) } } ...
A new VIA statement was added to make it more efficient to specify several power-vias.
Includes the following new syntax (in bold):
[ [+ COVER | + FIXED | + ROUTED | + SHIELD shieldNetName]
[+ SHAPE shapeType] [+ MASK maskNum]
+ POLYGON layerName pt pt pt...
| + RECT layerName pt pt
| + VIA viaName [orient] pt ...
| {+ COVER | + FIXED | + ROUTED | + SHIELD shieldNetName}
layerName routeWidth
[+ SHAPE shapeType]
[+ STYLE styleNum]
routingPoints
[NEW layerName routeWidth
[+ SHAPE shapeType]
[+ STYLE styleNum]
routingPoints
] ...
] ...
New syntax for routing points:
(x y [extValue] )
{ [MASK maskNum] (x y [extValue] )
| [MASK viaMaskNum] viaName [orient]
[DO numX BY numY STEP stepX stepY]
}...
For fixed vias, rectangle or polygon, the masks in the via-master for cut-layer shapes are required for multi-cut vias. The MASK statement indicates which mask for double- or triple-patterning lithography is to be applied to the defined shapes.
Includes the following new syntax (in bold):
[VIAS numVias ;
[- viaName
{ + VIARULE viaRuleName
+ CUTSIZE xSize ySize
+ LAYERS botmetalLayer cutLayer topMetalLayer
+ CUTSPACING xCutSpacing yCutSpacing
+ ENCLOSURE xBotEnc yBotEnc xTopEnc yTopEnc
[+ ROWCOL numCutRows NumCutCols]
[+ ORIGIN xOffset yOffset]
[+ OFFSET xBotOffset yBotOffset xTopOffset yTopOffset]
[+ PATTERN cutPattern]
|[ + RECT layerName [+ MASK maskNum] pt pt
| + POLYGON layerName [+ MASK maskNum] pt pt pt] ...
}
;] ...
END VIAS]
The routing tracks can now have mask assignments to aid alignment of routing masks inside a block with the level above. The MASK statement indicates which mask for double- or triple-patterning lithography to use for the first routing track.
Includes the following new syntax (in bold):
[TRACKS
[{X | Y} start DO numtracks STEP space
[MASK maskNum [SAMEMASK]]
[LAYER layerName ...]
;] ...]
The PINS syntax has been modified in include mask attributes. The MASK statement indicates which mask from double- or triple-patterning to use for pins or via shapes on each layer.
Includes the following new syntax (in bold):
[PINS numPins ;
[ [- pinName + NET netName]
...
[[+ PORT]
[+ LAYER layerName
[MASK maskNum]
[SPACING minSpacing | DESIGNRULEWIDTH effectiveWidth]
pt pt
|+ POLYGON layerName
[MASK maskNum]
SPACING minSpacing | DESIGNRULEWIDTH effectiveWidth]
pt pt pt ...
|+ VIA viaName
[MASK viaMaskNum]
pt
] ...
[+ COVER pt orient | FIXED pt orient | PLACED pt orient]
]...
; ] ...
END PINS]
The BLOCKAGES section was enhanced to allow a blockage to simultaneously have COMPONENT, PUSHDOWN, and EXCEPTPGNET statements with the other attributes. These statements are now independent and not exclusive. The meaning of the keywords is unchanged.
Includes the following syntax changes (in bold):
[BLOCKAGES numBlockages ;
[- LAYER layerName
[+ SLOTS | + FILLS]
[+ PUSHDOWN]
[+ EXCEPTPGNET]
[+ COMPONENT compName]
[+ SPACING minSpacing | + DESIGNRULEWIDTH effectiveWidth]
[+ MASK maskNum]
{RECT pt pt | POLYGON pt pt pt ...} ...
;] ...
[- PLACEMENT
[ + SOFT | + PARTIAL maxDensity]
[+ PUSHDOWN]
[+ COMPONENT compName]
{RECT pt pt} ...
;] ...
END BLOCKAGES
For syntax information, see "DEF Syntax" chapter in the LEF/DEF Language Reference.