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.

diode model for Cadence

Status
Not open for further replies.

bio_man

Full Member level 2
Joined
Mar 30, 2010
Messages
144
Helped
2
Reputation
4
Reaction score
4
Trophy points
1,298
Activity points
2,698
Hi,

I am using C5 technology and using NCSU freePDK (https://www.eda.ncsu.edu/wiki/NCSU_EDA_Wiki), they have provided models for transistors only but not diodes! So, when I run ADE for the attached simple circuit, the simulation fails, obviously because there is no model for the diode. So, can be of any help to solve this problem?
 

Attachments

  • diode_model.png
    diode_model.png
    139.4 KB · Views: 1,040
  • diode_model_error.png
    diode_model_error.png
    90.9 KB · Views: 610

Use "ahdlLib/diode_simple" or "ahdlLib/diode_sch".

I believe they are not available in our libraries. I mean the ahdlLib. Can I just make a simple diode model and include it in ADE? if yes, where can I get the model?
 

I believe they are not available in our libraries.
I mean the ahdlLib.
As far as you use Cadence Virtuoso, "ahdlLib" is absolutely available.
Simply you don't include "ahdlLib" in your "cds.lib".

Can I just make a simple diode model and include it in ADE?
if yes, where can I get the model?
Yes.
Every parameter have default value.
So create model which has only model name.
Code:
model fake_diode diode level=1
See "spectre -h diode".
 
As far as you use Cadence Virtuoso, "ahdlLib" is absolutely available.
Simply you don't include "ahdlLib" in your "cds.lib".

Any hint how can I find it? I really looked at each possible file I have but found nothing for ahdlLib?

Yes.
Every parameter have default value.
So create model which has only model name.
Code:
model fake_diode diode level=1
See "spectre -h diode".[/QUOTE]

thanks, ADE works now. However, I am still unsure if this is will be ok for tapeout because it is just a simple model. what do you think?

basically, the problems of these diodes arises when I placed the IO pads where I have some diodes implemented for ESD. but then, ADE did not run due to the unavailability of diode models and that's why I make this post.

[COLOR="silver"][SIZE=1]- - - Updated - - -[/SIZE][/COLOR]

Also, btw, what is the difference between *.m and *.scs files? Previously, I thought the model files are only *.scs but I found my library many files with *.m with model details. For example, for the fake_diode you suggested, I used diode.m and attach it to ADE model lib.
 

*.m files are old cdsSpice support, you can get Spectre to
digest them with 'simulator lang=SPICE' headers. Provided
that the .m file includes only a .model statement, anyway.
There used to be a lot of power in the USEM statement
in terms of argument passing and element instantiation was
often done alongside model-per-device declaration that
supported the Monte Carlo / mismatch analysis "back in the
day". Spectre licks b@llz in this regard and may not be able
to follow more complex (though simple appearing) .m files.
 

Any hint how can I find it?
I really looked at each possible file I have but found nothing for ahdlLib?
Code:
DEFINE analogLib $CDS_ROOT/tools/dfII/etc/cdslib/artist/analogLib
DEFINE basic $CDS_ROOT/tools/dfII/etc/cdslib/basic
DEFINE ahdlLib $CDS_ROOT/tools/dfII/samples/artist/ahdlLib
DEFINE bmslib $CDS_ROOT/tools/dfII/samples/artist/bmslib
DEFINE pllLib $CDS_ROOT/tools/dfII/samples/artist/pllLib
DEFINE pllMMLib $CDS_ROOT/tools/dfII/samples/artist/pllMMLib
DEFINE rfLib $CDS_ROOT/tools/dfII/samples/artist/rfLib
DEFINE rfExamples $CDS_ROOT/tools/dfII/samples/artist/rfExamples

However, I am still unsure if this is will be ok for tapeout because it is just a simple model.
Can you understand "Design Kit" surely ?
Can you understand "Simulation Model" correctly ?

Learn very basic things surely.

There is no physical device for it.

basically, the problems of these diodes arises when I placed the IO pads where I have some diodes implemented for ESD.
but then, ADE did not run due to the unavailability of diode models and that's why I make this post.
Simply, your design kit don't provide any diode.

You have no option except for using MOS-Diode.

For example, for the fake_diode you suggested, I used diode.m and attach it to ADE model lib.
It is not appropriate.
It has to be "diode.scs".
Spectre treat "*.scs" as Spectre Syntax Netlist.
Others such as "*.txt", "*.spi", "*.sp", "*.lib", "*.m", etc. are all treated as SPICE Syntax Netlist, unless "simulator lang=spectre" is included in head of them.

I wrote "fake_diode" as Spectre Syntax Netlist without "simulator lang=spectre".
So you have to name it as "*.scs".
 

Attachments

  • 171009-135213.png
    171009-135213.png
    29.6 KB · Views: 361
Last edited:

The answer is simple : If there is no diode and its model in your PDK, you cannot use any diode externally.
Because PDK has its own components and of course its own layout cells so you cannot use anything which doesn't exist.
You may use BJT transistor being as a diode if there is..
 
It's surprising that there is no diode at all in C5. I see
a few in my Silvaco C5 PDK - nppwd, nwpsubd, ppnwd,
schd - so maybe you are just not seeing the naming
convention (trailing "d". not leading).

You use PDK diodes for what's on chip, and analogLib
diode model w/ a callout to a private .scs model, for
an off-chip component.
 
It's surprising that there is no diode at all in C5. I see
a few in my Silvaco C5 PDK - nppwd, nwpsubd, ppnwd,
schd - so maybe you are just not seeing the naming
convention (trailing "d". not leading).

You use PDK diodes for what's on chip, and analogLib
diode model w/ a callout to a private .scs model, for
an off-chip component.

I am surprised too, even the ones you mentioned are not there! Are these diodes available in NCSU_Analog_Libarary ? what is the main difference between NCSU_Analog_Libarary and analogLib?

these diodes are used in Pad2 (attached) for ESD, when run LVS it matches! but ADE fails as posted earlier. I run ADE to do Post-Layout simulation. I could use the Pad1, with no protection but this is something you don't recommend in other post in the forum.
 

Attachments

  • Pad2_diode.png
    Pad2_diode.png
    61.9 KB · Views: 92

what is the main difference between NCSU_Analog_Libarary and analogLib?
Learn very basic things surely.
Can you understand "Design Kit" surely ?

"analogLib" has only symbol and analysis view.
It has no layout view.

these diodes are used in Pad2 (attached) for ESD, when run LVS it matches!
Simply LVS rule maps layout to diode.
However there is no simulation model for it.
This is not surprising thing at all.
Antenna diode has no simulation model in many cases.

but ADE fails as posted earlier.
Use correct terminology.
ADE does not fail.

Can you understand ADE ?
 
Last edited:

Code:
DEFINE analogLib $CDS_ROOT/tools/dfII/etc/cdslib/artist/analogLib
DEFINE basic $CDS_ROOT/tools/dfII/etc/cdslib/basic
DEFINE ahdlLib $CDS_ROOT/tools/dfII/samples/artist/ahdlLib
DEFINE bmslib $CDS_ROOT/tools/dfII/samples/artist/bmslib
DEFINE pllLib $CDS_ROOT/tools/dfII/samples/artist/pllLib
DEFINE pllMMLib $CDS_ROOT/tools/dfII/samples/artist/pllMMLib
DEFINE rfLib $CDS_ROOT/tools/dfII/samples/artist/rfLib
DEFINE rfExamples $CDS_ROOT/tools/dfII/samples/artist/rfExamples

where I can run this code?

Can you understand "Design Kit" surely ?
Can you understand "Simulation Model" correctly ?
Learn very basic things surely.

There is no physical device for it.

Simply, your design kit don't provide any diode.

You have no option except for using MOS-Diode.

I am still learning, so please bear with me.

but in this case (using MOS-diode), LVS will fail. because the diode layout is done as PN junction not a MOS configured diode.

It is not appropriate.
It has to be "diode.scs".
Spectre treat "*.scs" as Spectre Syntax Netlist.
Others such as "*.txt", "*.spi", "*.sp", "*.lib", "*.m", etc. are all treated as SPICE Syntax Netlist, unless "simulator lang=spectre" is included in head of them.

I wrote "fake_diode" as Spectre Syntax Netlist without "simulator lang=spectre".
So you have to name it as "*.scs".

the diode.m makes ADE run, I even did not include the "simulator lang=spectre"

Cadence is really an ocean :) , thanks all for your help and all of your comments are highly appreciated

