Hello,
I've the following intricate problem: I have a transistor-level design of an RC integrator (OTA in feedback) and I want to test what errors are introduced due to nonlinearity. Problems:
- Classical methods relying on harmonic signals do not apply because I am interested in actual (random) signals
- I could make sure that HD3 is extremely low within the integration bandwidth. But it turns out the tradeoffs are tight and I want the swing to be as large as possible for a certain effective integration error (mean squared error)
- Small-signal nonlinearity is frequency dependent because the loop gain (which improves the linearity) of an integrator is a bandpass
- The limiting factor is large-signal nonlinearity due to saturation (when the output signal comes close to the rail)
- Even if I would use Spectre itself and run a transient simulation with a random input signal ... to what would I compare the output? I cannot create a transistor-level model with everything but nonlinearity ...
My idea would be: Characterize the circuit with SpectreRF: Sweep all input frequencies, sweep input power and get output power (amplitude and phase). There would be a 2D array which would give me the complex gain for a particular input power and frequency.
A Simulink block (to be found) would interpolate between them.
Then for another Simulink block I just keep the smallest two power variables in the model and use linear interpolation: This should then constitute a perfectly linear but frequency dependent model.
Now sending the same data through the 2 Simulink blocks should give me the difference that is only caused by the nonlinearity and I can directly obtain an NMSE value.
Can I use SpectreRF to export frequency dependent nonlinearity behavior? Are S-parameters what I am looking for? How to?
Any ideas for the Simulink part?