Field Guide · concept

Also known as: simulation-first SDR, offline SDR development, synthetic-signal development

Simulation-driven SDR development is the practice of designing and verifying radio signal processing against signals whose parameters you control — synthesized in software or replayed from a recording — rather than only against whatever happens to be on the air.1 You generate the exact waveform you need, at the exact SNR, frequency offset, or bit pattern you want to test, and because you know the ground truth that produced it, you can assert the decoder recovered the right answer, not merely a plausible one.

known bits modulate channelnoise + offset demodulate recovered compare→ BER
A modulate → channel → demodulate loop with known transmit bits yields a measurable bit error rate — impossible when the truth is unknown off-air.

How it works

The core is a loopback through a channel model. You start from known transmit bits, run them through the same modulator the target system uses, then deliberately degrade the resulting IQ with a model of the channel: additive white Gaussian noise scaled to a chosen SNR,2 a carrier frequency and phase offset, a timing offset, and — for harder cases — multipath fading. That impaired IQ is exactly the kind of stream a real receiver sees, so you feed it to the demodulator and framing code under test.

Because you kept the original bits, you can compute concrete correctness metrics: bit error rate versus SNR, how much frequency offset the acquisition tolerates, whether the forward-error-correction fixes the number of errors it should. This is how DSP is designed rather than merely spot-checked: you can sweep a parameter and see the performance curve, then compare it against theory.

Synthesis and capture are complements, not rivals. Synthetic signals give you perfect ground truth and arbitrary edge cases; recorded captures give you the messy real imperfections — a specific transmitter’s phase noise, a real fading environment — that no simple channel model reproduces. Mature projects use both.

In practice

Synthetic signals shine for the cases you cannot summon on demand: a burst sitting right at threshold, a decoder input crafted to force a particular error-correction path, a precise ±kHz offset to test acquisition range. You dial the impairment in exactly and get a deterministic, checked-in test.

Captures shine for realism and for reproducing field bugs. When a user reports a decode failure, the fix starts by getting their raw recording and replaying it through a file source until the failure reproduces on the bench — after which a golden vector locks the fix in place. The whole cycle runs with no radio attached, which is the point of hardware-free testing.

The discipline’s caveat is that a simulation is only as honest as its channel model. A decoder that passes against clean AWGN can still fail on real hardware impairments the model omits (front-end nonlinearity, reciprocal mixing, ADC artifacts), so a green simulation suite is necessary but not sufficient — real captures remain the final word.

Relevance to SDR

Simulation-driven work is standard practice across the field: MATLAB/Simulink, GNU Radio, and NumPy/SciPy pipelines all make it easy to modulate, add a channel, and demodulate in a loop, and every published BER-vs-Eb/N0 curve is a simulation result. It lets a modem be designed and its performance bounded before any RF hardware exists.

GopherTrunk leans on the capture-replay half of this heavily and uses synthetic inputs where they pin behavior precisely. A concrete example from its own history: a field decode failure was diagnosed by replaying the reporter’s captures offline, then independently resampling a high-rate capture with a separate resampler and replaying it through the proven low-rate path — reproducing the same degraded SNR and proving the deficit was baked into the captured samples (front-end phase noise), not GT’s downconverter. That is simulation-driven debugging: control one variable at a time, offline, against known-good references. GT does not model transmit channels (it is a receiver), so its simulation surface is receive-side — degraded captures and synthesized decoder inputs — rather than a full TX/RX loopback.

Sources

  1. Software-defined radio — Wikipedia, on processing digitized baseband in software, which lets signals be synthesized and replayed identically to live reception. 

  2. Additive white Gaussian noise — Wikipedia, on the standard channel-noise model used to set a target SNR in link simulations. 

See also