hot to load dcOp of all devices into a text file and then to

Y

yvk

Guest
Hi,

I have few requirements for processing the dcOp and analysing it better.

1. how to save dcOp of all devices in schematic into a text file.(hspice style of saving them in a *.op file)

2. how to save dcOp of all devices into matlab so that I can access each parameter in this format
Ex:- if name of device is Mxx and gm is the paramter of interest, Mxx.gm should be able to give the value of gm of the device Mxx(just matlab format)
this would help me to load all OP into matlab and do some simple expression evaluations like gain, bw etc.


3. how to add some more dcop parameters into the exiting list (gm, gds...etc)
ex: I like to add vdsat_factor =vds/vdsat_factor.
so that the op of all devices have this new paramter by default when I run dcOP in ADE

thanks,
yvk
 
On 08/04/12 22:15, yvk wrote:
Hi,

I have few requirements for processing the dcOp and analysing it better.

1. how to save dcOp of all devices in schematic into a text file.(hspice style of saving them in a *.op file)
Add an include file with:

dcOpInfoASCII info what=oppoint where=file

(add this to your model libraries). See "spectre -h info" for more
details if you want to define the filename too rather than using the
default.

2. how to save dcOp of all devices into matlab so that I can access each parameter in this format
Ex:- if name of device is Mxx and gm is the paramter of interest, Mxx.gm should be able to give the value of gm of the device Mxx(just matlab format)
this would help me to load all OP into matlab and do some simple expression evaluations like gain, bw etc.
Easiest way is to use the Spectre Toolbox for Matlab - that way you can
read the "psf" database directly in matlab using the cds_srr() function.
Search in cdnshelp for more details.

3. how to add some more dcop parameters into the exiting list (gm, gds...etc)
ex: I like to add vdsat_factor =vds/vdsat_factor.
so that the op of all devices have this new paramter by default when I run dcOP in ADE
Right now this involves having to customize the PDK (assuming you want
to annotate it on the schematic - you didn't say what you wanted to do
with the results). We do have a new annotation flow coming soon in early
access phase which will allow users to enter arbitrary expressions to
annotate op point on the schematic which makes this very easy.

Andrew.
 
dcOpInfoASCII info what=oppoint where=file

doesnt seems to work as the sim fails with this error-
===
Error found by spectre during circuit read-in.
ERROR (SFE-23): "/****/dcopsaveall.txt" 1: dcOpInfoASCII is an instance of an undefined model oppoint.
===

where this file 'dcopsaveall.txt' has only that statement.



On Tuesday, August 7, 2012 10:43:22 PM UTC+5:30, Andrew Beckett wrote:
On 08/04/12 22:15, yvk wrote:

Hi,



I have few requirements for processing the dcOp and analysing it better.



1. how to save dcOp of all devices in schematic into a text file.(hspice style of saving them in a *.op file)





Add an include file with:



dcOpInfoASCII info what=oppoint where=file



(add this to your model libraries). See "spectre -h info" for more

details if you want to define the filename too rather than using the

default.



2. how to save dcOp of all devices into matlab so that I can access each parameter in this format

Ex:- if name of device is Mxx and gm is the paramter of interest, Mxx.gm should be able to give the value of gm of the device Mxx(just matlab format)

this would help me to load all OP into matlab and do some simple expression evaluations like gain, bw etc.





Easiest way is to use the Spectre Toolbox for Matlab - that way you can

read the "psf" database directly in matlab using the cds_srr() function.

Search in cdnshelp for more details.





3. how to add some more dcop parameters into the exiting list (gm, gds...etc)

ex: I like to add vdsat_factor =vds/vdsat_factor.

so that the op of all devices have this new paramter by default when I run dcOP in ADE





Right now this involves having to customize the PDK (assuming you want

to annotate it on the schematic - you didn't say what you wanted to do

with the results). We do have a new annotation flow coming soon in early

access phase which will allow users to enter arbitrary expressions to

annotate op point on the schematic which makes this very easy.



Andrew.
 
On 08/11/12 15:15, yvk wrote:
dcOpInfoASCII info what=oppoint where=file

doesnt seems to work as the sim fails with this error-
===
Error found by spectre during circuit read-in.
ERROR (SFE-23): "/****/dcopsaveall.txt" 1: dcOpInfoASCII is an instance of an undefined model oppoint.
===

where this file 'dcopsaveall.txt' has only that statement.
If you'd have given the file the suffix ".scs" - i.e. dcopsaveall.scs -
then it would have worked. Alternatively, precede the statement with

simulator lang=spectre

Otherwise it will be interpreting this as a diode connecting between
node "info" and "what", with a model oppoint (I suspect), because it is
assuming it is in SPICE syntax.

Regards,

Andrew.
 
thanks for the reply Andrew, it works.

Regd. requirem(3) additions to OP point list, for now I am interested in looking at a bigger list of OP parameters(orig+ customized) in the text file.

Thanks,
yvk

On Tuesday, August 14, 2012 2:56:33 PM UTC+5:30, Andrew Beckett wrote:
On 08/11/12 15:15, yvk wrote:

dcOpInfoASCII info what=oppoint where=file



doesnt seems to work as the sim fails with this error-

===

Error found by spectre during circuit read-in.

ERROR (SFE-23): "/****/dcopsaveall.txt" 1: dcOpInfoASCII is an instance of an undefined model oppoint.

