Skip to content

Verilog-A Laplace Transform Analysis

Introduction

Verilog-A is widely used for analog and mixed-signal behavioral modeling, especially when simulating circuits that include dynamic elements such as filters, amplifiers, sensors, or control systems. Many of these blocks are most efficiently expressed as linear time-invariant (LTI) systems, which are typically modeled using Laplace transforms.

Verilog-A provides built-in Laplace transform functions that allow engineers to define complex transfer functions directly in the s-domain, avoiding the need for differential equation implementation. This enables accurate frequency-domain behavior and efficient transient simulation.

Why Use Laplace in Verilog-A

Instead of writing differential equations manually, Laplace operators give several key advantages:

  • Direct implementation of transfer functions
  • Cleaner and more intuitive behavior for LTI systems
  • Suitable for AC, transient, and stability simulations
  • Allows efficient modeling of higher-order dynamics

Common applications include:

Laplace Transform Functions in Verilog-A

Available Built-In Functions

Function Use Case
laplace_nd(input, num, den) Numerator/denominator polynomial form
laplace_zp(input, zeros, poles, gain) Zero/pole form
zf(z-domain operators) Digital / discrete filter modeling

The most widely used is laplace_nd().

laplace_nd()

laplace_nd( input_signal , {numerator_coeffs} , {denominator_coeffs} )

Where:

  • input_signal : The signal passed through the LTI system
  • numerator_coeffs : Polynomial in descending powers of s
  • denominator_coeffs : Polynomial in descending powers of s

Example polynomial format:

$$H(s) = \frac{b_0 s^n + b_1 s^{n-1} + … + b_n}{a_0 s^m + a_1 s^{m-1} + … + a_m}$$

First-Order Low-Pass Filter

Transfer function:

$$H(s) = \frac{1}{RCs + 1}$$

Verilog-A code:

parameter real R = 1k;
parameter real C = 1n;

V(out) <+ laplace_nd(V(in), {1}, {R*C, 1});

First-Order High-Pass Filter

$$H(s) = \frac{RCs}{RCs + 1}$$

V(out) <+ laplace_nd(V(in), {R*C, 0}, {R*C, 1});

Zeros can be represented using polynomial coefficients.

Second-Order Band-Pass Filter

$$H(s) = \frac{s}{s^2 + \frac{\omega_0}{Q}s + \omega_0^2}$$

parameter real w0 = 1e6; // center radian frequency
parameter real Q  = 10;

V(out) <+ laplace_nd(V(in),
                     {0, 1},
                     {1, w0/Q, w0**2});

laplace_zp()

More intuitive for higher-order systems:

V(out) <+ laplace_zp(V(in),
                     {z1, z2},         // zeros
                     {p1, p2, p3},     // poles
                     gain);

This method is useful when designing filters from pole-zero locations.

Lead compensator

V(out) <+ laplace_zp(V(in),
                     {-1e3},
                     {-1e4},
                     10);

Predistortion and Stability Applications

Laplace blocks appear often in models for:

  • PLL loop filters
  • Compensation networks
  • Control loops in power converters
  • RF linearization structures

Example: Phase lead/lag shaping to ensure stability in feedback amplifiers.

Implementation in a Complete Model

`include "constants.vams"
`include "disciplines.vams"

module low_pass_filter(in, out);
    input in;
    output out;
    electrical in, out;

    parameter real R = 1k;
    parameter real C = 1n;

    analog begin
        V(out) <+ laplace_nd(V(in), {1}, {R*C, 1});
    end
endmodule

This model supports both AC sweep and transient signals seamlessly.

Simulation & Convergence Considerations

Requirement Explanation
Continuous systems only Laplace cannot model switching/nonlinear behavior
DC operating point must exist DC gain must be finite
No discontinuities allowed Newton-based solvers require smoothness
Passive stability is important Poor pole placement can cause oscillations

Avoid Pure Integrators without DC path

// Bad: s-domain integrator without leakage leads to undefined DC
V(out) <+ laplace_nd(V(in), {1}, {0, 1});
  • Add conductance to ground:
I(out) <+ 1e-12 * V(out);

This maintains a valid DC reference.

Best Practices Summary

Best Practice Reason
Prefer laplace_nd() for compact models Direct coefficient control
Use laplace_zp() for intuitive filter design Easier specification of poles/zeros
Keep high-frequency poles realistic Avoid artificial gain boosting
Ensure valid DC gain conditions Prevent DC convergence failure
Combine with physical modeling where needed Hybrid accuracy + abstraction

Laplace functions serve as a bridge between mathematical transfer functions and circuit simulations.