Product Documentation
Virtuoso Layout Suite SKILL Reference
Product Version IC23.1, November 2023

spdCalcOdSpacingWithPoly

spdCalcOdSpacingWithPoly(
d_lhsInst
d_rhsInst
n_minOd
n_minPoly
)
=> n_odSpacing

Description

Calculates the required oxide diffusion spacing between two adjacent instances based on minimum oxide diffusion spacing and polysilicon spacing constraints.

This function can be used to write a user function that is called when the value of SPD Options - Generation - X: OD drop box is set to UserFunction. This user callback specifies the required oxide diffusion spacing between two unabutted instances.

Arguments

d_lhsInst

Database ID of the left-hand instance.

d_rhsInst

Database ID of the right-hand instance.

n_minOd

The minimum spacing for the oxide diffusion layer.

n_minPoly

The minimum spacing for the polysilicon layer.

Value Returned

n_odSpacing

The required oxygen diffusion spacing between the left-hand and right-hand instances.

Example

Using user-defined dummy poly spacing callback function:

procedure(MyOdSpcProc(lInst rInst)
  let((odSpcWithPoly minOd minPoly)
    minOd = 0.038 ; minimum oxide diffusion spacing constraint
    minPoly = 0.068 ; minimum poly spacing constraint
    odSpcWithPoly = spdCalcOdSpacingWithPoly(lInst rInst minOd minPoly)
    info("spdCalcOdSpacingWithPoly: lInst %s rInst %s => %f\n" lInst~>name rInst~>name odSpcWithPoly)
    odSpcWithPoly
  )
)

To activate the user callback:

  1. In the SPD Editing window, open the SPD Options form.
  2. On the Generation option pane, select UserFunction from the X: OD drop-down list.
  3. Enter MyOdSpcProc in the X: OD field and click Apply.
  4. Click Preview Layout or Generate Layout.

The following message is displayed in CIW:

spdCalcOdSpacingWithPoly: lInst I8 rInst I9 => 0.360000 

The generated layout is as below:

In the figure, the left-hand instance is I8 and the right-hand instance is I9. These are devices with dummy poly.

In this example, the user callback MyOdSpcProc() is performed on instances I8 and I9 to calculate the minimum required oxide diffusion spacing between them.

Although the minimum oxide diffusion spacing constraint is 0.038, the oxide diffusion spacing between I8 and I9 cannot be 0.038. This is because additional spacing is required for the minimum poly spacing constraint, which is 0.068.

You can use function spdCalcOdSpacingWithPoly()to calculate the required oxide diffusion spacing that can satisfy both the minimum oxide diffusion and the minimum polysilicon spacing constraints.

In this case, spdCalcOdSpacingWithPoly() considers the two instances I8 and I9, minimum oxide diffusion spacing 0.038, and minimum polysilicon spacing 0.068 as arguments. It returns 0.36 which is the required oxide spacing between I8 and I9 to satisfy both spacing constraints. By setting the oxide diffusion spacing of I8 and I9 by 0.36, both the minimum polysilicon spacing constraint 0.068 and the minimum oxide diffusion constraint 0.038 are satisfied.

Related Topics

SPD Generation Options


Return to top
 ⠀
X