===



where this file 'dcopsaveall.txt' has only that statement.









If you'd have given the file the suffix ".scs" - i.e. dcopsaveall.scs -

then it would have worked. Alternatively, precede the statement with



simulator lang=spectre



Otherwise it will be interpreting this as a diode connecting between

node "info" and "what", with a model oppoint (I suspect), because it is

assuming it is in SPICE syntax.



Regards,



Andrew.
 
Hi Andrew,

could you please point me to an simple netlist showing DCOP simulation and then loading the OP data into matlab.(gm,gds etc )using cds_srr function.

I dont really get what arguments to give that function.
-----------
??? One or more output arguments not assigned during call to "cds_innersrr".

Error in ==> cds_srr at 20
sig = cds_innersrr(dirname, dataset, signame, verbose);

-------

thanks,
yvk


On Tuesday, August 7, 2012 10:43:22 PM UTC+5:30, Andrew Beckett wrote:
On 08/04/12 22:15, yvk wrote:

Hi,



I have few requirements for processing the dcOp and analysing it better.



1. how to save dcOp of all devices in schematic into a text file.(hspice style of saving them in a *.op file)





Add an include file with:



dcOpInfoASCII info what=oppoint where=file



(add this to your model libraries). See "spectre -h info" for more

details if you want to define the filename too rather than using the

default.



2. how to save dcOp of all devices into matlab so that I can access each parameter in this format

Ex:- if name of device is Mxx and gm is the paramter of interest, Mxx.gm should be able to give the value of gm of the device Mxx(just matlab format)

this would help me to load all OP into matlab and do some simple expression evaluations like gain, bw etc.





Easiest way is to use the Spectre Toolbox for Matlab - that way you can

read the "psf" database directly in matlab using the cds_srr() function.

Search in cdnshelp for more details.





3. how to add some more dcop parameters into the exiting list (gm, gds...etc)

ex: I like to add vdsat_factor =vds/vdsat_factor.

so that the op of all devices have this new paramter by default when I run dcOP in ADE





Right now this involves having to customize the PDK (assuming you want

to annotate it on the schematic - you didn't say what you wanted to do

with the results). We do have a new annotation flow coming soon in early

access phase which will allow users to enter arbitrary expressions to

annotate op point on the schematic which makes this very easy.



Andrew.
 
Hi Andrew,

I am using something like this.

data=cds_srr('./loadMatlab.raw','dcOp-dc')

now it just gives me the contents of this structure called 'data'

ex:
Total: 1 type(s) of signals
Signal type: S Data type: Real
'm1:gm' 'm1:gds' 'm1:gmbs'
-----

Now how do I get the value of m1:gm printed?

(ofcourse I can always call cds_srr with this argument) instead is there simpler way to read it from the existing struct 'data' here ?

My goal is to create a sub structure called 'm1' with gm,gds,ids,cgg....etc as the elements of it, so that I can access them using m1.gm,m1.gds,m1.cgg etc.

thanks,
yvk





On Tuesday, August 7, 2012 10:43:22 PM UTC+5:30, Andrew Beckett wrote:
On 08/04/12 22:15, yvk wrote:

Hi,



I have few requirements for processing the dcOp and analysing it better.



1. how to save dcOp of all devices in schematic into a text file.(hspice style of saving them in a *.op file)





Add an include file with:



dcOpInfoASCII info what=oppoint where=file



(add this to your model libraries). See "spectre -h info" for more

details if you want to define the filename too rather than using the

default.



2. how to save dcOp of all devices into matlab so that I can access each parameter in this format

Ex:- if name of device is Mxx and gm is the paramter of interest, Mxx.gm should be able to give the value of gm of the device Mxx(just matlab format)

this would help me to load all OP into matlab and do some simple expression evaluations like gain, bw etc.





Easiest way is to use the Spectre Toolbox for Matlab - that way you can

read the "psf" database directly in matlab using the cds_srr() function.

Search in cdnshelp for more details.





3. how to add some more dcop parameters into the exiting list (gm, gds...etc)

ex: I like to add vdsat_factor =vds/vdsat_factor.

so that the op of all devices have this new paramter by default when I run dcOP in ADE





Right now this involves having to customize the PDK (assuming you want

to annotate it on the schematic - you didn't say what you wanted to do

with the results). We do have a new annotation flow coming soon in early

access phase which will allow users to enter arbitrary expressions to

annotate op point on the schematic which makes this very easy.



Andrew.
 
On 09/21/12 20:41, yvk wrote:
Hi Andrew,

I am using something like this.

data=cds_srr('./loadMatlab.raw','dcOp-dc')

now it just gives me the contents of this structure called 'data'

ex:
Total: 1 type(s) of signals
Signal type: S Data type: Real
'm1:gm' 'm1:gds' 'm1:gmbs'
-----

Now how do I get the value of m1:gm printed?

(ofcourse I can always call cds_srr with this argument) instead is
there simpler way to read it from the existing struct 'data' here ?

My goal is to create a sub structure called 'm1' with
gm,gds,ids,cgg....etc as the elements of it, so that I can access them
using m1.gm,m1.gds,m1.cgg etc.

thanks,
yvk
I don't think you can directly do this - you'd have to call the two
argument form:


