Verilog-A Interaction with SIMetrix Features

In this topic:

Real-Time Noise

Real-time noise, while not unique to SIMetrix, remains a feature that can only be found on a few simulators. Because of this, standards such as Verilog-A do not account for it or support it in any way. The Verilog-A LRM simply says that transient noise should be implemented by the $random function.

The SIMetrix Verilog-A compiler fully supports the real-time noise feature and the regular small-signal noise analog operators such as white_noise and flicker_noise will correctly create noise signals in transient analysis with real time noise enabled without requiring any special support in the Verilog-A code.

Transient Snapshots

In general it is best to assume that transient snapshots will not work with Verilog-A devices. They will in fact work with some depending on what analog operators and/or system functions are used.

Pseudo-Transient Analysis

Pseudo transient analysis will work correctly with Verilog-A devices provided they are not energy sources. Put another way, if all output sources are zero when all input probes are zero, PTA will work. If there are any sources that are non-zero with zero inputs then PTA performance may be compromised. In this situation you should use the $simparam("sourceScaleFactor") system function to scale energy producing outputs. For example a 5V fixed voltage source should look like this:

V(n1,n2) <+ 5*$simparam("sourceScaleFactor") ;

$simparam("sourceScaleFactor") returns a value from 0.0 to 1.0 representing the supply ramp in pseudo transient as well as DC source stepping.

It would be possible for the compiler to automatically add this. Currently this isn't done as this will not necessarily be beneficial if the device is not energy producing and could lead to a singular matrix condition in some cases. For this reason we currently put the onus on you the user to define PTA behaviour.