Skip to content

Verilog-A Behavioral modeling

Writing Continuous-Time Equations

Analog systems operate in continuous time, and Verilog-A provides a natural syntax for expressing relationships between voltages, currents, and internal variables. Continuous-time modeling begins with the “analog” block, where equations resemble those found in circuit theory and differential calculus.

The “<+” Contribution Operator

The most essential construct is the contribution operator <+, which injects a voltage or current into the analog network. For example:

V(out) <+ gain * V(in);

This expresses a linear relationship similar to an ideal voltage-controlled voltage source. Because analog operators contribute directly to the nodal analysis matrix, the simulator ensures Kirchhoff’s laws automatically hold.

Algebraic Equations

Algebraic relationships between signals define memoryless components or static transfer functions. Examples include:

  • voltage scaling
  • comparators (with limitations)
  • linear/nonlinear static functions such as tanh, abs, or polynomial models

For example:

I(p,n) <+ g * V(p,n);

represents an ideal resistor where current is proportional to voltage.

Nonlinear Functions

Verilog-A includes many built-in operators and functions (sin, exp, pow, atan, etc.) to define nonlinear analog behavior. These allow for:

  • device-like I–V curves
  • exponential diode-like behavior
  • limiter or saturation models

Continuous‑time equations offer the flexibility to replicate analog schematic equations directly into code, making Verilog-A intuitive for circuit designers familiar with classical analysis.

Differential Equations for Analog Systems

While algebraic equations capture instantaneous relationships, analog systems with memory require differential equations. These define how system variables evolve over time and are central to modeling:

  • filters
  • oscillators
  • sensors
  • feedback systems
  • energy-storing elements

In Verilog-A, differential equations are expressed using operators such as:

ddt() – Time Derivative

The derivative operator ddt(x) returns the time derivative dx/dt. For example, modeling a capacitor:

I(p,n) <+ C * ddt(V(p,n));

This matches the fundamental capacitor equation:
i = C dv/dt

idt() – Time Integral

The integral operator idt(x, initial) integrates a signal over time and is useful for modeling accumulators or custom states.

Example for an integrator:

V(out) <+ gain * idt(V(in), 0);

Higher-Order Systems

Second and higher-order systems can be expressed using multiple derivatives or internal state variables. For example, a mass‑spring‑damper system:

F(node) <+ m * ddt(ddt(x)) + b * ddt(x) + k * x;

This allows engineers to model mechanical or electro‑mechanical systems as easily as electrical circuits.

State Variables

For complex models, internal real variables track the system’s evolving behavior:

real x;
analog begin
    x = idt(f - k*x, 0);
    V(out) <+ x;
end

This technique allows designers to build behavioral models of:

  • PLL loops
  • ΔΣ modulators
  • controlled oscillators
  • sensor front‑ends

Differential equation modeling is the backbone of high‑accuracy analog abstraction.

Modeling Ideal and Non‑Ideal Components

One of the first steps in Verilog-A learning is modeling basic passive components. This builds intuition and teaches how physical laws are translated into code.

Ideal Resistor

The simplest ideal component is a resistor:

`include "discipline.vams"
module resistor(p, n);
    inout p, n;
    electrical p, n;
    parameter real R = 1k;

    analog begin
        I(p,n) <+ V(p,n) / R;
    end
endmodule

This directly implements Ohm’s law.

Ideal Capacitor

I(p,n) <+ C * ddt(V(p,n));

Ideal Inductor

V(p,n) <+ L * ddt(I(p,n));

These models are compact and mathematically exact.

Modeling Non‑Ideal Components

Real physical components include imperfections that affect performance. Verilog-A allows you to incorporate these effects easily.

Non‑Ideal Resistor

A non‑ideal resistor may include:

  • temperature dependence
  • parasitic capacitance
  • noise contributions

Example:

I(p,n) <+ V(p,n)/R * (1 + alpha*(temperature - 300));
I(p,n) <+ Cpar * ddt(V(p,n));

Non‑Ideal Capacitor (ESR + ESL)

I(p,n) <+ C * ddt(V(p,n));
V(p,n) <+ ESR * I(p,n) + ESL * ddt(I(p,n));

Non‑Ideal Inductor (winding resistance + core loss)

V(p,n) <+ L * ddt(I(p,n)) + Rw * I(p,n);

These enhancements create much more realistic simulation results in:

  • RF circuits
  • sensor interfaces
  • switched-capacitor systems
  • power electronics

Noise Modeling

Verilog-A supports noise sources using built‑in functions like:

I(p,n) <+ white_noise(4 * k * temperature / R, "thermal");

This enables high‑accuracy modeling for:

  • low‑noise amplifiers
  • ADC reference systems
  • oscillators and PLLs
  • sensor front‑ends

More about noise-modeling in : Verilog A noise modeling