Product Documentation
Virtuoso Fluid Guard Ring Developer Guide
Product Version IC23.1, June 2023

2


Fluid Guard Ring Infrastructure

The implementation of the fluid guard ring (FGR) solution resides in a SKILL object-oriented infrastructure known as Virtuoso Fluid Object (VFO) infrastructure. This consists of classes and their methods. This chapter covers information about these classes. You can extend these classes to control the behavior of FGRs in your layout designs.

Class Hierarchy in VFO Infrastructure

The VFO infrastructure is primarily based on the following SKILL++ classes:

Implementation Class

The implementation class structure has the following four classes:

The vfoGuardRing and vfoAdvGuardRing are the two main implementation classes that contain the draw() method. If you are implementing fluid guard ring with pitch support, use the vfoAdvGuardRing class.

vfoSfBaseClass

vfoSfPCellClass

Slots

The vfoSfPCellClass class has the following slots:

Slots for fluid shape parameters

modelLpp

The layer-purpose pair (LPP) for fluid shape.
Data type: list

shapeType

The type of fluid shape, that is, path, rectangle, or polygon.

shapeData

The shape points.

Slots for editing parameters

vfoProtocolClass

The editing class.
Data type: string

keepOuts

The regions where tunnels are being created in the following format:(list(layer bbox))
Data type: list

Slots for layers

mainLpp

The master LPP mapped to fluid shape, normally a metal or diffusion layer.

hilightLpp

The annotate LPP.

tmpLpp

The temporary layer to draw intermediate shapes on.
Data type: list

Slots for connectivity

termName

The name of the terminal to which the fluid shape must be connected.

pinName

The name of the pin to which the fluid shape must be connected.

Slots for enclosure

enclosureClass

The vfoSfEnclosureClass class that is used for drawing the enclosing layers.

enclosures

The layers that should enclose the main LPP, normally, implant and well layers.

Slots for debugging

debug

A positive integer value.

hide_keepouts

A Boolean value, that is, t or nil.

do_something

A Boolean value, that is, t or nil.

Slots for contact filling class

fillClass

The name of the contact filling class.

decompositionMode

The contact filling mode.

Slots for initialization of formal and CDF parameters

Do not update the following slots during customization.

cv

cdf

superMaster

shapeObj

Methods

The vfoSfPCellClass class has the following methods:

vfoGuardRing

Slots

The vfoGuardRing class has the following slots:

techFile

The name of the technology files.
Data type: string

vfoGRImpl

The name of the implementation class.
Data type: string

classVersion

The version of the VFO source code.
Data type: integer

formalVersion

This slot is used only for internal processing in the infrastructure.

createVersion

This slot is only a placeholder and has no effect on the FGR functionality.

Data type: string

Its value is set as null string ("").

defComplementaryDevice

The name of a complementary device.

This slot is only a placeholder and has no effect on the FGR functionality.

Data type: string

Its value is set as null string ("").

guardRingType

The device is of N or P type.

This slot is only a placeholder and has no effect on the FGR functionality. Its value is set as "N".

designLib

This slot is only a placeholder for now and has no effect on the FGR functionality.

Data type: string

Its value is set as null string ("").

contAlignment

This slot is only a placeholder for now and has no effect on the FGR functionality.

Data type: string

Its value is set as null string ("").

cacheCreateVersion

The create version of FGR sub-master.
Data type: string

removeCornerContacts

This slot is only a placeholder for now and has no effect on the FGR functionality.

Data type: string

Its value is set as null string ("").

Slots used for drawing layers (Data type: string; Default value: nil)

enclosingLayers

metalLayer

contLayer

diffLayer

pinLayers

Slots for contact rules (Data type: float; Default value: 0.0)

xContWidth

yContWidth

xContSpacing

yContSpacing

xMetEnclCont

yMetEnclCont

xDiffEnclCont

yDiffEnclCont

metalEncCont1

metalEncCont2

diffEncCont1

diffEncCont2

Implementation Class Method Tree

Following is the method tree of the vfoGuardRing implementation class:

vfoAdvGuardRing

Slots

The vfoAdvGuardRing class has the following slots:

techFile

The name of the technology files.
Data type: string

vfoGRImpl

The name of the implementation class.
Data type: string

classVersion

The version of the VFO source code.
Data type: integer

formalVersion

This slot is used only for internal processing in the infrastructure.

guardRingType

The device is of N or P type.

This slot is only a placeholder and has no effect on the FGR functionality. Its value is set as "N".

Slots used for pitch support (Data type: float)

verticalPitch

The fluid shape pitch in the vertical direction.

horizontalPitch

The fluid shape pitch in the horizontal direction.

horizontalSegWidth

The fluid shape width of the horizontal segments.

verticalSegWidth

The fluid shape width of the vertical segments.

Methods

The vfoAdvGuardRing class has the following methods:

Implementation Class Method Tree

Following is the method tree of the vfoAdvGuardRing implementation class:

Filling Class

The filling class structure has the following classes:

Contact filling is controlled by the vfoSfFillSafe class.

vfoSfLayerOpClass

Slots

The vfoSfLayerOpClass class has the following slots:

layerop

The description of the derived layer. For example:

'(and ("M1" "drawing") ("M2" "drawing")

