Oscillators are fundamental to modern electronics. They generate clock signals in digital systems, drive RF circuits in communication systems, and enable timekeeping in microcontrollers. But if you’ve ever tried simulating an oscillator in SPICE, you may have run into a perplexing issue: the circuit doesn’t oscillate—even though it works in theory and might even function on a physical breadboard. This discrepancy can be deeply frustrating.
This article explains why your SPICE oscillator might not be oscillating and walks you through practical, technically sound methods to fix the issue. Whether you’re using LTspice, PSpice, Ngspice, Qspice or another simulation tool, the principles are broadly applicable.

Understanding the Problem: Why Oscillators Fail in SPICE
SPICE simulators are designed to analyze circuit behavior under idealized mathematical conditions. This “perfection” becomes a problem when simulating oscillators, which rely on imperfections—like noise, asymmetry, and startup transients—to begin oscillating.
SPICE Searches for a Stable DC Operating Point
Before any transient simulation begins, SPICE solves for a steady-state DC operating point. If your oscillator circuit is symmetric and lacks a source of perturbation, the simulator may settle on a static solution where no oscillation occurs. This perfectly balanced condition is mathematically valid but physically unrealistic.
Oscillation Requires a Kick to Start
Real-world oscillators don’t start by themselves from perfect stillness. They depend on thermal noise, manufacturing mismatches, or startup voltage fluctuations to push the system out of equilibrium. Since SPICE doesn’t simulate these by default, you have to deliberately inject some form of disturbance.
Idealized Components Hide Crucial Non-Linearities
Many oscillator circuits use the non-linear characteristics of real components to stabilize amplitude. For instance, a Wien Bridge oscillator might use diodes or a filament bulb for automatic gain control. If you use ideal op-amp models or transistor models without these non-linearities, the simulator won’t behave like the physical circuit.
The Barkhausen Criterion: A Theoretical Framework
Before diving into fixes, it’s helpful to revisit the Barkhausen criterion, which governs sustained oscillation in linear systems:
- Loop Gain Must Equal or Exceed Unity: The product of amplifier gain (A) and feedback factor (β) must be at least one (|βA| ≥ 1) for startup. To sustain oscillation, it should stabilize at exactly unity.
- Phase Shift Must Be a Multiple of 360°: The signal must reinforce itself after one loop, which requires the total phase shift to be 0° or 360°.
Meeting both conditions is necessary but not sufficient. Real-world oscillators also rely on non-linear mechanisms to limit amplitude and avoid runaway gain.
In SPICE, even if you design a circuit that theoretically meets these conditions, it may not start oscillating unless certain additional factors are addressed.
Causes of Oscillation Failure in SPICE Simulations
1. Lack of Startup Perturbation
In SPICE, without any external disturbance, your oscillator remains stuck in a stable equilibrium. This is the most common reason oscillators fail to start.
Solution: Inject a small disturbance using one of the following:
- A
PULSE
orPWL
voltage source on a sensitive node - The
.IC
directive to set initial voltages on capacitors or currents through inductors - Behavioral noise sources (e.g., white noise) if supported
2. Time Step Too Large
If your simulation uses a large time step, it may completely miss the initial oscillation cycles, especially for high-frequency or high-Q circuits.
Solution: Set a small dTmax
in your .TRAN
statement. As a rule of thumb, make it 1/10th to 1/100th of the expected oscillation period.
.TRAN 1n 10m 0 100n
3. Ideal or Oversimplified Component Models
If your amplifier, transistor, or crystal oscillator is modeled too simplistically, critical startup behavior and non-linear amplitude control may be missing.
Solution:
- Use manufacturer-provided models instead of generic built-in ones.
- For op-amp based oscillators, model gain limiting using diodes, JFETs, or behavioral elements.
- For crystal oscillators, include drive-level dependence and internal parasitics.
4. Circuit Symmetry and Floating Nodes
Perfect symmetry can lock the simulator into a non-oscillating state. Additionally, if any node lacks a DC path to ground, convergence problems or failure to start are almost guaranteed.
Solution:
- Introduce intentional asymmetry: vary one resistor slightly or apply a tiny offset voltage.
- Ensure all nodes have a DC path to ground, possibly by adding high-value resistors where needed.
5. Incorrect Biasing
If your circuit includes op-amps or active devices, ensure proper biasing. A common mistake is using single-supply op-amps without implementing a virtual ground.
Solution:
- Use a voltage divider and buffer to generate a virtual ground.
- Run an
.OP
(Operating Point) analysis to check all node voltages.
6. Unbounded or Excessive Loop Gain
Too much gain can cause the waveform to grow uncontrollably and clip against supply rails, leading to distorted or square wave outputs.
Solution:
- Implement automatic gain control (AGC) using non-linear elements.
- Use behavioral functions to model amplitude limiting.
Techniques to Make Oscillators Work in SPICE
Here’s a detailed strategy for designing oscillator simulations that work reliably.
Use Explicit Initial Conditions
Use .IC
to force initial voltage or current conditions.
.IC V(n1)=0.05
.TRAN 1n 10m UIC
The UIC
option skips the DC operating point calculation, using your initial conditions directly.