data=cds_srr('psf','dcOpInfo-info')
Total: 23 properties
'PSFversion' 'BINPSF creation time' 'PSF style' 'PSF types'
'PSF sweeps' 'PSF sweep points' 'PSF sweep min' 'PSF sweep max'
'PSF groups' 'PSF traces' 'simulator' 'version' 'date'
'design' 'analysis type' 'analysis name' 'analysis description'
'xVecSorted' 'tolerance.relative' 'AnalysisName' 'AnalysisType'
'OpPointTemp.Value' 'OpPointTemp.Units'

Total: 6 type(s) of signals
Signal type: bjt Data type: Other
'I7.Q3' 'I7.Q2' 'I7.Q4' 'I7.Q0' 'I7.Q1' 'I7.Q3:vbe'
'I7.Q3:vbc' 'I7.Q3:vce' 'I7.Q3:vsub' 'I7.Q3:ic' 'I7.Q3:ib'
'I7.Q3:isub' 'I7.Q3:pwr' 'I7.Q3:betadc' 'I7.Q3:betaac'
'I7.Q3:gm' 'I7.Q3:rpi' 'I7.Q3:ro' 'I7.Q3:rb' 'I7.Q3:rc'
'I7.Q3:cpi' 'I7.Q3:cmu' 'I7.Q3:cmux' 'I7.Q3:csub' 'I7.Q3:ft'
'I7.Q3:gpi' 'I7.Q3:gmu' 'I7.Q3:g0' 'I7.Q3:gb' 'I7.Q3:qbe'
'I7.Q3:qbc' 'I7.Q3:qsc' 'I7.Q3:grc' 'I7.Q3:rbb' 'I7.Q3:log_ic'
'I7.Q3:log_ib' 'I7.Q3:gre' 'I7.Q3:re' 'I7.Q3:region'
'I7.Q3:type' 'I7.Q3:struct' 'I7.Q2:vbe' 'I7.Q2:vbc'
'I7.Q2:vce' 'I7.Q2:vsub' 'I7.Q2:ic' 'I7.Q2:ib' 'I7.Q2:isub'
'I7.Q2:pwr' 'I7.Q2:betadc' 'I7.Q2:betaac' 'I7.Q2:gm'
'I7.Q2:rpi' 'I7.Q2:ro' 'I7.Q2:rb' 'I7.Q2:rc' 'I7.Q2:cpi'
'I7.Q2:cmu' 'I7.Q2:cmux' 'I7.Q2:csub' 'I7.Q2:ft' 'I7.Q2:gpi'
'I7.Q2:gmu' 'I7.Q2:g0' 'I7.Q2:gb' 'I7.Q2:qbe' 'I7.Q2:qbc'
'I7.Q2:qsc' 'I7.Q2:grc' 'I7.Q2:rbb' 'I7.Q2:log_ic'
'I7.Q2:log_ib' 'I7.Q2:gre' 'I7.Q2:re' 'I7.Q2:region'
'I7.Q2:type' 'I7.Q2:struct' 'I7.Q4:vbe' 'I7.Q4:vbc'
'I7.Q4:vce' 'I7.Q4:vsub' 'I7.Q4:ic' 'I7.Q4:ib' 'I7.Q4:isub'
'I7.Q4:pwr' 'I7.Q4:betadc' 'I7.Q4:betaac' 'I7.Q4:gm'
'I7.Q4:rpi' 'I7.Q4:ro' 'I7.Q4:rb' 'I7.Q4:rc' 'I7.Q4:cpi'
'I7.Q4:cmu' 'I7.Q4:cmux' 'I7.Q4:csub' 'I7.Q4:ft' 'I7.Q4:gpi'
'I7.Q4:gmu' 'I7.Q4:g0' 'I7.Q4:gb' 'I7.Q4:qbe' 'I7.Q4:qbc'
'I7.Q4:qsc' 'I7.Q4:grc' 'I7.Q4:rbb' 'I7.Q4:log_ic'
'I7.Q4:log_ib' 'I7.Q4:gre' 'I7.Q4:re' 'I7.Q4:region'
'I7.Q4:type' 'I7.Q4:struct' 'I7.Q0:vbe' 'I7.Q0:vbc'
'I7.Q0:vce' 'I7.Q0:vsub' 'I7.Q0:ic' 'I7.Q0:ib' 'I7.Q0:isub'
'I7.Q0:pwr' 'I7.Q0:betadc' 'I7.Q0:betaac' 'I7.Q0:gm'
'I7.Q0:rpi' 'I7.Q0:ro' 'I7.Q0:rb' 'I7.Q0:rc' 'I7.Q0:cpi'
'I7.Q0:cmu' 'I7.Q0:cmux' 'I7.Q0:csub' 'I7.Q0:ft' 'I7.Q0:gpi'
'I7.Q0:gmu' 'I7.Q0:g0' 'I7.Q0:gb' 'I7.Q0:qbe' 'I7.Q0:qbc'
'I7.Q0:qsc' 'I7.Q0:grc' 'I7.Q0:rbb' 'I7.Q0:log_ic'
'I7.Q0:log_ib' 'I7.Q0:gre' 'I7.Q0:re' 'I7.Q0:region'
'I7.Q0:type' 'I7.Q0:struct' 'I7.Q1:vbe' 'I7.Q1:vbc'
'I7.Q1:vce' 'I7.Q1:vsub' 'I7.Q1:ic' 'I7.Q1:ib' 'I7.Q1:isub'
'I7.Q1:pwr' 'I7.Q1:betadc' 'I7.Q1:betaac' 'I7.Q1:gm'
'I7.Q1:rpi' 'I7.Q1:ro' 'I7.Q1:rb' 'I7.Q1:rc' 'I7.Q1:cpi'
'I7.Q1:cmu' 'I7.Q1:cmux' 'I7.Q1:csub' 'I7.Q1:ft' 'I7.Q1:gpi'
'I7.Q1:gmu' 'I7.Q1:g0' 'I7.Q1:gb' 'I7.Q1:qbe' 'I7.Q1:qbc'
'I7.Q1:qsc' 'I7.Q1:grc' 'I7.Q1:rbb' 'I7.Q1:log_ic'
'I7.Q1:log_ib' 'I7.Q1:gre' 'I7.Q1:re' 'I7.Q1:region'
'I7.Q1:type' 'I7.Q1:struct'
Signal type: capacitor Data type: Other
'I7.C0' 'I7.C0:cap'
Signal type: isource Data type: Other
'I4' 'I4:i' 'I4:v' 'I4:pwr'
Signal type: mos2 Data type: Other
'I7.M3' 'I7.M1' 'I7.M2' 'I7.M5' 'I7.M3:ids' 'I7.M3:vgs'
'I7.M3:vds' 'I7.M3:vbs' 'I7.M3:vth' 'I7.M3:vdsat' 'I7.M3:gm'
'I7.M3:gds' 'I7.M3:gmbs' 'I7.M3:gameff' 'I7.M3:betaeff'
'I7.M3:cbd' 'I7.M3:cbs' 'I7.M3:cgs' 'I7.M3:cgd' 'I7.M3:cgb'
'I7.M3:ron' 'I7.M3:id' 'I7.M3:ibulk' 'I7.M3:pwr'
'I7.M3:gmoverid' 'I7.M3:isub' 'I7.M3:stress' 'I7.M3:age'
'I7.M3:he_vdsat' 'I7.M3:region' 'I7.M3:degradation'
'I7.M3:reversed' 'I7.M3:type' 'I7.M1:ids' 'I7.M1:vgs'
'I7.M1:vds' 'I7.M1:vbs' 'I7.M1:vth' 'I7.M1:vdsat' 'I7.M1:gm'
'I7.M1:gds' 'I7.M1:gmbs' 'I7.M1:gameff' 'I7.M1:betaeff'
'I7.M1:cbd' 'I7.M1:cbs' 'I7.M1:cgs' 'I7.M1:cgd' 'I7.M1:cgb'
'I7.M1:ron' 'I7.M1:id' 'I7.M1:ibulk' 'I7.M1:pwr'
'I7.M1:gmoverid' 'I7.M1:isub' 'I7.M1:stress' 'I7.M1:age'
'I7.M1:he_vdsat' 'I7.M1:region' 'I7.M1:degradation'
'I7.M1:reversed' 'I7.M1:type' 'I7.M2:ids' 'I7.M2:vgs'
'I7.M2:vds' 'I7.M2:vbs' 'I7.M2:vth' 'I7.M2:vdsat' 'I7.M2:gm'
'I7.M2:gds' 'I7.M2:gmbs' 'I7.M2:gameff' 'I7.M2:betaeff'
'I7.M2:cbd' 'I7.M2:cbs' 'I7.M2:cgs' 'I7.M2:cgd' 'I7.M2:cgb'
'I7.M2:ron' 'I7.M2:id' 'I7.M2:ibulk' 'I7.M2:pwr'
'I7.M2:gmoverid' 'I7.M2:isub' 'I7.M2:stress' 'I7.M2:age'
'I7.M2:he_vdsat' 'I7.M2:region' 'I7.M2:degradation'
'I7.M2:reversed' 'I7.M2:type' 'I7.M5:ids' 'I7.M5:vgs'
'I7.M5:vds' 'I7.M5:vbs' 'I7.M5:vth' 'I7.M5:vdsat' 'I7.M5:gm'
'I7.M5:gds' 'I7.M5:gmbs' 'I7.M5:gameff' 'I7.M5:betaeff'
'I7.M5:cbd' 'I7.M5:cbs' 'I7.M5:cgs' 'I7.M5:cgd' 'I7.M5:cgb'
'I7.M5:ron' 'I7.M5:id' 'I7.M5:ibulk' 'I7.M5:pwr'
'I7.M5:gmoverid' 'I7.M5:isub' 'I7.M5:stress' 'I7.M5:age'
'I7.M5:he_vdsat' 'I7.M5:region' 'I7.M5:degradation'
'I7.M5:reversed' 'I7.M5:type'
Signal type: resistor Data type: Other
'R1' 'R0' 'R3' 'I7.R0' 'R1:v' 'R1:i' 'R1:res' 'R1:pwr'
'R0:v' 'R0:i' 'R0:res' 'R0:pwr' 'R3:v' 'R3:i' 'R3:res'
'R3:pwr' 'I7.R0:v' 'I7.R0:i' 'I7.R0:res' 'I7.R0:pwr'
Signal type: vsource Data type: Other
'V2' 'I3.V2' 'I3.V0' 'V2:v' 'V2:i' 'V2:pwr' 'I3.V2:v'
'I3.V2:i' 'I3.V2:pwr' 'I3.V0:v' 'I3.V0:i' 'I3.V0:pwr'


