Connect with us

Spice, transient analysis, Gaussian excitation

Discussion in 'Electronic Design' started by Michael Zedler, Mar 20, 2007.

Scroll to continue with content
  1. Hello,

    For a transient simulation I want to specify the input signal as, e.g.,
    a modulated Gaussian pulse. How can I do that? I'm using MacSpice.

    Background:
    My aim is to simulate a lumped element circuit that models 'free space'
    and then visualize wave propagation. So space is discretized into cubes,
    each modelled e.g. by http://tinyurl.com/2nqy88 and then 100*100*100
    cells create the simulation volume. I've created the respective netlist
    using a script which works nicely.

    So now I want to impress between two nodes an input signal that is a
    modulated gaussian pulse and 'measure' the voltages across the circuit
    in order to get the data for visualizing wave propagation.

    Any pointers welcome!

    Michael
     
  2. Tom Bruhns

    Tom Bruhns Guest


    (?? previous attempt at a reply didn't show up...sorry if this ends up
    being a duplicate.)

    I assume by "modulated gaussian pulse" you mean something of the form
    A*sin(2*pi*f*t)*exp(-k*(t-t0)^2)). If that's the case, you can do it
    in SPICE3-based simulators with the B nonlinear dependent source
    component. Dunno if your MacSpice has that or not. It's easy to
    generate a variable that's proportional to time: the current through
    an inductor connected to a constant voltage source, or the voltage
    across a capacitor connected to a constant current source. Start the
    inductor current or capacitor voltage with zero initial condition.

    Cheers,
    Tom
     
  3. Many thanks, MacSpice supports the 'B' source type. As I'm a complete
    neophyte to text-based spice (used ADS/Spectre with a GUI before), is
    the following input file ok?

    --
    nice little test

    ..control
    tran .5ns 100ns
    plot v(1) v(3)
    ..endc

    Bin 1 0
    V=sin(v(10)*2*3.141*.7e9)*exp(-v(10))*exp(-(v(10)-15e-9)*(v(10)-15e-9)*1e17)
    l1 1 2 10n
    l2 2 3 10n
    c1 2 0 10p
    r1 3 0 500

    ..ic v(10)=0
    Itime 10 0 dc -1
    Ctime 10 0 1
    Rtime 10 0 1T
    ..end
    --

    Another question, for the real simulation which has some 24 million
    nodes, I want to write the transient voltages of some 1 million nodes to
    text files for then postprocessing them with perl/awk and then matlab.
    What is the best way to write out the data, so that a node with name
    'name' is written to 'name.transient'? '.print' and '.save' don't seem
    to take an argument specifying where to write to ;-/

    Best,
    Michael
     
  4. found it, it's the 'write' command.

    Michael
     
  5. Tom Bruhns

    Tom Bruhns Guest


    Yeah, that seems to work for me in LTSpice. I think you got it. As
    you can see, the B component lets you do a really wide range of
    stuff. LTSpice adds some other functions, too, that can be useful,
    like random. And I see you found out how to write a file.

    Cheers,
    Tom
     
  6. Hi Tom,

    Thanks for your help. Moving from the trivial first test case slowly to
    my real problem I encounter two problems:
    1) singular matrix errors (that I hopefully correctly cured by
    inserting 1TOhm resistors to ground)
    2) an instability that leads to an aborting TRAN simulation. Well,
    theory says that the circuit simulation must be stable as only passive
    components are used... but, hey, we're in numerical approaches ;-) Any
    idea what to do in this case?

    Michael

    --
    One Dimensional wave propagation

    ..control
    tran 1ns 100ns
    * plot propagating wave
    plot v(1)-v(2) v(3)-v(4) v(5)-v(6) v(7)-v(8) v(9)-v(10) v(11)-v(12)
    ..endc

    ..subckt zseries 1 3
    l 1 2 4n
    c 2 3 6.3325p
    r 2 0 1T
    ..ends

    ..subckt yparallel 1 2
    l 1 2 4n
    c 1 2 6.3325p
    ..ends

    ..subckt acell 1 7 2 8
    Xy1 13 17 yparallel
    Xy2 14 17 yparallel
    Xy3 15 17 yparallel
    Xy4 16 17 yparallel

    Xz1p 1 13 zseries
    Xz1n 7 16 zseries
    Xz5p 5 16 zseries
    Xz5n 11 15 zseries
    Xz4p 4 16 zseries
    Xz4n 10 14 zseries
    Xz2n 8 14 zseries
    Xz2p 2 15 zseries
    Xz6n 12 14 zseries
    Xz6p 6 13 zseries
    Xz3p 3 15 zseries
    Xz3n 9 13 zseries

    * short circuit for periodic continuation along two dimensions
    r1 3 4 1f
    r2 9 10 1f
    r3 5 6 1f
    r4 11 12 1f

    * avoid singular matrices
    ra 7 0 1T
    rb 8 0 1T
    rc 9 0 1T
    rd 10 0 1T
    re 11 0 1T
    rf 12 0 1T
    rf 17 0 1T
    ..ends

    * helper stuff to get v(100000000) as the time variable
    ..ic v(100000000)=0
    Itime 100000000 0 dc -1
    Ctime 100000000 0 1
    Rtime 100000000 0 1T

    X1 1 2 3 4 acell
    X2 3 4 5 6 acell
    X3 5 6 7 8 acell
    X4 7 8 9 10 acell
    X5 9 10 11 12 acell


    Bin 1 2
    V=sin(v(100000000)*2*3.1416*1.5e9)*exp(-v(100000000))*exp(-(v(100000000)-15e-9)*(v(100000000)-15e-9)*3.1416*3.1416/2*1e16)
    ..end
    --
     
  7. Oh dear...
    Avoids floating nodes, which have an undefined voltage.
    Ahhmm.. Just off the cuff inspection, those 1 femto ohm resisters are going
    to cause you big trouble indeed. Well on the way to creating a singular
    matrix.

    Spice wont handle the numerical precision of even 1 f ohm (1e-15) to 1 ohm,
    let alone to 1 Tohm. You need to make sure that component values don't span
    more than about 12-13 decimal digits in range.
     
  8. Guest

    The chance of MacSpice handling this problem, and producing useful
    results is negligible. It is the wrong tool for this job.

    Charles
     
  9. joseph2k

    joseph2k Guest

    Gosh, i was going to suggest a peice-wise-liner (PWL) approximation. It
    could be written with a script, and you could study the value of the coarse
    to fine adjustments of the script created waveform on the simulation
    result.
     
  10. Hm... Can you suggest a better approach? In case you mean that I'd have
    to use some commercial Spice - no problem, I'd be able to let another
    department run the job. Or do you mean that *in general* a transient
    simulation with 24e6 nodes (but containing only passive elements) is
    impossible?

    I'll do intermediate size problems before the full 3D one, anyway. I'll
    see when MacSpice chokes ;-)
    1D propagation: 24e2 nodes
    2D propagation: 24e4 nodes

    Cheers,
    Michael
     
  11. Not impossible, but expensive. Standard commercial spices just are not
    designed for matrixes that large. Thee are fast out there that quote 1B
    transistor handling, but they cost two arms and a leg.
     
  12. Guest

    Yes, use a piece of software designed for modelling e/m propagation in
    free space, not one designed for modelling integrated circuits. Ansoft
    is probably your best starting point.
    I would expect it to be impossible unless your Spice has a memory
    address space of more than 32bits which, AFAIK, few do. If it does you
    will find that it is extremely difficult to run the simulation because
    the solution/integration method used by a traditional Spice doesn't
    work well for inductances (they are not common elements in ic design)
    Let us know how you get on.

    Best of luck

    Charles
     
Ask a Question
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Electronics Point Logo
Continue to site
Quote of the day

-