The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
May 18th, 2024, 9:13am
Pages: 1
Send Topic Print
How can I do this with Spectre? (Read 24618 times)
sutapanaki
Community Member
***
Offline



Posts: 41

How can I do this with Spectre?
Mar 16th, 2004, 6:47pm
 
Hi,

I have to issues with IC5. In the order of priority:

1)Can someone please explain how to PLOT transistor intrinsic
parameters (like gm, gds, Csb,...) using Cadence Spectre - Analog
Artist? I assume that since the tool calculates these things for the
operating point it should also be able to plot them as a function of
time or temperature or something else. For example, if a circuit
exhibits non-linear behavior, it changes operating point and hence the
values of the small signal parameters (gm, gds...)also change as the
circuit functions. I'd like to be able to plot these things. I have
used before Eldo and there it is possible to plot basically everything
you can print, especially the parameters mentioned above. I assume
there should be such a possibility with Analog artist as well.
2) As you have already guessed I'm a bit new to IC5. Actually I use it
on Red Hat 8.0 with 24 bit color scheme. First I tried at work IC 5.0
and what I noticed was that in the waveform viewer the cursors A & B
were not following the mouse movements at all. Then it was upgraded to
IC 5.033 and there the cursors behaved better but still their movement
was kind of slower than the mouse - they didn't track quite well. Is
this a known problem or it is just my setup? Is there anyway to fix
it? I didn't notice such a problem if I use wavescan, but I'm not used
to it. What is the difference between wavescan and the normal waveform
viewer?

Thanks in advance
Back to top
 
 
View Profile   IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: How can I do this with Spectre?
Reply #1 - Mar 16th, 2004, 9:35pm
 
This post looks exactly the same as a question on
comp.cad.cadence a few days ago, which I answered
a couple of days ago. To quote that:

Quote:
For the first point, you can create an include file which has:

save M1:gm

or

save M2:oppoint

or

save M3

(see "spectre -h save")

And then you can do a dc sweep, or a transient, or whatever (no need
to use parametric analysis). Then you can use the results browser to plot
these.

For the A/B cursors, this speed issue was resolved in IC5033 USR1 (I just
checked to make sure it was actually fixed).

Regards,

Andrew.


That post was acknowledged by somebody called
sminchev@yahoo.com (Svilen) - perhaps that wasn't
you but somebody posting on your behalf?
Back to top
 
 
View Profile WWW   IP Logged
sutapanaki
Community Member
***
Offline



Posts: 41

Re: How can I do this with Spectre?
Reply #2 - Mar 17th, 2004, 10:57am
 
No, it was me. I just posted here and there, since I was desperate to find a solution.
Everyone who might be interested in this matter can go to the above news group for a good and helpful answer.
Back to top
 
 
View Profile   IP Logged
Rajarshi Paul
Guest




Re: How can I do this with Spectre?
Reply #3 - Nov 1st, 2004, 9:23am
 
U can use the calculator of the Affirma Circuit Design Env and then select "opt". This allows you to choose the transistor whose gm other parameters you want to know and then you can find the value.
Back to top
 
 
  IP Logged
Marc Murphy
Guest




Re: How can I do this with Spectre?
Reply #4 - Sep 7th, 2005, 9:27am
 
Hi guys, I know how to plot the operating point parameters with HSPICE (LV, LX in Ch4 of the manual), and have tried the instructions posted here.  All I get when I try to plot is a single value.  For instance, I do a DC sweep of Vgs and want to observe how gm changes.  The save command added to my netlist (input.scs) doesn't seem to make any difference. Sad

Are there any other things that may prevent multiple operating point values from being plotted?  If I run a parametric sweep and plot OP("/M0" "vth"), this will work, but its slow and I am under the impression that you can save all the operating points and plot them when a DC sweep is performed.
Back to top
 
 
  IP Logged
Croaker
Senior Member
****
Offline



Posts: 235

Re: How can I do this with Spectre?
Reply #5 - Sep 7th, 2005, 9:52am
 
One other point which might matter is that my MOSFET models actually encapsulate a MOSFET model plus diodes.  If I try to do a component parameter sweep with l (the length), it tells me that 'l' is not a valid parameter.

Anyhow, I suppose you can set the length as a design variable and sweep that.

The real problem is that the tool doesn't seem to save multiple operating points.

Here is the save.scs file I include (via the definition files blank in Analog Artist):
save M3:all M0:all

And the simulator reports this:

Warning from spectre during initial setup.
   `m3' is not a device or subcircuit instance name.
   Ignoring invalid item `m3:all' in save statement.
   `m0' is not a device or subcircuit instance name.
   Ignoring invalid item `m0:all' in save statement.


If it helps, here is the Spectre netlist I am using:

// Generated for: spectre
// Generated on: Sep  7 13:21:22 2005
// Design library name: avlsi
// Design cell name: char_mos
// Design view name: schematic
simulator lang=spectre
global 0
include "models"
include "/export/home/mmurp/cmos90nm/save.scs"
parameters ln=2*0.1

// Library name: avlsi
// Cell name: char_mos
// View name: schematic
M3 (net015 net020 0 0) psvt w=28*0.12 l=2*0.1 nfing=1 mult=1 srcefirst=1 \
       mismatch=1
