virtuoso XL: how to do substrate and well contacts

D

DReynolds

Guest
I am working with baseband circuits (non RF) and the substrate and
well contacts are not built into the pcells for the nmos and pmos
devices so I am wondering how to handle the sub contacts. The
library does contain symbolic contacts like M1_SUB, but can vxl
understand them since they have no schematic symbol?

I have tried creting the sub contacts in skill and it all works, but
vxl does not include my sub contact in the flylines for gnd. What am
I missing to get vxl to use the sub contact I have made?

here is a snippet from the code to make the contact:

masterCV =dbOpenCellViewByType(libName type "symbolic" "" "r" )
inst = dbCreateParamInst(cv masterCV nil xy "MX" 1
list(list("column" "int" conumber)))
term =dbCreateInstTerm(net inst car(inst~>master~>terminals))

At this point, the instance exists and appears to be connected to the
net, but vxl ignores it.... what have I missed?


thanks in advance

David Reynolds
 
The simplest way to do is drop a metal rectangular with an attached net
"gnd" on top of your subtrate contact instance by using rodCreateRect. I
modifies your code as follow:

masterCV =dbOpenCellViewByType(libName type "symbolic" "" "r" )
inst = dbCreateParamInst(cv masterCV nil xy "MX" 1
list(list("column" "int" conumber)))
rodCreateRect(
?cvId Working_CellView
?layer list(METAL_LAYER "drawing")
?width METAL_WIDTH
?length METAL_LENGTH
?origin METAL_ORIGIN
?netName "gnd"
?termIOType "inputOutput"
?pin t
?pinAccessDir list("left" "right" "bottom" "top")
)

You need to figure out the width, length, and origin of the metal.

Hope it helps,

Michael
 
This is mostly due to the "substrate problem"

The voltage of the negative (usually) supply and the substrate have the same
potential in the DC sense.

But in the full impedance world, the substrate usually is somewhat loosely
connected.

The substrate creates a ground plane that is not designed to carry any
significant current.

Most simulators and extraction/netlisting/wiring tools have a problem
dealing with a distributed ground plane.

(due to the profusion of nets and not the concept.

The tools do not deal well with "connection convenience cells"

They can be created to ignore or required them, but that is PDK/Kit
specific.

Gerry Vandevalk of ictooling.com

"DReynolds" <david.reynolds@ieee-dot-org.no-spam.invalid> wrote in message
news:L4OdnR53tLPp6kPfRVn_vQ@giganews.com...
I am working with baseband circuits (non RF) and the substrate and
well contacts are not built into the pcells for the nmos and pmos
devices so I am wondering how to handle the sub contacts. The
library does contain symbolic contacts like M1_SUB, but can vxl
understand them since they have no schematic symbol?

I have tried creting the sub contacts in skill and it all works, but
vxl does not include my sub contact in the flylines for gnd. What am
I missing to get vxl to use the sub contact I have made?

here is a snippet from the code to make the contact:

masterCV =dbOpenCellViewByType(libName type "symbolic" "" "r" )
inst = dbCreateParamInst(cv masterCV nil xy "MX" 1
list(list("column" "int" conumber)))
term =dbCreateInstTerm(net inst car(inst~>master~>terminals))

At this point, the instance exists and appears to be connected to the
net, but vxl ignores it.... what have I missed?


thanks in advance

David Reynolds
 
Gerry, I understand that substrate and well can can be tricky because
of their more distributed nature, my question is really about how to
make virtuoso xl handle it correctly. Right now it will let me
connect a substrate tap to any node including vdd when it can only
really be tied to gnd.


David
 
I think you want xl to know about connection convenience devices.

I am not sure how to do this in xl without some significant changes to the
PDK.

I have however proposed a method to do this, with PDK changes. (Not what
most users want to do)

Back at my last job, we did at one point own the entire integrated flow (
i.e. I was part of Process Design,
PDK authoring, Electrical Spec generation, PDK creation, and was a user that
designed into this process!)
In this context, we set it up that Substrate connections were required
devices.
( See Cadence User Group paper "Substrate Aware Verification" for details on
this substrate device.)

To make this usable required some user training, and careful writing of the
extraction, LVS and CDF code to handle
the issue without requiring much effort on the schematic and layout entry
parts of the flow.

Use of the "permute-parallel" capability was key in allowing importation of
non substrate aware designs into this flow.

Once this flow was in place, substrate contacts are treated just like any
other device.
(one key to driving this into xl is the non-constrained nature that we coded
into the size checking!)

-- Gerry Vandevalk



"DReynolds" <david.reynolds@ieee-dot-org.no-spam.invalid> wrote in message
news:QICdnWglJ5l2TXvfRVn_vA@giganews.com...
Gerry, I understand that substrate and well can can be tricky because
of their more distributed nature, my question is really about how to
make virtuoso xl handle it correctly. Right now it will let me
connect a substrate tap to any node including vdd when it can only
really be tied to gnd.


David
 

Welcome to EDABoard.com

Sponsor

Back
Top