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.

How to do this in IC5?

Status
Not open for further replies.

sutapanaki

Advanced Member level 4
Joined
Nov 2, 2001
Messages
1,346
Helped
523
Reputation
1,048
Reaction score
486
Trophy points
1,363
Location
US
Activity points
11,152
abstol vabstol relation

Can someone please explain how to plot transistor intrinsic parameters (like gm, gds, Csb,...) using Cadence Spectre? 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.
 

gmin_check cadence

Hi Sutapanaki,

there are some equations model to calculate those value, right.
 

gmin_check

You can read the detail how to calculate it from the Spectre Doc. Usually, the parasitic paramenter can read from the electrical spec of the process.
 

oceanref.pdf

Guys, I think you missed the point of my question. Yes, there are formulas to calculate this parameters, but they are in no way exact, especially for short channel devices. You can also find the parasitics from the technology, but gm for example is not a parasitic, neither is gds. More to this, if you have a circuit that works in a non-linear way, sometimes you'd like to know those things and as you are aware those parameters depend on the operating point.
There got to be a way to plot parameters like this as a function of other parameters even a function of time. I have been using Eldo and there you can basically plot everything that you can print. And you can certainly print gm ro, different terminal capacitances, etc.
So, if someone really knows how to do this with Spectre in IC5, please let me know. Thanks
 

spectre dc annotate

plot of gm can be got by running a small signal analysis and plotting
id/vgs (both id & vgs are small signals) using calculator function of IC5.

srik
 

sweep ic5

Srik,

If you run an ac analysis you get just one value for gm. To be able to plot it, one needs to run a bunch of such analysis and take the gm values from all of them, but this is too clumsy. You can plot d(id)/d(vgs) in a dc sweep for example and perhaps it will do the job, but I was hoping of a more direct way.
 

oppoint .scs