data =

signal_info: {1x14 cell}
prop: {23x1 cell}
bjt: {185x1 cell}
capacitor: {2x1 cell}
isource: {4x1 cell}
mos2: {120x1 cell}
resistor: {20x1 cell}
vsource: {12x1 cell}

Then you could parse the output of the type you were interested in - for
example:

data.mos2
ans =

'I7.M3'
'I7.M1'
'I7.M2'
'I7.M5'
'I7.M3:ids'
'I7.M3:vgs'
'I7.M3:vds'
'I7.M3:vbs'
'I7.M3:vth'
'I7.M3:vdsat'
'I7.M3:gm'
'I7.M3:gds'
'I7.M3:gmbs'
'I7.M3:gameff'
'I7.M3:betaeff'
'I7.M3:cbd'
'I7.M3:cbs'
'I7.M3:cgs'
'I7.M3:cgd'
'I7.M3:cgb'
'I7.M3:ron'
'I7.M3:id'
'I7.M3:ibulk'
'I7.M3:pwr'
'I7.M3:gmoverid'
'I7.M3:isub'
'I7.M3:stress'
'I7.M3:age'
'I7.M3:he_vdsat'
'I7.M3:region'
'I7.M3:degradation'
'I7.M3:reversed'
'I7.M3:type'
'I7.M1:ids'
'I7.M1:vgs'
'I7.M1:vds'
'I7.M1:vbs'
'I7.M1:vth'
'I7.M1:vdsat'
'I7.M1:gm'
'I7.M1:gds'
'I7.M1:gmbs'
'I7.M1:gameff'
'I7.M1:betaeff'
'I7.M1:cbd'
'I7.M1:cbs'
'I7.M1:cgs'
'I7.M1:cgd'
'I7.M1:cgb'
'I7.M1:ron'
'I7.M1:id'
'I7.M1:ibulk'
'I7.M1:pwr'
'I7.M1:gmoverid'
'I7.M1:isub'
'I7.M1:stress'
'I7.M1:age'
'I7.M1:he_vdsat'
'I7.M1:region'
'I7.M1:degradation'
'I7.M1:reversed'
'I7.M1:type'
'I7.M2:ids'
'I7.M2:vgs'
'I7.M2:vds'
'I7.M2:vbs'
'I7.M2:vth'
'I7.M2:vdsat'
'I7.M2:gm'
'I7.M2:gds'
'I7.M2:gmbs'
'I7.M2:gameff'
'I7.M2:betaeff'
'I7.M2:cbd'
'I7.M2:cbs'
'I7.M2:cgs'
'I7.M2:cgd'
'I7.M2:cgb'
'I7.M2:ron'
'I7.M2:id'
'I7.M2:ibulk'
'I7.M2:pwr'
'I7.M2:gmoverid'
'I7.M2:isub'
'I7.M2:stress'
'I7.M2:age'
'I7.M2:he_vdsat'
'I7.M2:region'
'I7.M2:degradation'
'I7.M2:reversed'
'I7.M2:type'
'I7.M5:ids'
'I7.M5:vgs'
'I7.M5:vds'
'I7.M5:vbs'
'I7.M5:vth'
'I7.M5:vdsat'
'I7.M5:gm'
'I7.M5:gds'
'I7.M5:gmbs'
'I7.M5:gameff'
'I7.M5:betaeff'
'I7.M5:cbd'
'I7.M5:cbs'
'I7.M5:cgs'
'I7.M5:cgd'
'I7.M5:cgb'
'I7.M5:ron'
'I7.M5:id'
'I7.M5:ibulk'
'I7.M5:pwr'
'I7.M5:gmoverid'
'I7.M5:isub'
'I7.M5:stress'
'I7.M5:age'
'I7.M5:he_vdsat'
'I7.M5:region'
'I7.M5:degradation'
'I7.M5:reversed'
'I7.M5:type'

