only generate waveforms if necessary