- - - Updated - - -

Learn very basic things surely.
Can you understand "Design Kit" surely ?

"analogLib" has only symbol and analysis view.
It has no layout view.

I know that analogLib has no layout view, and that is why I use the NCSU_Analog_Parts for getting the symbols/models to run ADE before making the layout
 

where I can run this code?
Can you understand Cadence dfII surely ?
Add them to your "cds.lib".
I mean location of "ahdlLib" is near "analogLib".

In your case, probably $CDS_ROOT is "/opt/soft/Cadence/SPB166".

but in this case (using MOS-diode), LVS will fail. because the diode layout is done as PN junction not a MOS configured diode.
You have to create your own layout using MOS-Diode.

the diode.m makes ADE run, I even did not include the "simulator lang=spectre"
This is because Cadence Spectre can understand fairly vague syntax.

For example, Header of comment line of Spectre is "//".
However Spectre permits "*".

Again, don't use "*.m" for Spectre Syntax Netlist.
 
analogLib is a symbol library provided by Cadence
and consists of primitives that map to basic Spectre
/ SPICE elements (D, R, C, V, ...).

The NCSU analog library is some third party library,
I do not know contents. Might be duplicative or have
some overlap, might be higher-level cells (like op amp,
vref, analog switch, ...). The problem of diode symbol
connecting to diode model involves things besides the
analog element library, for actives (and some passives)
analogLib symbold have a property field for the model
(relative path, or absolute - relative requires that the
front part of the path has been declared somewhere
in the initialization chain, which is itself obscure). The
issues are that "diode" from analogLib will not match
(say) ppnwd for LVS, and realism for "diode" simulation
would need both the ppnwd model and the proper mapping
of diode/symbol parameters to model parameters (which
is a poor bet as geometry like l and w do not at all
correspond to diode model's simple area= param, and
the parasitic r and c figuring will either fail or be whack.

I suggest going to the head of the C5 pdk and do a
filesystem search for those diode root names (case
insensitive) and see where they turn up - should be
symbols and some model file (Spectre or cdsSpice)
containing model declarations for all of them. Then
once found (or, acquired from ON or MOSIS or
whoever) you will be able to connect the dots by
model path declaration.
 
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top