And then build a structure yourself by calling the three argument
version with each of the corresponding oppoint parameters for a
particular transistor. cds_srr doesn't return such a structure.

Regards,

Andrew.
 
Thanks Andrew.
Is it possible to know how all the data is stored in the o/p variable returned by cds_srr()--struct,cells,arrays,sub etc.

OR does it just return the name of the elements and not its contents.


regards,
yvk.




On Thursday, October 4, 2012 11:12:00 AM UTC+5:30, Andrew Beckett wrote:
On 09/21/12 20:41, yvk wrote:

Hi Andrew,



I am using something like this.



data=cds_srr('./loadMatlab.raw','dcOp-dc')



now it just gives me the contents of this structure called 'data'



ex:

Total: 1 type(s) of signals

Signal type: S Data type: Real

'm1:gm' 'm1:gds' 'm1:gmbs'

-----



Now how do I get the value of m1:gm printed?



(ofcourse I can always call cds_srr with this argument) instead is

there simpler way to read it from the existing struct 'data' here ?



My goal is to create a sub structure called 'm1' with

gm,gds,ids,cgg....etc as the elements of it, so that I can access them

using m1.gm,m1.gds,m1.cgg etc.



thanks,

yvk







I don't think you can directly do this - you'd have to call the two

argument form:





data=cds_srr('psf','dcOpInfo-info')

Total: 23 properties

