Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Writing DRC/LVS Check rule files

Status
Not open for further replies.

ronaldomponte

Junior Member level 2
Joined
Oct 3, 2012
Messages
21
Helped
2
Reputation
4
Reaction score
2
Trophy points
1,283
Activity points
1,514
Does anyone here have experience in writing LVS check rule file using SVRF from Calibre and can give me some help to find the connectivity error in my LVS code?
I am coding the device definition for a vertical npn BJT device.
As long as someone does candidate to help me I share my code.
Thanks!
 

It may not be a connectivity issue, but device definition issue - that is reported as connectivity issue.
You should share not only the code, but also a relevant layout (device layers), and ideally - the layers (shapes) that Calibre derives for device recognition.
 

OK my dear colleague timof!!
Thank you very much for your reply.
Let's see what we can do debugging this.
Screenshot from 2017-07-20 19-21-57.png
This is my vertical npn bjt device.

Yellow color is SN (shallow n layer)
Red color is SP (shallow p layer)
Thick yellow line is NW (the n-well)
Blue is M1 (metal 1)
Checkered White is CT (contact opening)

So, NW defines the collector diffusion area, then SP defines the base area and the SN (the one inside the SP) is the emitter area.
Notice that the SN path between the two SP areas is the collector contact.
And the outermost SP is just a guard ring.

Ok, with that in mind, let's go to my device definition.

DEVICE Q(NP) base NW(C) base(B) emitt_pin(E)

base = SP INTERACT SN
emitt_pin = SN INTERACT SP

CONNECT M1 emitt_pin BY CT
CONNECT M1 base BY CT

I have read the chapter on device definition in the manual, but I still have a lot of questions.
For instance, the layer base is the seed of the device definition, I don't understand why but that's ok.
I don't know if I need to define the entire area of my base diffusion layer or do I need to make a boolean operation to remove the emitter area, such as:
base = (SP INTERACT SN) NOT emitt_pin ??

Another question is: Is my collector(C) pin the entire collector diffusion region (i.e. NW layer) or just the contact?
If the later case is right, my collector pin definition should be:
coll_pin = (SN NOT INTERACT SP) AND NW

However, this does not work since outputs an error: "Nothing in layout".
I am reallly fucked up with this.
Would you be so kind to give a help?
Thank you very much.
 

Well, you ask too many questions, creating a complete mess, this is is not the way to resolve your problem.

I should tell you upfront that I am in no way an expert in Calibre SVRF, but I do know something, and will try to help you.

First, the shapes and their interaction in device recognition are not arbitrary, and have a purpose.
A "seed" layer should "interact" (i.e. abut or overlap) with each of the terminals (pins), for the device to be recognized.
For example, in a MOSFET, only channel "interacts" with all other terminals, that's why it is used for "seed".

Second, the shapes for seed and terminals will be used not only to recognize the device, but also to calculate some geometrical parameters that will be used as device (SPICE model) instance parameters - such as emitter area, perimeter, etc. etc. - that will eventually determine the I-V curves, p-n junction capacitances, etc.

I think, you should not subtract emitter from base, for base layer definition.
Also, I think, you should use the whole rectangle for the collector, not just its "contact".
I do not understand the meaning of "collector contact" the way you describe it.

You should provide CONNECT statement for each terminal - you do not have it for collector.
You might need to define contacts specific to the terminals, like this:

CT_EM = CT AND EMITT_PIN
CONNECT M1 EMITT_PIN by CT_EM

Otherwise, you can mess up connectivity when you have overlapping terminals.

What is the error that Calibre give you, with your current approach?
 

Dear timof,

Thank you very much for your reply and clarifications.
With the approach you gave me, the error now is that base and emitter are shorted.

CT_EM = CT AND emitt
CONNECT M1 emitt by CT_EM

CT_CL = CT AND coll_pin
CONNECT M1 coll_pin by CT_CL

CT_BS = CT AND base
CONNECT M1 base by CT_BS

emitt = SN INTERACT SP
base = SP INTERACT SN
coll_pin = (SN NOT INTERACT SP) AND NW

DEVICE Q(NP) base NW(C) base(B) emitt(E)

Do you have further suggestions?
Thank you very much.
 

The shorting happens because your emitter contact also becomes a base contact.

You can do something like this:

CT_BS = (CT and base) NOT CT_EM
 

Hi timof,

Thanks again for replying, but the error still persists with your idea.
I also tried to put this definition in the emitter instead, but still the same error.
This is very strange.
What it could be?
 

First of all - is your device recognized, or not?

Device recognition issue and connectivity issue may be two different things.

To do the debugging or a review, we need to see the layout, your rule file (or relevant portion of it), and output from Calibre with errors/warnings.

For example, your collector terminal shape seems to be a rectangular ring, that does not touch the seed layer (base) - the device is malformed.
But if you do not have a proper stipple, and your collector is a solid rectangle - this is a different story then.

Draw a layout of a bipolar transistor, copying your design rule manual example, and verify your rule file on that.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top