Skip to content

Verilog-A Noise Modeling

Verilog-A provides powerful built-in constructs for representing noise in compact models, components, and behavioral circuit blocks.

Noise affects nearly all aspects of analog and RF design, including:

  • Signal-to-Noise Ratio (SNR)
  • Bit-Error Rate (BER)
  • Phase noise in oscillators and PLLs
  • Gain and linearity in RF amplifiers
  • Resolution of ADCs and DACs
  • Sensor sensitivity and stability

Accurate noise modeling allows early design optimization and prevents silicon failures that arise from noise-dominated circuits.

Fundamental Noise Types

Noise originates from physical processes within semiconductor devices. The most significant types include:

Noise Type Physical Source Frequency Response
Thermal Noise Random thermal agitation of carriers White (flat spectrum)
Shot Noise Quantized charge flow across junctions White
Flicker Noise (1/f) Carrier trapping & detrapping ↑ at lower frequencies
Burst / Popcorn Noise Random telegraph signals Discrete jumps
Avalanche Noise Impact ionization in diodes Depends on bias

Verilog-A supports behavioral modeling of all of these phenomena.

Noise Modeling in Verilog-A

Verilog-A enables noise contributions using built-in functions. These functions do not affect DC operating point but appear in:

  • Noise analysis
  • AC analysis
  • Transient noise simulations (if enabled)

Built-in Noise Generators

Function Description
white_noise(pwr, "label") Generates white noise with power spectral density
flicker_noise(pwr, exp, "label") Models frequency-dependent flicker noise
noise_table() Creates noise based on measured data

The "label" must be unique per noise source for correct attribution in analysis reports.

Adding Noise to Device Models

Noise must be associated with a physical current or voltage contribution.

Example — Diode Noise

I(d,a) <+ Is * (limexp(V(d,a)/Vt) - 1);
I(d,a) <+ white_noise(2*`P_Q*abs(I(d,a)), "shot_noise"); // noise addition

White noise here corresponds to shot noise in diodes and BJTs:

$$i_n^2 = 2qI$$

Example — Flicker Noise

I(d,a) <+ flicker_noise(Kf*abs(I(d,a))**Af, 1.0, "flicker");

Parameters:

  • Kf : flicker noise coefficient
  • Af : bias exponent

Compact MOSFET Noise Example

Advanced models (BSIM, PSP, HiSIM) combine multiple noise mechanisms:

I(d,s) <+ white_noise(gamma*4*`P_K*$temperature*gm, "channel_noise");
I(g,s) <+ white_noise(delta*4*`P_K*$temperature*gds, "gate_noise");
I(d,s) <+ flicker_noise(Kf*(gm**2), 1.0, "flicker_noise");

Captures:

  • Channel thermal noise
  • Gate-induced noise
  • 1/f behavior

Noise in Passive Components

Thermal noise in resistors is given by:

`include "constants.vams"
I(p, n) <+ white_noise(4*`P_K*$temperature/R, "R_thermal");

Which models Johnson-Nyquist noise:

$$\overline{i_n^2} = \frac{4kT}{R}$$

Transient Noise Simulation

Some simulators allow time-domain random noise enabling:

  • Eye-diagrams
  • BER prediction
  • Clock jitter
  • Oscillator phase noise approximation

Example noise injection:

V(out) <+ white_noise(N0, "transient_noise");

Transient noise simulations must be explicitly enabled in most tools.

Table-Driven Noise Modeling

When lab characterizations are available:

NoisePSD = noise_table(freq_vector, noise_vector);
I(out) <+ NoisePSD;

Useful in:

  • RF front-ends
  • MEMS microphones
  • CMOS sensors

Complete Example: Noisy Resistor

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

module noisy_resistor(p, n);
    inout p, n;
    electrical p, n;
    parameter real R = 1k from (0:inf);

    analog begin
        V(p,n) <+ R * I(p,n);
        I(p,n) <+ white_noise(4*`P_K*$temperature/R, "thermal_noise");
    end
endmodule

This model fully supports:

  • DC
  • AC
  • Noise
  • Transient (if enabled)

Modern Noise Challenges

Technology Trend Noise Concern
FinFET, GAA FET Stronger flicker noise influence
Ultra-low power IoT Noise limits system sensitivity
RF/mmWave CMOS Gate-induced noise dominates
Quantum & cryogenic computing New low-T noise physics

Noise modeling is increasingly critical as circuits approach physical and thermal limits.