'PSFversion' 'BINPSF creation time' 'PSF style' 'PSF types'

'PSF sweeps' 'PSF sweep points' 'PSF sweep min' 'PSF sweep max'

'PSF groups' 'PSF traces' 'simulator' 'version' 'date'

'design' 'analysis type' 'analysis name' 'analysis description'

'xVecSorted' 'tolerance.relative' 'AnalysisName' 'AnalysisType'

'OpPointTemp.Value' 'OpPointTemp.Units'



Total: 6 type(s) of signals

Signal type: bjt Data type: Other

'I7.Q3' 'I7.Q2' 'I7.Q4' 'I7.Q0' 'I7.Q1' 'I7.Q3:vbe'

'I7.Q3:vbc' 'I7.Q3:vce' 'I7.Q3:vsub' 'I7.Q3:ic' 'I7.Q3:ib'

'I7.Q3:isub' 'I7.Q3:pwr' 'I7.Q3:betadc' 'I7.Q3:betaac'

'I7.Q3:gm' 'I7.Q3:rpi' 'I7.Q3:ro' 'I7.Q3:rb' 'I7.Q3:rc'

'I7.Q3:cpi' 'I7.Q3:cmu' 'I7.Q3:cmux' 'I7.Q3:csub' 'I7.Q3:ft'

'I7.Q3:gpi' 'I7.Q3:gmu' 'I7.Q3:g0' 'I7.Q3:gb' 'I7.Q3:qbe'

'I7.Q3:qbc' 'I7.Q3:qsc' 'I7.Q3:grc' 'I7.Q3:rbb' 'I7.Q3:log_ic'

'I7.Q3:log_ib' 'I7.Q3:gre' 'I7.Q3:re' 'I7.Q3:region'

'I7.Q3:type' 'I7.Q3:struct' 'I7.Q2:vbe' 'I7.Q2:vbc'

'I7.Q2:vce' 'I7.Q2:vsub' 'I7.Q2:ic' 'I7.Q2:ib' 'I7.Q2:isub'

'I7.Q2:pwr' 'I7.Q2:betadc' 'I7.Q2:betaac' 'I7.Q2:gm'

'I7.Q2:rpi' 'I7.Q2:ro' 'I7.Q2:rb' 'I7.Q2:rc' 'I7.Q2:cpi'

'I7.Q2:cmu' 'I7.Q2:cmux' 'I7.Q2:csub' 'I7.Q2:ft' 'I7.Q2:gpi'

'I7.Q2:gmu' 'I7.Q2:g0' 'I7.Q2:gb' 'I7.Q2:qbe' 'I7.Q2:qbc'

'I7.Q2:qsc' 'I7.Q2:grc' 'I7.Q2:rbb' 'I7.Q2:log_ic'

'I7.Q2:log_ib' 'I7.Q2:gre' 'I7.Q2:re' 'I7.Q2:region'

'I7.Q2:type' 'I7.Q2:struct' 'I7.Q4:vbe' 'I7.Q4:vbc'

'I7.Q4:vce' 'I7.Q4:vsub' 'I7.Q4:ic' 'I7.Q4:ib' 'I7.Q4:isub'

'I7.Q4:pwr' 'I7.Q4:betadc' 'I7.Q4:betaac' 'I7.Q4:gm'

'I7.Q4:rpi' 'I7.Q4:ro' 'I7.Q4:rb' 'I7.Q4:rc' 'I7.Q4:cpi'

'I7.Q4:cmu' 'I7.Q4:cmux' 'I7.Q4:csub' 'I7.Q4:ft' 'I7.Q4:gpi'

'I7.Q4:gmu' 'I7.Q4:g0' 'I7.Q4:gb' 'I7.Q4:qbe' 'I7.Q4:qbc'

'I7.Q4:qsc' 'I7.Q4:grc' 'I7.Q4:rbb' 'I7.Q4:log_ic'

'I7.Q4:log_ib' 'I7.Q4:gre' 'I7.Q4:re' 'I7.Q4:region'

'I7.Q4:type' 'I7.Q4:struct' 'I7.Q0:vbe' 'I7.Q0:vbc'

'I7.Q0:vce' 'I7.Q0:vsub' 'I7.Q0:ic' 'I7.Q0:ib' 'I7.Q0:isub'

'I7.Q0:pwr' 'I7.Q0:betadc' 'I7.Q0:betaac' 'I7.Q0:gm'

'I7.Q0:rpi' 'I7.Q0:ro' 'I7.Q0:rb' 'I7.Q0:rc' 'I7.Q0:cpi'

'I7.Q0:cmu' 'I7.Q0:cmux' 'I7.Q0:csub' 'I7.Q0:ft' 'I7.Q0:gpi'

'I7.Q0:gmu' 'I7.Q0:g0' 'I7.Q0:gb' 'I7.Q0:qbe' 'I7.Q0:qbc'

'I7.Q0:qsc' 'I7.Q0:grc' 'I7.Q0:rbb' 'I7.Q0:log_ic'

'I7.Q0:log_ib' 'I7.Q0:gre' 'I7.Q0:re' 'I7.Q0:region'

'I7.Q0:type' 'I7.Q0:struct' 'I7.Q1:vbe' 'I7.Q1:vbc'

'I7.Q1:vce' 'I7.Q1:vsub' 'I7.Q1:ic' 'I7.Q1:ib' 'I7.Q1:isub'

