The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Aug 15th, 2024, 3:25pm
Pages: 1
Send Topic Print
saving .op points such as gm, cgg etc. (Read 395 times)
smchiu
Junior Member
**
Offline



Posts: 11

saving .op points such as gm, cgg etc.
Dec 14th, 2006, 10:36pm
 
Hi Andrew,

I have come across your solution to this problem in Google group before. Basically I want to observe the Id/W vs. gm/Id. I know that by default Cadence only save its operating point once for dc analysis, and your previous solution suggests using, say, savedata.scs file and in it type: save M0:gm for example.

I have tried it and stuggled for many weeks, but the following error still occur (Interestingly, I find no problem using OP("/M0" "gm") etc, or even just using parametric analys (but it takes a long time, and is inconvenient):

"
Warning from spectre during initial set up.
'M0': Does not have a terminal named 'gm'.
Ignoring invalid item 'M0:gm' in save statement
"

Here's how my input.scs file looks like, please help....:

// Generated for: spectre
// Generated on: Dec 14 22:14:45 2006
// Design library name: 90nm
// Design cell name: findgmId
// Design view name: schematic
simulator lang=spectre
global 0 vdd!
include "~/course/eece588/project/90nm/savedata.scs"
include "models"
parameters vdsn=0 vdsp=0 vgsn=0.7 vgsp=0.7 w_pmos=10 w_nmos=10 \
   vgs=0.3627254509018039 vin=0 len=0.1

// Library name: 90nm
// Cell name: findgmId
// View name: schematic
M7 (net030 0 net052 vdd!) plvt w=43.6 l=0.1 nfing=1 mult=1 srcefirst=1 \
       mismatch=1
M4 (net12 net045 vdd! vdd!) plvt w=w_nmos l=len nfing=1 mult=1 srcefirst=1 \
       mismatch=1
M5 (net039 net047 vdd! vdd!) plvt w=43.6 l=0.1 nfing=1 mult=1 srcefirst=1 \
       mismatch=1
M6 (net030 vdd! net052 0) nlvt w=21.82 l=0.1 nfing=1 mult=1 srcefirst=1 \
       mismatch=1
M0 (net040 net044 0 0) nlvt w=w_nmos l=len nfing=1 mult=1 srcefirst=1 \
       mismatch=1
M1 (net042 net050 net046 0) nlvt w=21.82 l=0.1 nfing=1 mult=1 srcefirst=1 \
       mismatch=1
V11 (net030 0) vsource dc=vin-0.001*vin type=dc
V10 (net052 0) vsource dc=vin type=dc
V7 (net042 0) vsource dc=1.000m type=dc
V4 (vdd! net047) vsource dc=vgs type=dc
V6 (net045 net12) vsource dc=0 type=dc
V8 (vdd! net039) vsource dc=1m type=dc
V9 (net046 0) vsource dc=vin type=dc
V3 (net050 0) vsource dc=1 type=dc
V5 (net044 net040) vsource dc=0 type=dc
V0 (net044 0) vsource dc=vgs type=dc
V1 (vdd! net045) vsource dc=vgs type=dc
V2 (vdd! 0) vsource dc=1 type=dc
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" checklimitdest=psf
dcOp dc write="spectre.dc" maxiters=150 maxsteps=10000 annotate=status
dcOpInfo info what=oppoint where=rawfile

Looking forward to your reply.
Thank you.
David.
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: saving .op points such as gm, cgg etc.
Reply #1 - Dec 15th, 2006, 4:14am
 
I think if you
 save M0:all
then you get all the operating-point info.  More than you need, but should get what you want.
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
smchiu
Junior Member
**
Offline



Posts: 11

Re: saving .op points such as gm, cgg etc.
Reply #2 - Dec 15th, 2006, 10:29am
 
Hello,

Thanks for your reply. I did try that before and get the following message:

"Warning from spectre during initial setup.
subcktInst: ID disallowed temporarily (till?).
Ignoring invalid item 'M0:all' in save statement."

Any thought how to sort that out? I have been struggling with this for a long while yet not able to figure out the solution to that regardless of the fact of the solutions people posted. <sigh> If anyone could lend me a hand, that will be highly appreciated!!!!!! Grin Grin

David.
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: saving .op points such as gm, cgg etc.
Reply #3 - Dec 18th, 2006, 6:41am
 
Is M0 an instance of  a subckt?  In that case, you need to know the name of the device inside, I think, such as <M0>M.
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
Ken Kundert
Global Moderator
*****
Offline



Posts: 2386
Silicon Valley
Re: saving .op points such as gm, cgg etc.
Reply #4 - Dec 18th, 2006, 11:53am
 
Or you can make the subcircuit an inline subcircuit, in which case you would get the operating point information for the inlined component.

-Ken
Back to top
 
 
View Profile WWW   IP Logged
smchiu
Junior Member
**
Offline



Posts: 11

Re: saving .op points such as gm, cgg etc.
Reply #5 - Dec 18th, 2006, 12:05pm
 
Hello everyone,
I am grateful for all your replies! I tried to use ocean interactively and requested the results output. I discovered that you are totally correct. Now, in the savedata.scs, I use this:

save M0.m1.gm

It seems that for some reasons, I have to include m1 after M0, don't know the reason why though.

Ken, could you illustrate a little bit more how to include the circuit inline? The transistor model is taken from the 90nm process and I don't know how to do that.

Thank you so much. Merry Christmas guys! You are so helpful.
David.
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: saving .op points such as gm, cgg etc.
Reply #6 - Dec 18th, 2006, 12:27pm
 
Ken Kundert wrote on Dec 18th, 2006, 11:53am:
Or you can make the subcircuit an inline subcircuit, in which case you would get the operating point information for the inlined component.


The subcircuit definition is probably in the library file, which I think would mean the user can't modify it.  Don't you need to specify the "inline" as part of the definition?  Or can you force spectre to treat it as inline even though it's defined otherwise?

David -
In your netlist, you have something like:
M0 (d g s b) nmos w=1u l=1u

Now, usually, one would then find in the library file the corresponding definition:
model nmos bsim3v3 version=3.24 vth=0.7 ...

Instead, in your case, the "nmos" is defined as a subckt, which might look like this:
subckt nmos (d g s b) w=10u l=10u
 rd d di 0.5
 rs s si 0.5
 m1 (di g si b) nmos_mod w=$w l=$l
ends

and then "nmod_mod" is defined with a "model card" to be a bsim3v3 device.  The subckt "nmos" doesn't have a "gm" -- it's the mos device inside the subckt that has the operating point info.
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
smchiu
Junior Member
**
Offline



Posts: 11

Re: saving .op points such as gm, cgg etc.
Reply #7 - Dec 18th, 2006, 1:54pm
 
Hello Geoffrey,

Thanks a lot for your answer. I completely understand now!

Thanks.
David.
Back to top
 
 
View Profile   IP Logged
Ken Kundert
Global Moderator
*****
Offline



Posts: 2386
Silicon Valley
Re: saving .op points such as gm, cgg etc.
Reply #8 - Dec 18th, 2006, 10:17pm
 
As Geoffrey says, to make a subcircuit inline, you have to modify the definition of the subcircuit rather than the instantiation, which is generally not an option for the user if the subcircuit is defined in a library that is not user modifiable (in this case the inlining is generally done by the author of the library).

To show how to do it I will modify Geoffrey's example. The subcircuit definition becomes
Quote:
inline subckt nmos (d g s b) w=10u l=10u
     rd d di 0.5
     rs s si 0.5
     nmos (di g si b) nmos_mod w=w l=l
ends
where the modifications are highlighted in bold. (unless things have changed recently, Geoffrey's dollar signs on w and l should not be used).

Now if you instantiate a MOS with
Quote:
M0 (d g s b) nmos w=1u l=1u

You can use
Quote:
save M0.gm

to save the gm of M0.nmos. The inlining causes any request that cannot be serviced by the subcircuit to be passed to the inline device, in this case nmos. It is the inline device because it has the same name as the inline subcircuit name.

-Ken
Back to top
 
 
View Profile WWW   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.