Print Command in NgSpice

  • Fahim

    Fahim - 2013-04-02


    When we use print command as print out then it will display the value of node at particular time t

    Is there any relation between two time like after what time step we will get node value. Or NgSpice just randomly calculate it. Please let me know if there is any relation between two time.


  • Holger Vogt

    Holger Vogt - 2013-04-03


    if you need equidistant time steps, you may use the 'linearize' command, provided your tran command
    tran Tstep Tstop
    has a sufficient small TStep.

    Time deltas (steps between to sequential time-value pairs) are not calculated randomly. They depend on the change rate of signals in devices, and on breakpoints set e.g. by your input signal.

    See e.g.

    a nice eplanation for HSPICE is found here (different for ngspice though)

    A breakpoint, e.g. the start time of a pulse, will inforce a time point. After that, the delta is increased slowly. Maximum delta is given by TStep.

    If you want to find out yourself, have a look at ckt->CKTdelta in dctran.c, which is exactly the delta between two consecutive time steps.


    • gforsey

      gforsey - 2014-01-22

      In a .tran analysis, is there a way to force the raw file data output to only be at tstep intervals?
      Spectre has the .option printstep=yes
      SmartSpice has the .option interp
      My circuit is driven by ~900MHz rf carrier so I want the internal timestep calculations to be as fine as necessary to get the accuracy, but only want to printout at tstep times. Otherwise the dataset becomes far too large even with only those nodes ~50 and currents I want selected by .save statements when the internal timestep hovers around 10ps.
      .tran 1n 300u
      ought to produce 300k values/node, but this grows to 30M values/node.

      Regard, Gary

  • Holger Vogt

    Holger Vogt - 2014-01-22


    in batch mode (-b -r command line options) I do not see a means to reduce the amount of data. This would be a nice 'feature request'.

    In control mode there is a way. If you add a control section similar to:

    save aa bb cc
    run ; simulates and generates plot tran1 with lots of data
    linearize aa bb cc ; linearizes and generated a new plot tran2
    destroy tran1.aa ; optinally removes the original simulation data
    write outfile aa bb cc

    you have a data set with equidistant time steps (based on TSTEP of the .tran command) in the rawfile 'outfile'. The disadvantage of this approach is that to be able to print, all data have to be saved in main memory. So you need lots of memory and probably a 64 bit ngspice executable to handle the amount of data.


  • gforsey

    gforsey - 2014-01-23

    Thanks Holger.
    Yes its working. Still effectively running ngspice in -b (batch mode) but having a control block to linearize now writes out a smaller rawfile at those tstep intervals, but as you say I do need the 64bit machine with lots of memory rather than my laptop. A disadvantage is that I do not see the rawfile building as everything is only written out at the end.
    That nice feature request would be to have an option to apply the linearize function on the fly.

  • Holger Vogt

    Holger Vogt - 2014-02-01


    there is now the option 'interp' available in the git sources, which stores data only at fixed time intervals during transient simulation, determined by TSTEP.


    • Gnrfaf Akmpss

      Gnrfaf Akmpss - 2016-11-24

      Hello Holger,
      I tried to use this option but I am not getting the expected results. I am using the most recent windows executable to install it (ngspice-26 Jan 23 2014).
      Might I be using it wrong? I added the interp flag to the .options line and set tstep to a higher value than tmin but when I print or write a raw file the results are stored at around tmin intervals.


  • jlu

    jlu - 2014-04-23

    I have a similar question. Is it possible for ngspice to print out only the value at a fixed time (such as the middle time or the last two time steps) during transient simulation?

  • Robert Larice

    Robert Larice - 2014-04-24

    perhaps this will do as an example:

    print last timestep of a tran simulation
    * ngspice thisfile.cir
    V1 1 0 DC=1V
    R1 1 2 1k
    C1 2 0 1u 
    tran 10u 1ms uic
    plot v(2)
    let k = length(time) - 1
    print time[k] v(2)[k] v1#branch[k]
  • jlu

    jlu - 2014-04-29

    Thanks Robert.


Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.

No, thanks