Ramp the Power Supply
A simple and effective method is using a piecewise linear (PWL) voltage source to simulate real-world power-up.
V1 Vcc 0 PWL(0 0 1u 5)
This gradual ramp can kick the circuit out of its static state.
Apply a Transient Pulse
Add a narrow voltage or current pulse at a critical node.
Vstart n1 0 PULSE(0 1 0 1n 1n 1us 2us)
Even a brief disturbance is often enough to initiate oscillation.
Add Noise Sources
If your SPICE variant supports it, use a behavioral source to inject noise:
B1 n1 0 V=white(1)
This mimics thermal or shot noise that initiates oscillation in real circuits.
Addressing Convergence Issues
Oscillator circuits are often non-linear and can challenge SPICE’s numerical solvers.
Use .OPTIONS
to tune convergence parameters:
.OPTIONS RELTOL=0.01 ABSTOL=1n VNTOL=1u GMIN=1n ITL1=500
- RELTOL: Relative error tolerance
- ABSTOL/VNTOL: Absolute current/voltage tolerance
- GMIN: Minimum conductance, helps stabilize matrices
- ITL1: Iteration limit for DC analysis
For particularly stubborn circuits, try .NODESET
to suggest initial values without fixing them:
.NODESET V(n1)=1
Using AC Analysis for Oscillator Stability Verification
While transient analysis shows whether a circuit will oscillate, AC analysis can predict whether it should oscillate.
Steps:
- Break the feedback loop at a low-impedance point (e.g., op-amp output).
- Insert an AC voltage source.
- Run
.AC
analysis to measure gain and phase.
Check if:
- Loop gain is >1 at any frequency.
- Phase shift equals 0° or 360°.
This pre-simulation verification can save time, especially for high-Q or crystal-based oscillators.
Special Case: Simulating High-Q Crystal Oscillators
Crystal oscillators are exceptionally high-Q and take a long time to stabilize, sometimes requiring milliseconds—or even seconds—of simulated time.
Tips for Crystal Oscillator Simulation:
- Use accurate models that include shunt capacitance and series RLC.
- Inject an initial voltage across the crystal to promote startup.
- Limit the simulation time step aggressively.
- Consider modeling drive-level dependence if startup amplitude varies with load.
Troubleshooting Checklist
Category | Checklist Item |
---|---|
Design Validation | Does the loop gain > 1 and phase shift = 360° at the target frequency? |
Is every node correctly biased and connected? | |
Startup Conditions | Have you added .IC , .NODESET , or a startup pulse? |
Is the power supply ramped using a PWL source? | |
Component Models | Are you using realistic, non-ideal models for transistors and op-amps? |
Is AGC implemented or are amplitude-limiting elements present? | |
Simulation Setup | Have you set a small dTmax in .TRAN ? |
Are convergence parameters optimized for non-linear behavior? | |
Debugging | Have you simplified the circuit to verify sub-blocks individually? |
Have you confirmed correct operation with .OP and .AC analyses? |
Conclusion: Reliable Oscillator Simulation in SPICE Is Achievable
SPICE is a powerful tool, but it’s only as effective as the realism you build into your simulation. Oscillators, in particular, challenge the simulator’s assumptions and force you to bridge the gap between ideal math and real-world behavior.
To simulate oscillators successfully:
- Inject startup energy intentionally.
- Model non-linearity for amplitude control.
- Fine-tune simulator settings for convergence and time resolution.
- Use advanced analysis techniques to validate designs before full transients.
Simulating oscillators isn’t just about making SPICE “work.” It’s an exercise in deepening your understanding of both circuit behavior and simulation theory. With the right tools and techniques, you can simulate even complex oscillator circuits with high fidelity.