'I7.Q1:pwr' 'I7.Q1:betadc' 'I7.Q1:betaac' 'I7.Q1:gm'

'I7.Q1:rpi' 'I7.Q1:ro' 'I7.Q1:rb' 'I7.Q1:rc' 'I7.Q1:cpi'

'I7.Q1:cmu' 'I7.Q1:cmux' 'I7.Q1:csub' 'I7.Q1:ft' 'I7.Q1:gpi'

'I7.Q1:gmu' 'I7.Q1:g0' 'I7.Q1:gb' 'I7.Q1:qbe' 'I7.Q1:qbc'

'I7.Q1:qsc' 'I7.Q1:grc' 'I7.Q1:rbb' 'I7.Q1:log_ic'

'I7.Q1:log_ib' 'I7.Q1:gre' 'I7.Q1:re' 'I7.Q1:region'

'I7.Q1:type' 'I7.Q1:struct'

Signal type: capacitor Data type: Other

'I7.C0' 'I7.C0:cap'

Signal type: isource Data type: Other

'I4' 'I4:i' 'I4:v' 'I4:pwr'

Signal type: mos2 Data type: Other

'I7.M3' 'I7.M1' 'I7.M2' 'I7.M5' 'I7.M3:ids' 'I7.M3:vgs'

'I7.M3:vds' 'I7.M3:vbs' 'I7.M3:vth' 'I7.M3:vdsat' 'I7.M3:gm'

'I7.M3:gds' 'I7.M3:gmbs' 'I7.M3:gameff' 'I7.M3:betaeff'

'I7.M3:cbd' 'I7.M3:cbs' 'I7.M3:cgs' 'I7.M3:cgd' 'I7.M3:cgb'

'I7.M3:ron' 'I7.M3:id' 'I7.M3:ibulk' 'I7.M3:pwr'

'I7.M3:gmoverid' 'I7.M3:isub' 'I7.M3:stress' 'I7.M3:age'

'I7.M3:he_vdsat' 'I7.M3:region' 'I7.M3:degradation'

'I7.M3:reversed' 'I7.M3:type' 'I7.M1:ids' 'I7.M1:vgs'

'I7.M1:vds' 'I7.M1:vbs' 'I7.M1:vth' 'I7.M1:vdsat' 'I7.M1:gm'

'I7.M1:gds' 'I7.M1:gmbs' 'I7.M1:gameff' 'I7.M1:betaeff'

'I7.M1:cbd' 'I7.M1:cbs' 'I7.M1:cgs' 'I7.M1:cgd' 'I7.M1:cgb'

'I7.M1:ron' 'I7.M1:id' 'I7.M1:ibulk' 'I7.M1:pwr'

'I7.M1:gmoverid' 'I7.M1:isub' 'I7.M1:stress' 'I7.M1:age'

'I7.M1:he_vdsat' 'I7.M1:region' 'I7.M1:degradation'

'I7.M1:reversed' 'I7.M1:type' 'I7.M2:ids' 'I7.M2:vgs'

'I7.M2:vds' 'I7.M2:vbs' 'I7.M2:vth' 'I7.M2:vdsat' 'I7.M2:gm'

'I7.M2:gds' 'I7.M2:gmbs' 'I7.M2:gameff' 'I7.M2:betaeff'

'I7.M2:cbd' 'I7.M2:cbs' 'I7.M2:cgs' 'I7.M2:cgd' 'I7.M2:cgb'

'I7.M2:ron' 'I7.M2:id' 'I7.M2:ibulk' 'I7.M2:pwr'

'I7.M2:gmoverid' 'I7.M2:isub' 'I7.M2:stress' 'I7.M2:age'

'I7.M2:he_vdsat' 'I7.M2:region' 'I7.M2:degradation'

'I7.M2:reversed' 'I7.M2:type' 'I7.M5:ids' 'I7.M5:vgs'

'I7.M5:vds' 'I7.M5:vbs' 'I7.M5:vth' 'I7.M5:vdsat' 'I7.M5:gm'

'I7.M5:gds' 'I7.M5:gmbs' 'I7.M5:gameff' 'I7.M5:betaeff'

'I7.M5:cbd' 'I7.M5:cbs' 'I7.M5:cgs' 'I7.M5:cgd' 'I7.M5:cgb'

'I7.M5:ron' 'I7.M5:id' 'I7.M5:ibulk' 'I7.M5:pwr'

'I7.M5:gmoverid' 'I7.M5:isub' 'I7.M5:stress' 'I7.M5:age'

'I7.M5:he_vdsat' 'I7.M5:region' 'I7.M5:degradation'

'I7.M5:reversed' 'I7.M5:type'

Signal type: resistor Data type: Other

'R1' 'R0' 'R3' 'I7.R0' 'R1:v' 'R1:i' 'R1:res' 'R1:pwr'

'R0:v' 'R0:i' 'R0:res' 'R0:pwr' 'R3:v' 'R3:i' 'R3:res'

'R3:pwr' 'I7.R0:v' 'I7.R0:i' 'I7.R0:res' 'I7.R0:pwr'

Signal type: vsource Data type: Other

'V2' 'I3.V2' 'I3.V0' 'V2:v' 'V2:i' 'V2:pwr' 'I3.V2:v'