V4 (0 net020) vsource dc=330.0m type=dc
V5 (0 net015) vsource dc=100.0m type=dc
V1 (net1 0) vsource dc=380.0m type=dc
V0 (net8 0) vsource dc=100.0m type=dc
M0 (net8 net1 0 0) nsvt w=12*0.12 l=ln nfing=1 mult=1 srcefirst=1 \
       mismatch=1
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
   tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
   digits=5 cols=80 pivrel=1e-3 ckptclock=1800 \
   sensfile="../psf/sens.output"
dcOp dc write="spectre.dc" save=all print=yes check=yes maxiters=150 \
   maxsteps=10000 annotate=status
dcOpInfo info what=oppoint where=rawfile
dc dc param=ln start=0.1 stop=2 save=all print=yes check=yes \
   oppoint=rawfile maxiters=150 maxsteps=10000 annotate=status
modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
designParamVals info what=parameters where=rawfile
saveOptions options save=allpub subcktprobelvl=2
Back to top
 
 
View Profile   IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: How can I do this with Spectre?
Reply #6 - Sep 7th, 2005, 4:12pm
 
Marc,

If the model is not an inline subckt, you would need to do:

save M3.Mx:all M0.Mx:all

where Mx is the instance name of the mosfet within the subckt model (the "encapsulated" model that you are talking about). That's why you're getting the warnings... it doesn't know which primitive device you're talking about.

Andrew.
Back to top
 
 
View Profile WWW   IP Logged
Marc Murphy
Guest




Re: How can I do this with Spectre?
Reply #7 - Sep 7th, 2005, 4:38pm
 
Thanks Andrew!  I thought I had tried that but my mind is a tad burnt right now.  I'll check it out again tomorrow.  I've been wondering about the parameter plotting for a little while and usually just turned to HSPICE.  That's not so efficient though!

Cheers,
Marc
Back to top
 
 
  IP Logged
Marc Murphy
Guest




Re: How can I do this with Spectre?
Reply #8 - Sep 7th, 2005, 4:41pm
 
One other question...it seems like a pain to put in save commands for each MOSFET.  I noticed there is a save all option if you go to analog artist's analysis menu->dc->options.  Is this the same thing?  I guess I'll find out soon enough.
Back to top
 
 
  IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: How can I do this with Spectre?
Reply #9 - Sep 7th, 2005, 10:18pm
 
It's not the same thing. What is needed is the ability to use wildcards and hierarchical scoping in the save command - there's an enhancement request for this - hopefully it will get added at some point.

For now you have to do a save for each device. Most of the time you only want to look at gm etc for a small number of devices (during a dc sweep or transient anyway).

Another approach is to use a transient analysis and then use  the infotimes option on the transient to specify times during the transient to do an info analysis to save the operating point. These can then be backannotated to the schematic in the same way as a normal DC operating point.

Regards,

Andrew.
Back to top
 
 
View Profile WWW   IP Logged
Croaker
Senior Member
****
Offline



Posts: 235

Re: How can I do this with Spectre?
Reply #10 - Sep 8th, 2005, 11:24am
 
Hi again, I used M0.m1:all to get to the mosfet, and then to plot, I used the calculator, and enter OP("/M0" "vth") but it still only plots one value as I sweep the transistor length.  So, this isn't good.

BUT, I can go in the results browser, go to the psf stuff, and plot vth for M1 and it looks OK.  

So, for completeness, I'd like to figure out why the first method I described doesn't work if anyone has a clue.

Thanks!!!
Back to top
 
 
View Profile   IP Logged
Andrew Beckett
Senior Fellow
******
Offline

Life, don't talk to
me about Life...

Posts: 1742
Bracknell, UK
Re: How can I do this with Spectre?
Reply #11 - Sep 8th, 2005, 3:02pm
 
Marc,

Why would you expect OP("/M0" "vth") to work when:

a) the results are not under M0, but M0.m1 - how would ADE be expected to know that there's an extra level of hierarchy in the results, and know what the component name is?
b) you're using the OP function (which is for DC operating point results, not for DC sweeps)?

Using the results browser is the correct way to get this. It can also be done with pv("M0.m1" "vth" ?result 'dc )
(I think... I've not tested, and so this is a bit of a guess).

Regards,

Andrew.
Back to top
 
 
View Profile WWW   IP Logged
Croaker
Senior Member
****
Offline



Posts: 235

Re: How can I do this with Spectre?
Reply #12 - Sep 8th, 2005, 3:25pm
 
I see.  I read to use the OP thing somewhere else on the web.  I guess not everything on the Internet is true. Wink

Anyhow, thanks!!! Smiley
Back to top
 
 
View Profile   IP Logged
jbdavid
Community Fellow
*****
Offline



Posts: 378
Silicon Valley
Re: How can I do this with Spectre?
Reply #13 - Oct 17th, 2005, 2:00am
 
if you use the "inline subckt"
to define that model, It would be true again..
(I just did this for several subcircuits my designers use.. )
Jonathan
Back to top
 
 

jbdavid
Mixed Signal Design Verification
View Profile WWW   IP Logged
zubazdo
New Member
*
Offline



Posts: 1

Re: How can I do this with Spectre?
Reply #14 - Jun 1st, 2010, 3:29am
 
Hi,

I am doing transient analysis for different corners altogether 30. I am using multiple infotimes to get operation point of mosfets at different time instants. The thing is that it doesn't print the operation point, instead just gives

OPT("/I0/I73/MN11" "??") = ?

The other strange thing is that it doesn't ask the time of infotimes.

Can anybody help?
Thanks in advance
Back to top
 
 
View Profile   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.