pcell

The object.

lpp

The layer-purpose pairs (LPPs).

Method

The vfoSfLayerOpClass class has the following method:

vfoSfDerive ((op vfoSfLayerOpClass) cv tmpLpp)

vfoSfFillingClass

Slots

The vfoSfFillingClass class has the following slots:

cutLpp

The LPP to be used as the contact or via layer.

grid

The grid to which the contact cut corners are restricted to.

cw

The contact width in x and y direction.

cs_x

The minimum x-spacing required between contact cuts.

cs_half_x

The minimum x-spacing required between contact cuts should be half of cs_x or half of cs_x ceiled to grid if it is off-grid.

cs_y

The minimum y-spacing required between contact cuts.

cs_half_y

The minimum y-spacing required between contact cuts should be half of cs_y or half of cs_y ceiled to grid if it is off-grid.

overlap_x

The minimum x-distance from edge of layer (LPP) to the first contact cut.

overlap_y

The minimum y-distance from edge of layer (LPP) to the first contact cut.

fillStyle

The value of the ?gap argument of the rodFillBBoxWithRects SKILL function.

vfoSfFillSafe

Methods

The vfoSfFillSafe class has the following methods:

Enclosure Class

The enclosure class structure has the following classes:

vfoSfEnclosureClass should be used to implement the drawing of enclosure layers.

vfoSfEnclosureClass

Slots

The vfoSfEnclosureClass class has the following slots:

enclosure

The enclosure value.

coverInterior

The enclosure layer should have ‘holes’ or not.

Method

The vfoSfEnclosureClass class has the following method:

Protocol Class

The protocol class structure has the following classes:

The edit operations on an FGR are controlled by protocol classes, vfoAlgClass and vfoAdvAlgClass.The vfoAdvAlgClass is used for pitch support.

vfoAbstractClass

Methods

The vfoAbstractClass class has the following methods to define the abstract interface for the functions that are required for enabling the editing operations in a fluid shape:

Method to Get Shape Data

vfoGetShapeData(obj inst)

Returns the vfoShapeData object, that is, path, rectangle, or polygon.

Methods to Enable or Disable an Edit Command

vfoSupportsChop?(obj inst)

Enables or disables the chop operation.

vfoSupportsMerge?(obj inst)

Enables or disables the merge operation.

vfoSupportsCreateObstruction?(obj inst)

Enables or disables the tunnel operation.

vfoSupportsDeleteObstruction?(obj inst)

Enables or disables the heal operation.

vfoSupportsConvertToPolygon?(obj inst)

Enables or disables the convert to polygon operation.

vfoSupportsAbut?(obj inst)

Enables or disables abutting.

vfoSupportsUpdateModelShape?(obj inst)

Enables or disables shapeData update.

Methods to Write the Function of an Edit Command

vfoChopInstance(obj inst shapeData)

Defines the chop function.

vfoMergeInstances(obj inst1 inst2)

Defines the merge function.

vfoCreateObstruction(obj inst lpp points)

Defines the tunnel function.

vfoDeleteObstruction(obj inst lpp {point | nil | bBox | ptList})

Defines the heal function.

vfoConvertToPolygon(obj inst)

Defines the convert to polygon function.

vfoAbut(obj instlist)

Defines the abut function.

vfoUpdateModelShape(obj inst shape newShapeType newPointList)

Defines the shapeData update function.

vfoAlgClass

Method

vfoAlgClass has the following method, which returns the vfoShapeData object, that is, path, rect, or polygon:

vfoGetShapeData(obj inst)

vfoSfImplClass

vfoSfImplClass can only be extracted from vfoAlgClass.

vfoAdvAlgClass

Methods

The vfoAdvAlgClass class has the following methods:

Method to Get Shape Data

vfoGetShapeData(obj inst)

Returns the vfoShapeData object.

Methods to Enable or Disable an Edit Command

vfoSupportsChop?(obj inst)

Enables or disables the chop operation.

vfoSupportsMerge?(obj inst)

Enables or disables the merge operation.

vfoSupportsCreateObstruction?(obj inst)

Enables or disables the tunnel operation.

vfoSupportsDeleteObstruction?(obj inst)

Enables or disables the heal operation.

vfoSupportsConvertToPolygon?(obj inst)

Enables or disables the convert to polygon operation.

vfoSupportsAbut?(obj inst)

Enables or disables abutting.

vfoSupportsUpdateModelShape?(obj inst)

Enables or disables shapeData update.

Methods to Write the Function of an Edit Command

vfoChopInstance(obj inst shapeData)

Defines the chop function.

vfoMergeInstances(obj inst1 inst2)

Defines the merge function.

vfoCreateObstruction(obj inst lpp points)

Defines the tunnel function.

vfoDeleteObstruction(obj inst lpp {point | nil | bBox | ptList})

Defines the heal function.

vfoConvertToPolygon(obj inst)

Defines the convert to polygon function.

vfoAbut(obj instlist)

Defines the abut function.

vfoUpdateModelShape(obj inst shape newShapeType newPointList)

Defines the shapeData update function.

vfoAdvSfImplClass

vfoAdvAlgClass and vfoAdvSfImplClass are classes for pitch support.

Return to top
 ⠀
X