'I3.V2:i' 'I3.V2:pwr' 'I3.V0:v' 'I3.V0:i' 'I3.V0:pwr'





data =



signal_info: {1x14 cell}

prop: {23x1 cell}

bjt: {185x1 cell}

capacitor: {2x1 cell}

isource: {4x1 cell}

mos2: {120x1 cell}

resistor: {20x1 cell}

vsource: {12x1 cell}



Then you could parse the output of the type you were interested in - for

example:



data.mos2



ans =



'I7.M3'

'I7.M1'

'I7.M2'

'I7.M5'

'I7.M3:ids'

'I7.M3:vgs'

'I7.M3:vds'

'I7.M3:vbs'

'I7.M3:vth'

'I7.M3:vdsat'

'I7.M3:gm'

'I7.M3:gds'

'I7.M3:gmbs'

'I7.M3:gameff'

'I7.M3:betaeff'

'I7.M3:cbd'

'I7.M3:cbs'

'I7.M3:cgs'

'I7.M3:cgd'

'I7.M3:cgb'

'I7.M3:ron'

'I7.M3:id'

'I7.M3:ibulk'

'I7.M3:pwr'

'I7.M3:gmoverid'

'I7.M3:isub'

'I7.M3:stress'

'I7.M3:age'

'I7.M3:he_vdsat'

'I7.M3:region'

'I7.M3:degradation'

'I7.M3:reversed'

'I7.M3:type'

'I7.M1:ids'

'I7.M1:vgs'

'I7.M1:vds'

'I7.M1:vbs'

'I7.M1:vth'

'I7.M1:vdsat'

'I7.M1:gm'

'I7.M1:gds'

'I7.M1:gmbs'

'I7.M1:gameff'

'I7.M1:betaeff'

'I7.M1:cbd'

'I7.M1:cbs'

'I7.M1:cgs'

'I7.M1:cgd'

'I7.M1:cgb'

'I7.M1:ron'

'I7.M1:id'

'I7.M1:ibulk'

'I7.M1:pwr'

'I7.M1:gmoverid'

'I7.M1:isub'

'I7.M1:stress'

'I7.M1:age'

'I7.M1:he_vdsat'

'I7.M1:region'

'I7.M1:degradation'

'I7.M1:reversed'

'I7.M1:type'

'I7.M2:ids'

'I7.M2:vgs'

'I7.M2:vds'

'I7.M2:vbs'

'I7.M2:vth'

'I7.M2:vdsat'

'I7.M2:gm'

'I7.M2:gds'

'I7.M2:gmbs'

'I7.M2:gameff'

'I7.M2:betaeff'

'I7.M2:cbd'

'I7.M2:cbs'

'I7.M2:cgs'

'I7.M2:cgd'

'I7.M2:cgb'

'I7.M2:ron'

'I7.M2:id'

'I7.M2:ibulk'

'I7.M2:pwr'

'I7.M2:gmoverid'

'I7.M2:isub'

'I7.M2:stress'

'I7.M2:age'

'I7.M2:he_vdsat'

'I7.M2:region'

'I7.M2:degradation'

'I7.M2:reversed'

'I7.M2:type'

'I7.M5:ids'

'I7.M5:vgs'

'I7.M5:vds'

'I7.M5:vbs'

'I7.M5:vth'

'I7.M5:vdsat'

'I7.M5:gm'

'I7.M5:gds'

'I7.M5:gmbs'

'I7.M5:gameff'

'I7.M5:betaeff'

'I7.M5:cbd'

'I7.M5:cbs'

'I7.M5:cgs'

'I7.M5:cgd'

'I7.M5:cgb'

'I7.M5:ron'

'I7.M5:id'

'I7.M5:ibulk'

'I7.M5:pwr'

'I7.M5:gmoverid'

'I7.M5:isub'

'I7.M5:stress'

'I7.M5:age'

'I7.M5:he_vdsat'

'I7.M5:region'

'I7.M5:degradation'

'I7.M5:reversed'

'I7.M5:type'



And then build a structure yourself by calling the three argument

version with each of the corresponding oppoint parameters for a

particular transistor. cds_srr doesn't return such a structure.



Regards,



Andrew.
 
On 10/09/12 10:57, yvk wrote:
Thanks Andrew.
Is it possible to know how all the data is stored in the o/p variable returned by cds_srr()--struct,cells,arrays,sub etc.

OR does it just return the name of the elements and not its contents.


regards,
yvk.
I don't understand your question - maybe you can clarify?

Andrew
 
Andrew,

In your example data=cds_srr('psf','dcOpInfo-info')

I wish to call this function once and use the variable/struct 'data' for reading the values of all parameters stored in DCOP results. So I was trying to understand the internal hierarchy of all the data stored in PSF after loading into matlab.

It looks like we cannot avoid multiple calls to this function cds_srr() in any case.

Thanks,
yvk.




On Thursday, October 11, 2012 5:21:38 PM UTC+5:30, Andrew Beckett wrote:
On 10/09/12 10:57, yvk wrote:

Thanks Andrew.

Is it possible to know how all the data is stored in the o/p variable returned by cds_srr()--struct,cells,arrays,sub etc.



OR does it just return the name of the elements and not its contents.





regards,

yvk.









I don't understand your question - maybe you can clarify?



Andrew
w
 

Welcome to EDABoard.com

Sponsor

Back
Top