• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. cds_srr returns weird results

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 124
  • Views 14159
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

cds_srr returns weird results

itos
itos over 9 years ago

Hi,

I always used cds_srr to read it swept simulation results in MATLAB. When I use it with three parameters I had the signals always in proper units (I also found posts in this forum showing the same). Example:

>> struct_n = cds_srr(outfile, 'sweepvds_sweepvgs-sweep', 'mn.m1:cgd')
struct_n =
    info: {'F'  'N'  'gs'  'Non'  'ds'  'Non'}
      ds: [1x49 double]
      gs: [49x1 double]
       F: [49x49 double]

Now on one specific computer I get no units! Example:

>> cds_srr(c.outfile, 'sweepvds_sweepvgs-sweep', 'mn.xmmaster.m1:cgd')

ans =

    info: {'real'  'Non'  'gs'  'Non'  'ds'  'Non'}
      ds: [0 0.5000 1]
      gs: [3x1 double]
    real: [3x3 double]

At first I thought it's because I'm using a different PDK but but then I remembered that I successfully used the script with the same PDK on one other computer. I tried different versions of the MATLAB toolbox and/or spectre but same result.

Reference to toolbox: /cadence/MMSIM13.10.186.lnx86/tools.lnx86/spectre/matlab/64bit
Spectre -W: sub-version  13.1.0.186.isr5
MATLAB: R2011b, 64 bit

I am not sure if the netlist is interesting but except the definition for a transistor (and bias voltage sources) it only contains:

save mn.xmmaster.m1 sigtype=all
save mp.xmmaster.m1 sigtype=all
[...]
options1 options gmin=1e-15 reltol=1e-6 vabstol=1e-8 iabstol=1e-12 temp=27 tnom=27 rawfmt=psfbin rawfile="outputs"
sweepvds sweep param=ds start=0 stop=1 step=0.25 {
sweepvgs dc oppoint=rawfile save=all param=gs start=0 stop=1 step=0.25
}

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    I just tried it with your example (I added some subckts and models to replicate your hierarchy) and got:

    >> cds_srr(outfile,'sweepvds_sweepvgs-sweep', 'mn.xmmaster.m1:cgd')

    ans =

    info: {'F' '' 'gs' '' 'ds' ''}
    ds: [0 0.2500 0.5000 0.7500 1]
    gs: [5x1 double]
    F: [5x5 double]

    Now I was using Matlab R2015a and MMSIM 14.1 ISR13. 

    There was a fairly major update to the Matlab Toolbox in MMSIM13.1 ISR7 (I think it was ISR7) and if my memory is correct, this requires you to use at least Matlab R2012a (or b). This was because of compiler support differences in Matlab; we'd been constrained by having to use an older version of our SRR library in order to match Matlab's support matrix, and there were a number of essential bug fixes that needed.

    So I'd definitely try using newer MMSIM and newer Matlab to see if that solves it (you might need to re-simulate in case the issue is with the saved data - if you can post the results database here, I can take a look at it).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • itos
    itos over 9 years ago

    Hi Andrew,

    Thank you, your answer motivated me to play again around with different versions. I could get it working now but the result surprises me a bit because it contradicts your answer:

    • MATLAB version does not matter (2012b and 2011b equally work)
    • The MATLAB toolbox version does not matter, i.e. the one from MMSIM13 works (/cadence/MMSIM13.10.186.lnx86/tools.lnx86/spectre/matlab/64bit)
    • However, spectre version itself matters: If I call spectre directly from /cad/cadence/MMSIM14.10.826.lnx86/tools.lnx86/bin it seems to work (although the environment for MMSIM13 is loaded, as it is done by the PDK startup scripts)

    Thanks!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Sounds as if it must have been a big in a specific version of spectre - i.e. how it wrote out the output data. I can't easily experiment because I'm on vacation this week with limited access to various versions of the software. 

    Anyway, sounds as if you have a resolution.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information