• 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. Viva XL can only display waveform of the first run of a...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 125
  • Views 3305
  • 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

Viva XL can only display waveform of the first run of a spectremdl sweep

NightOwlPoppy
NightOwlPoppy 10 months ago

Hi all,

I'm trying to browse a .raw directory generated by spectremdl and view the waveforms inside in Viva XL, which always went smoothly in the past with IC617 and MMSIM151. However recently I started working at another institution that uses Virtuoso.6.18.000 and SPECTRE23.10.242, things seem different.

In particular, I set a loop for transient analysis sweeping a design parameter in .mdl file, then it performs multiple transient runs and save their results in the .raw directory, with no errors. Normally a group of transient waves of a selected signal would be displayed in the Viva window, but now only 1 waveform appears, which corresponds to the first parameter value. But when I checked the .raw dir, I saw there were multiple tran simulation results indexed as -000.tran.tran, -001.tran.tran, -002.tran.tran, etc, and if I delete -000 files, the -001 can then be displayed in Viva, but -002. and later waveforms still cant be loaded.

I have also tried to run loop simulations using ADE L, the PSF results under the simulation/ directory can be displayed correctly. TBH I don't quite understand the differences between the .raw and psf result format. 

Does anyone have any ideas on this? Thank you in advance for your time and help!