yes, to plot gm (and others) as a function of input voltage, some parametric analysis is needed.
I guess it does not happen at the click of a button :(
 

input.scs sensfile

Not every feature which is built into Spectre is controllable via AnalogArtist!

so to save model internal parameters depending on e.g. DC analysis

type "spectre -h save"


For example,
save 7 out OpAmp1.comp M1:currents D3:eek:ppoint L1:1 R4:pwr
which tells that node `7', node `out', node `comp' in subcircuit `OpAmp1', the currents through the terminals of `M1', the oppoint
information for diode D3, the current through the first terminal of `L1', and the instantaneous power dissipated by R4 should be saved. These
outputs are saved in addition to any outputs specified with the `save' parameter on the analysis.

If a component name is followed by a colon and `oppoint', then the operating point information associated with the component is computed and
saved. If the colon is followed by an operating point parameter name (see each component for list of operating point parameters), then the
value of that parameter is output.


for bsim3v3 these is what you can use

implemented in AA or ADE how you want to call it is only "pwr" and some currents

If you type "spectre -h bsim3v3" you can see that there are more parameter avaible to save
 

ocean script mp

hi,

i think if you can use SKILL to run a set of simulations and store the output parameter (e.g. cgs) you want in a list. the necsessary commands are described in oceanref.pdf or in the cdsdoc --> OCEAN Reference. after this you can plot the data your result list.
if this is want you want and you have some question (sample code or so), send me a pm.

greetings,
hqqh
 

rfsystem, what you have written is what the help of spectre says about the save option. Do you know, or can you share some of the specifics? How to use this save thing in the actual simulation and then how to view the results? Saving for example gm, doesn't yet mean being able to plot it. If you know how to do it, please let me know.
to hqqh: may be what you suggest will work, but I don't have any idea how to use this ocean script. I was hoping for a more straight forwar approach.
 

for vgs/id,

1- Put a nfet transistor on the composer schematic
2- connect a vdc source from analogLib to the gate.
3- connected a vdc source from analogLib to the drain.
4- Ground the source of the transistor and finish other connections.
5- Make the 'dc' variable in both sources, eg. call them VGS and VDS
6- Choose Analyses, and then select DC, -> Component Parameter.
7- Choose the source connected to the gate.
8- Sweep from 0 to the supply voltage. (keep vds at the supply voltage)
9- click on the 'VDS' source's terminal to measure Ids.
10- Run a DC simulation and get id/vgs.
11- Change transistor sizes until the cows come home.
12- Start Calculator, and choose the waveform just plotted.
13- Choose special functions -> deriv (assuming you are using reverse polish notation with your calculator) and click PLOT
14- This gives you the gm of the transistor

Note that this does not solve the original problem. What if you want to plot a parameter that cannot be easily accessed/ simulated? still working, will get back to you guys.
 
I finally managed to find a solution with a bit of extra help. The approach is based on what rfsystem wrote before. If you create a file in which you put the following for example:

save M1:gm

and then include this file into the simulation, it'll do the trick. Important point though is to give this file an extension .scs; or put as a first line in it:

simulator lang=spectre

If you don't do that the file will not be recognized as a spectre syntax.
So, you include it, run the simulation, when it's done you open the results browser and from there select the appropriate transistor. Click with the right button on gm and it is plotted in the waveform viewer. That's it.
If you click on it with the left button, the gm expression is entered in the calculator and you can do different processing on it and then plot it. I think it's pretty handy.
You can plot different parameters for the transistor. Have a look at spectre help: spectre -h save and spectre -h bsim3v3.

One thing I was not able to figure out so far is the following: when you enter the plot information for gm in the calculator, the whole thing is quite messy - it includes in itself also the absolute path where the file with this data is stored. Does anyone know how to rename this or in other words how to create aliases in the calculator?
 
You can now read the Calculator's help for the 'mp' button. It requires that you have just finished a simulation, You can enter 'model parameters' this way from the result's browser.

This solves the original problem you posted. Thanks to all who participated.
 

Actually it doesn't solve the problem. With the mp button you can select the model parameters of transistors - anything from that huge list of say BSIM3v3 parameters. And if you do this you get a number, which you can print as a straight line in the waveform viewer. I don't think this is very useful.
 

Hi Sutapanaki,

the issue with the long path expressions could not be avoided. The short expression coming from the AnalogArtist context are limited to what the building believe is useable for analog designers. If they supply the skill source some user extension would be possible.

Some japanese companies use spectre without artist!
 

It solves the problem only when you run a parametric analysis. otherwise it would be a straight line. Try reading and taking an appropriate course in IC design. The forum is useful only if you can use the advice intelligently. Babysitting is usually not provided to an IC designer.
 

Dear uncle_urfi,

I truly hope that you understand completely this is not a question of babysitting, but rather one of finding the most straight-forward and universal approach to solving a problem. I believe that what you proposed does not answer those requirements. I am happy with the solution I found and it suites me fine since it doesn't impose the extra requirement of a parametric analyses. Also, I was interested in physically meaningful parameters and not in the BSIM3 parameters, which are most of them are used for curve fitting. Actually, the solution I described was proposed by a Cadence guy and most importantly - it works.
Well, if you can't grasp the difference between your approach and the one I described, then may be you are the one that should seriously consider taking an IC course (or may be two of them).
 

uncle_urfi said:
It solves the problem only when you run a parametric analysis. otherwise it would be a straight line. Try reading and taking an appropriate course in IC design. The forum is useful only if you can use the advice intelligently. Babysitting is usually not provided to an IC designer.

Please uncle_urfi, I think the point of this forum is to share knowledge. For one, I am a relative newbie to IC design. I do enjoy reading everyones comments and always glean some useful information. "Taking an appropriate course in IC design" may not be an option for some of us. So, we have to piece together the bits of knowledge we glean, ask questions and make mistakes. There are always going to be some comments or questions that do not fit a particular thread.
Not all of us are as intellegent as you are and, as such, questions or comments may not always meet your intellectual standards.
 

I tried like sutapanaki said but I get some error

I am attaching my netlist below
// Generated for: spectre
// Generated on: May 24 14:36:18 2004
// Design library name: 900
// Design cell name: testmos
// Design view name: schematic
simulator lang=spectre
global 0
parameters vsweep=1 Vgs=1
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/sm093001-1h-bin.scs" section=typical
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/sm093001-1h-bin.scs" section=resistor
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/sm093001-1h-bin.scs" section=bjt
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/sm093001-1h-bin.scs" section=diode
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/sm093001-1h-bin.scs" section=capacitor
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/sm093001-1h-bin-mvt.scs" section=typical
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/npn.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/dnwpw_tn.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/dnwps_tn.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/ind.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/ind_TM.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/mim_rf_spectre.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/rph_spec_jc.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/rpl_spec_jc.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/pn_Var.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/Mos_var.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/rfmos.scs"
include "/net/wildar/software2/local/library/CSM/CSM018/csm18rf/../models/rfmos_TK.scs"

// Library name: 900
// Cell name: testmos
// View name: schematic
V1 (net5 0) vsource dc=vsweep type=sine
V0 (net1 0) vsource dc=Vgs type=sine
NM1 (net5 net1 0 0) rf_n6f0_18l5_0w m=1
include "/home/ramani/simulation/testmos/spectre/schematic/netlist/stimuli/1.scs"
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" maxiters=150 maxsteps=10000 annotate=status
dcOpInfo info what=oppoint where=rawfile
dc dc param=Vgs start=0 stop=1800m lin=1000 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
saveOptions options save=allpub



the following is the output given by spectre after running simulation:
Environment variable:
SPECTRE_DEFAULTS= -D
Command line:
spectre -env artist4.4.6 +log ../psf/spectre.out +inter=mpsc \
+mpssession=spectre4_1132 -format psfbin -raw ../psf \
-I/home/ramani/ input.scs
spectre pid = 1598

Loading /net/icd2ws22/usr3/cds/IC446/tools.sun4v/spectre/lib/cmi/1.0/libnortel.so
...
Loading /net/icd2ws22/usr3/cds/IC446/tools.sun4v/spectre/lib/cmi/1.0/libphilips.so
...
Loading /net/icd2ws22/usr3/cds/IC446/tools.sun4v/spectre/lib/cmi/1.0/libsiemens.so
...
Loading /net/icd2ws22/usr3/cds/IC446/tools.sun4v/spectre/lib/cmi/1.0/libstmodels.so
...
spectre (ver. 4.4.6.061301 -- 13 Jun 2001).

Simulating `input.scs' on cicsws21 at 2:42:36 PM, Mon May 24, 2004.

Warning from spectre during initial setup.
`NM1': Does not have a terminal named `gm'.
Ignoring invalid item `NM1:gm' in save statement.
`NM1': Does not have a terminal named `oppoint'.
Ignoring invalid item `NM1:eek:ppoint' in save statement.


Circuit inventory:
nodes 12
equations 31
bsim3v3 1
capacitor 2
diode 4
inductor 4
iprobe 4
resistor 6
vsource 2

Entering remote command mode using MPSC service (spectre, ipi, v0.0,
spectre4_1132, ).

******************
DC Analysis `dcOp'
******************
Important parameter values:
reltol = 1e-03
abstol(I) = 1 pA
abstol(V) = 1 uV
temp = 27 C
tnom = 27 C
tempeffects = all
gmin = 1 pS

Notice from spectre during DC analysis `dcOp'.
Gmin = 1 pS is large enough to noticeably affect the DC solution.
dV(NM1.djdb_perim:int_a) = 1.65257 mV
Use `gmin_check' option to eliminate or expand this report.

Convergence achieved in 3 iterations.
Total time required for dc analysis `dcOp' was 10 ms.

dcOpInfo: writing operating point information to rawfile.

**********************************
DC Analysis `dc': Vgs = (0 -> 1.8)
**********************************
Important parameter values:
reltol = 1e-03
abstol(I) = 1 pA
abstol(V) = 1 uV
temp = 27 C
tnom = 27 C
tempeffects = all
gmin = 1 pS
dc: Vgs = 45e-03 (2.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 135e-03 (7.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 225e-03 (12.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 315e-03 (17.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 405e-03 (22.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 495e-03 (27.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 585e-03 (32.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 675e-03 (37.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 765e-03 (42.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 855e-03 (47.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 945e-03 (52.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.035 (57.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.125 (62.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.215 (67.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.305 (72.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.395 (77.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.485 (82.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.575 (87.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.665 (92.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.755 (97.5 %), step = 1.8e-03 (100 m%)
Total time required for dc analysis `dc' was 280 ms.

modelParameter: writing model parameter values to rawfile.
element: writing instance parameter values to rawfile.
outputParameter: writing output parameter values to rawfile.

******************
DC Analysis `dcOp'
******************
Important parameter values:
reltol = 1e-03
abstol(I) = 1 pA
abstol(V) = 1 uV
temp = 27 C
tnom = 27 C
tempeffects = all
gmin = 1 pS
Convergence achieved in 3 iterations.
Total time required for dc analysis `dcOp' was 0 s.

dcOpInfo: writing operating point information to rawfile.

**********************************
DC Analysis `dc': Vgs = (0 -> 1.8)
**********************************
Important parameter values:
reltol = 1e-03
abstol(I) = 1 pA
abstol(V) = 1 uV
temp = 27 C
tnom = 27 C
tempeffects = all
gmin = 1 pS
dc: Vgs = 45e-03 (2.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 135e-03 (7.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 225e-03 (12.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 315e-03 (17.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 405e-03 (22.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 495e-03 (27.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 585e-03 (32.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 675e-03 (37.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 765e-03 (42.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 855e-03 (47.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 945e-03 (52.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.035 (57.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.125 (62.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.215 (67.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.305 (72.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.395 (77.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.485 (82.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.575 (87.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.665 (92.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.755 (97.5 %), step = 1.8e-03 (100 m%)
Total time required for dc analysis `dc' was 270 ms.

modelParameter: writing model parameter values to rawfile.
element: writing instance parameter values to rawfile.
outputParameter: writing output parameter values to rawfile.

******************
DC Analysis `dcOp'
******************
Important parameter values:
reltol = 1e-03
abstol(I) = 1 pA
abstol(V) = 1 uV
temp = 27 C
tnom = 27 C
tempeffects = all
gmin = 1 pS
Convergence achieved in 3 iterations.
Total time required for dc analysis `dcOp' was 0 s.

dcOpInfo: writing operating point information to rawfile.

**********************************
DC Analysis `dc': Vgs = (0 -> 1.8)
**********************************
Important parameter values:
reltol = 1e-03
abstol(I) = 1 pA
abstol(V) = 1 uV
temp = 27 C
tnom = 27 C
tempeffects = all
gmin = 1 pS
dc: Vgs = 45e-03 (2.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 135e-03 (7.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 225e-03 (12.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 315e-03 (17.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 405e-03 (22.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 495e-03 (27.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 585e-03 (32.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 675e-03 (37.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 765e-03 (42.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 855e-03 (47.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 945e-03 (52.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.035 (57.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.125 (62.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.215 (67.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.305 (72.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.395 (77.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.485 (82.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.575 (87.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.665 (92.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.755 (97.5 %), step = 1.8e-03 (100 m%)
Total time required for dc analysis `dc' was 290 ms.

modelParameter: writing model parameter values to rawfile.
element: writing instance parameter values to rawfile.
outputParameter: writing output parameter values to rawfile.

******************
DC Analysis `dcOp'
******************
Important parameter values:
reltol = 1e-03
abstol(I) = 1 pA
abstol(V) = 1 uV
temp = 27 C
tnom = 27 C
tempeffects = all
gmin = 1 pS
Convergence achieved in 3 iterations.
Total time required for dc analysis `dcOp' was 0 s.

dcOpInfo: writing operating point information to rawfile.

**********************************
DC Analysis `dc': Vgs = (0 -> 1.8)
**********************************
Important parameter values:
reltol = 1e-03
abstol(I) = 1 pA
abstol(V) = 1 uV
temp = 27 C
tnom = 27 C
tempeffects = all
gmin = 1 pS
dc: Vgs = 45e-03 (2.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 135e-03 (7.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 225e-03 (12.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 315e-03 (17.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 405e-03 (22.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 495e-03 (27.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 585e-03 (32.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 675e-03 (37.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 765e-03 (42.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 855e-03 (47.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 945e-03 (52.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.035 (57.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.125 (62.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.215 (67.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.305 (72.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.395 (77.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.485 (82.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.575 (87.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.665 (92.5 %), step = 1.8e-03 (100 m%)
dc: Vgs = 1.755 (97.5 %), step = 1.8e-03 (100 m%)
Total time required for dc analysis `dc' was 270 ms.

modelParameter: writing model parameter values to rawfile.
element: writing instance parameter values to rawfile.
outputParameter: writing output parameter values to rawfile.



AS you can see...the statements
save NM1:gm and
save NM1:eek:ppoint

both dont seem to work?

Can some one please help me....I am in desperate need of a way to plot gm and all other paramters from psf->NM1.main-> from resutls browser.

please help


thank you very much
 

Well, I am a bit lazy to look at the netlists :)
I think, RTFM for spectre and SKILL should work here :)

The only thing I can advice to you is that the capacitances Cgs, Cds that you get from Spectre DC analyses are not the node capacitances as one would expect, but "transcapacitances", i.e partical derivatives of charge at node vs voltage. So that Cgs = dVg/dVs. So some of these capacitances can be negative. This is how it is defined in BSIM3V3 model.

There was a post at comp.cad.cadence with more details about it.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top