Product Documentation
LEF/DEF 6.0 Language Reference
Product Version 6.0, September 2022

3


LEF Syntax - Layer (Implant)

This chapter contains information about the following topics:

Layer (Implant)

LAYER layerName
TYPE IMPLANT ;
[MANUFACTURINGGRID value ;]
[MASK maskNum ;]
[WIDTH minWidth ;]
[SPACING minSpacing [LAYER layerName2]   ;] ...
[PROPERTY propName propVal ;] ...
[PROPERTY LEF_CDN_AREA 
   "AREA minArea
   ; " ;]
[PROPERTY LEF_CDN_COREEDGELENGTH
   "COREEDGELENGTH minLength 
       [EXCEPTADJACENTLENGTH 
          {exactEdgeLength adjLength [EXACTADJACENTLENGTH]}...]
   ; " ;]
[PROPERTY LEF_CDN_CORNERSPACING 
   "CORNERSPACING spacing [ALIGNEDONLY]
       [CHECKIMPLANTGROUPONLY]
   ; " ;]
[PROPERTY LEF_CDN_MINENCLOSEDAREA
   "MINENCLOSEDAREA area 
   ; " ;]
[PROPERTY LEF_CDN_MINSTEP
   "MINSTEP minStepLength MINADJACENTLENGTH minAdjLength
   ; " ;]
[PROPERTY LEF_CDN_SPACING
   "SPACING minSpacing [LAYER layerName2] 
       [HORIZONTAL|VERTICAL PRL prl ][EXCEPTABUTTED]
            [EXCEPTCORNERTOUCH] [LENGTH length]
            [INTERSECTLAYERS layerNameList...]
   ; " ;]
[PROPERTY LEF_CDN_WIDTH
   "WIDTH minWidth [LAYER {layerName2 | ANY}]
       [ZEROPRL [MAXWIDTH maxWidth]] [EXCEPTCORNERTOUCH]
       [LENGTH length] [CHECKIMPLANTGROUP groupName]
   ; " ;]
END layerName 

Defines implant layers in the design. Each layer is defined by assigning it a name and simple spacing and width rules. These spacing and width rules only affect the legal cell placements. These rules interact with the library methodology, detailed placement, and filler cell support. You must define implant layers separately, with their own layer statements.

LAYER layerName

Specifies the name for the layer. This name is used in later references to the layer.

LAYER layerName2

Specifies the name of another implant layer that requires extra spacing that is greater than or equal to minSpacing from this implant layer.

MANUFACTURINGGRID value

Defines the manufacturing grid for this layer. The vertices of every shape on this layer must be on the manufacturing-grid or a DRC violation will occur. If not given, the library MANUFACTURINGGRID value is used. value is a positive float number in units of microns.

MASK maskNum

Specifies how many masks for double- or triple-patterning will be used for this layer. The maskNum variable must be an integer greater than or equal to 2. Most applications only support values of 2 or 3.

PROPERTY propName propVal

Specifies a numerical or string value for a layer property defined in the PROPERTYDEFINITIONS statement. The propName you specify must match the propName listed in the PROPERTYDEFINITIONS statement.

SPACING minSpacing

Specifies the minimum spacing for the layer. This value affects the legal cell placement.
Type: Float, specified in microns

TYPE IMPLANT

Identifies the layer as an implant layer.

WIDTH minWidth

Specifies the minimum width for this layer. This value affects the legal cell placement.
Type: Float, specified in microns

Example 3-1 Implant Layer

Typically, you define high-drive cells on one implant layer and low-drive cells on another implant layer. The following example defines high-drive cells on implant1 and low-drive cells on implant2. Both implant layers cover the entire cell. The placer and filler cell creation attempt to legalize the cell overlaps in abutting rows to ensure that the minimum width and spacing values are met.

LAYER implant1         #high-drive implant layer
TYPE IMPLANT ; 
WIDTH 0.50 ;       #implant rectangles must be >=0.50 microns wide
SPACING 0.50 ;     #implant rectangles must be >=0.50 microns apart 
END implant1
LAYER implant2         #low-drive implant layer
   TYPE IMPLANT ; 
   WIDTH 0.50 ;    #implant rectangles must be >=0.50 microns wide
   SPACING 0.50 ;  #implant rectangles must be >=0.50 microns apart
END implant2

Assume that the high-drive cells and low-drive cells are completely covered by their respective implant layers. Because there is no spacing between implant1 and implant2 specified, you might see a placement like that illustrated in Figure 3-1.

Figure 3-1

Note that you can correct A, C, D, and E by putting in filler cells with the appropriate implant type. However, B cannot be corrected by a filler cell—either the placer must avoid it, or you must allow the filler cell or post-process command to move cells or modify the implant layer to correct the error.

Defining Implant Layer Properties to Create 32/28 nm and Smaller Nodes Rules

You can include implant layer properties in your LEF file to create DRC rules that currently are not supported by existing LEF syntax. The properties are specified inside the LAYER IMPLANT statements, where they can be seen with other rules.

Before you can reference them, properties must be defined at the beginning of the LEF file in the PROPERTYDEFINITIONS statement, immediately before the first LAYER statement.

In LEF 5.8, the prefix for these properties was LEF58_. However, as these rules are probably never going into native LEF syntax and are interpreted only by Cadence tools (other tools have their own DRC rules syntax independent from LEF), the prefix was changed to be independent of the version and CDN was added to indicate that they are normally used only by Cadence tools. To make the transition easier, any tool that reads and interprets these properties should allow either LEF58_ or LEF_CDN_ as the prefix when reading the properties. Tools that write out LEF should use LEF_CDN_ for LEF 6.0, and LEF58_ for LEF 5.8.

All properties use the following syntax within the LEF PROPERTYDEFINITIONS statement:

PROPERTYDEFINITIONS 
LAYER propName STRING ["stringValue"] ; 
END PROPERTYDEFINITIONS 

The property definitions for the implant layer properties are as follows:

PROPERTYDEFINITIONS
LAYER LEF_CDN_AREA STRING ;
LAYER LEF_CDN_COREEDGELENGTH STRING ;
LAYER LEF_CDN_CORNERSPACING STRING ;
LAYER LEF_CDN_MINENCLOSEDAREA STRING ;
LAYER LEF_CDN_MINSTEP STRING ;
LAYER LEF_CDN_SPACING STRING ;
LAYER LEF_CDN_WIDTH STRING ;
END PROPERTYDEFINITIONS

Area Rule

An area rule can be used to specify the minimum area on the implant layer.

You can use the following property definition:

PROPERTY LEF_CDN_AREA 
"AREA minArea
; " ;

Where:

AREA minArea

Specifies the minimum area on the implant layer.
Type: Float, specified in microns.

Core Edge Length Rule

A core edge length rule can be used to indicate that the edge length of an implant shape of a CORE (standard) cell must be greater than or equal to the specified minimum length.

You can create a core edge length rule by using the following property definition:

PROPERTY LEF_CDN_COREEDGELENGTH
 "COREEDGELENGTH minLength 
     [EXCEPTADJACENTLENGTH 
        {exactEdgeLength adjLength [EXACTADJACENTLENGTH]}…]
  ; " ;

Where:

COREEDGELENGTH minLength

Specifies that the edge length of the implant shape of a CORE (standard) cell, in the direction of the cell row, must be greater than or equal to the minLength.
Type:  Float, specified in microns

EXCEPTADJACENTLENGTH
{
exactEdgeLength adjLength [EXACTADJACENTLENGTH]}...]

Specifies that the edge length is exempted if it’s length is exactly equal to exactEdgeLength, with an adjacent length less than or equal to adjLength, or exactly equal to adjLength if EXACTADJACENTLENGTH is defined.
Type: Float, specified in microns

Figure 3-2 Example of Core Edge Length Rule

Corner Spacing Rule

A corner spacing rule can be used to specify the spacing between two corner touch points.

You can create a corner spacing rule by using the following property definition:

PROPERTY LEF_CDN_CORNERSPACING 
   "CORNERSPACING spacing [ALIGNEDONLY]
       [CHECKIMPLANTGROUPONLY]
   ; " ;

Where:

CORNERSPACING spacing

Specifies the spacing between two corner touch points, where each of the touch points is formed by two implant shapes.

Type: Float, specified in microns.

ALIGNEDONLY

Specifies the rule applies only when the two corner touch points are vertically aligned.

CHECKIMPLANTGROUPONLY

Specifies that this corner spacing rule does not apply to shapes of this implant layer, but applies only to the merged shapes of any implant group with BASEDLAYER pointing to this implant layer.

Corner Spacing Rule Examples

Figure 3-3 Illustration of Corner Spacing Rule

Min Enclosed Area Rule

A min enclosed area rule can be used to specify the minimum area that is enclosed by shapes on the current implant layer.

You can create a min enclosed area rule by using the following property definition:

PROPERTY LEF_CDN_MINENCLOSEDAREA
 "MINENCLOSEDAREA area 
  ; " ;

Where:

MINENCLOSEDAREA area

Specifies the minimum area that is enclosed by shapes on the current implant layer.
Type:  Float, specified in microns square

Figure 3-5 Example of the Min Enclosed Area Rule

Min Step Rule

You can create a min step rule by using the following property definition:

PROPERTY LEF_CDN_MINSTEP
   "MINSTEP minStepLength MINADJACENTLENGTH minAdjLength
   ; " ;

Where:

MINSTEP minStepLength MINADJACENTLENGTH minAdjLength

Specifies a min step length rule vertically on a pattern with three implant layer shapes forming a staircase on three consecutive vertical cell rows. The middle vertical cell length of the staircase must be greater than minStepLength if the lengths of both the adjacent horizontal edges are less than or equal to minAdjLength. The staircase pattern means that consecutive edges must form a concave corner and a convex corner.

Type: Float, specified in microns

Figure 3-6 Illustration of the Min Step Rule

Spacing Rule

A spacing rule can be used to specify the spacing requirements for the current implant layer. You can create a spacing rule by using the following property definition:

PROPERTY LEF_CDN_SPACING
   "SPACING minSpacing [LAYER layerName2] 
       [HORIZONTAL|VERTICAL PRL prl ][EXCEPTABUTTED]
            [EXCEPTCORNERTOUCH] [LENGTH length]
            [INTERSECTLAYERS layerNameList...]
       ; " ;

Where:

EXCEPTABUTTED

Specifies that the implant spacing rule is exempted if the two implant shapes are abutted. PRL in the orthogonal direction of the spacing (that is, vertical PRL in HORIZONTAL or horizontal PRL in VERTICAL) must be greater than 0 to trigger the exemption. In other words, the corner or point touch in the VERTICAL case for horizontal cell rows is not exempted.

EXCEPTCORNERTOUCH

Specifies that the implant spacing rule is exempted if the two implant shapes are corner or point touch in the VERTICAL case for horizontal cell rows.

HORIZONTAL|VERTICAL PRL prl

Specifies that the implant spacing rule applies only in the given direction. By default, the spacing is applied horizontally for implant shapes on the same row. In the VERTICAL case, the rule applies only if the horizontal projected PRL is greater than prl. If prl is negative, the rule is checked for two implant shapes within abs(prl).

Type: Float, specified in microns

INTERSECTLAYERS layerNameList...

Specifies that the spacing rule applies only if the spacing gap is covered by shapes in any implant layers in layerNameList. For VERTICAL, this construct should be applied only when a negative value is given in PRL. It is a violation only if the spacing gap is covered by shapes in any implant layers in layerNameList on both sides on two adjacent rows.

Type: String

LAYER layerName2

Specifies the name of another implant layer that requires extra spacing that is greater than or equal to minSpacing from this implant layer.

LENGTH length

Specifies that the spacing rule applies only to implant shapes with length less than length, which is the vertical height for horizontal cell rows. Implant shapes are not merged across different cell rows for length or height determination. In addition, an implant shape with length less than length does not need to honor any other implant spacing rule without LENGTH.

Type: Float, specified in microns

SPACING minSpacing

Specifies the minimum spacing for the layer. This value affects the legal cell placement.

Type: Float, specified in microns

Spacing Rule Examples

Figure 3-7 Illustration of the Spacing Rule

Figure 3-8 Illustration of the Spacing Rule

Width Rule

A width rule can be used to specify the width requirements for the current implant layer. You can create a spacing rule by using the following property definition:

[PROPERTY LEF_CDN_WIDTH
   "WIDTH minWidth [LAYER {layerName2 | ANY}]
       [ZEROPRL [MAXWIDTH maxWidth]] [EXCEPTCORNERTOUCH]
       [LENGTH length] [CHECKIMPLANTGROUP groupName]
       ]; " ;

Where:

CHECKIMPLANTGROUP groupName

Specifies that it is a violation only if the given implant group, groupName, to which the implant layer belongs also violates the width requirement at the same location.
Type: String

EXCEPTCORNERTOUCH

Specifies that the width requirement does not apply if corners touch.

LAYER {layerName2 | ANY}

Specifies the name of another implant layer that requires the width check after its shapes merge with the shapes on the current implant layer. If ANY is specified, the width check is performed one by one between the current implant layer and any other implant layers.
Type: String

LENGTH length

Specifies that the width rule applies only to implant shapes with length less than length, which is the vertical height for horizontal cell rows. Implant shapes should be merged across different cell rows for length or height determination. In addition, an implant shape with length less than length does not need to honor any other implant width rule without LENGTH.
Type: Float, specified in microns

MAXWIDTH maxWidth

Specifies that the adjacent row width checking applies only if the width of any shapes on a row is less than or equal to maxWidth.
Type: Float, specified in microns

WIDTH minWidth

Specifies the minimum width for this layer. This value affects the legal cell placement.
Type: Float, specified in microns

ZEROPRL

Specifies that the width requirement applies only for two implant shapes on adjacent rows with zero PRL in the direction perpendicular to the row direction.

Width Rule Examples


Return to top
 ⠀
X