Huang

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett 10 months ago

    Huang,

    Could you share the MDL script you're using? That would give some context as to the problem.

    Note that ADE happens to call the result directory "psf" whereas spectre (by default) adds the suffix ".raw" to the directory (derived from the input filename) but there's no difference other than that. I think the default transient output format has changed from PSF to PSF-XL between the versions you're using, but I don't think that quite explains what you are seeing (PSF XL is just a newer format which will work better with lots of signals or lots of points).

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • NightOwlPoppy
    NightOwlPoppy 10 months ago in reply to Andrew Beckett

    Hi Andrew,

    Thank you for your reply!

    I found that Virtuoso.6.18.000 integrates SPECTRE 18.10.077, and if I run simulation using that version instead of SPECTRE 23, the problem disappears.

    Sure, I have also attached my script and netlist for your reference, it is a very simple circuit with 2 devices.

    Thank you,

    Huang


    // hvtFET_cap_on_gate.scs

    simulator lang=spectre
    global 0

    include "******.lib.scs" section=tt

    parameters vd_value = 1
    parameters vg_value = 1

    parameters cap_value = 1f

    V_I_cin (g cin) vsource type=dc dc=0
    cap_gate (cin cout) capacitor c=cap_value
    V_I_g (cout mos_g) vsource type=dc dc=0
    nMOS_hvt (d_hvt mos_g s b) n_11_lphvt l=fet_length w=fet_width  //l(36n~18u), w(108n~45u)
    Vd (d 0) vsource type=dc dc=vd_value
    Vd_hvt (d d_hvt) vsource type=dc dc=0

    Vg (g 0) vsource type=pwl wave=[0 0 10n vg_value 20n vg_value]

    Vs (s sb) vsource type=dc dc=0
    Vb (b sb) vsource type=dc dc=0
    V_I_sb (sb 0) vsource type=dc dc=0

    parameters fet_width = 840n fet_length = 90n

    simulatorOptions options reltol=1e-6 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 sensfile="../psf/sens.output" \
        checklimitdest=psf saveahdlvars=all

    modelParameter info what=models where=rawfile
    element info what=inst where=rawfile
    outputParameter info what=output where=rawfile
    designParamVals info what=parameters where=rawfile
    primitives info what=primitives where=rawfile
    subckts info what=subckts  where=rawfile
    saveOptions options save=allpub

    save nFET:all


    // hvtFET_cap_on_gate.scs
    alias measurement tranmeas{
        run tran(stop=16n, minstep=0.001p, maxstep=1u, writefinal="spectre.fc", maxiters=100, autostop=yes, method=trapgear2)
    }

    {
        foreach cap_value from {1a, 0.5f, 1p}{
            run tranmeas()
        }
    }
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett 10 months ago in reply to NightOwlPoppy
    NightOwlPoppy said:
    I found that Virtuoso.6.18.000 integrates SPECTRE 18.10.077

    Er, no it doesn't. There's no requirement to use those versions together. You can use IC6.1.8 with SPECTRE 23.1 - I just did (although my experiments where with the latest sub-versions of each, although I'd be surprised if it doesn't work with older versions too).

    Your MDL script as shown can't work - the syntax is wrong. It should be:

    // hvtFET_cap_on_gate.mdl
    alias measurement tranmeas{
    run tran(stop=16n, minstep=0.001p, maxstep=1u, writefinal="spectre.fc", maxiters=100, autostop='yes, method='trapgear2)
    }

    //{
    foreach cap_value from {1a, 0.5f, 1p}{
    run tranmeas()
    }
    //}

    I highlighted the differences.

    Note too that setting minstep is nearly always a bad idea, and you typically do not need to set maxstep either (that's less of a bad idea, just usually unnecessary). In this case the MDL script is not doing anything that a native sweep in the spectre netlist could do.

    I was able to directly open the raw directory and then plot from the tranmeas-foreach results and get families of each waveform plotted. I could even (if I really wanted to) descend into the directory and open all three tran results individually and plot from those.

    In case it matters, please:

    1. Check your MDL syntax - presumably it wasn't what you posted
    2. Share the output of "viva -W" and "spectre -W" so we know which precise versions you are using.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • NightOwlPoppy
    NightOwlPoppy 10 months ago in reply to Andrew Beckett

    Hi Andrew,

    Thank you for pointing out the syntax errors. But the MDL script posted is exactly what I used for simulation. I have corrected the syntax errors one by one, but still, every time only 1 waveform can be displayed. I don't think the syntax errors are causing the viva issue because I have been using like that for months (though it may affect the simulation results). 

    Interestingly, I discovered it by accident that, in the above MDL script, when I added a DC analysis, all DC results can be displayed correctly, while the transient waveforms still only show one. These phenomena appear consistently across different MDL simulation files.

    Yea it might not accurate I said "Virtuoso 6.18 integrates SPECTRE 18", it is because i'm using a script provided by my colleague that set enviroment variables for both Virtuoso 6.18 and SPECTRE 18 simultaneously. At present, this combination works well and allows me to proceed my current work. But sure I also share you the tool versions I'm using as follow. 

    viva -W: sub-version IC6.1.8-64b.83
    spectre -W: sub-version 18.1.0.077 (no plotting problem) and sub version 23.1.0.242.isr1 (only plots 1 waveform for tran analysis)

    For reference, my old working environment was: viva: IC6.1.7-64b.78; spectre: 15.1.0.257


    Thank you,

    Huang

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • NightOwlPoppy
    NightOwlPoppy 10 months ago in reply to Andrew Beckett

    Hi Andrew,

    Thank you for pointing out the syntax errors. But the MDL script posted is exactly what I used for simulation. I have corrected the syntax errors one by one, but still, every time only 1 waveform can be displayed. I don't think the syntax errors are causing the viva issue because I have been using like that for months (though it may affect the simulation results). 

    Interestingly, I discovered it by accident that, in the above MDL script, when I added a DC analysis, all DC results can be displayed correctly, while the transient waveforms still only show one. These phenomena appear consistently across different MDL simulation files.

    Yea it might not accurate I said "Virtuoso 6.18 integrates SPECTRE 18", it is because i'm using a script provided by my colleague that set enviroment variables for both Virtuoso 6.18 and SPECTRE 18 simultaneously. At present, this combination works well and allows me to proceed my current work. But sure I also share you the tool versions I'm using as follow. 

    viva -W: sub-version IC6.1.8-64b.83
    spectre -W: sub-version 18.1.0.077 (no plotting problem) and sub version 23.1.0.242.isr1 (only plots 1 waveform for tran analysis)

    For reference, my old working environment was: viva: IC6.1.7-64b.78; spectre: 15.1.0.257


    Thank you,

    Huang

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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