Causality Checking and Enforcement

A causal system is one that is non-anticipatory, that is, its impulse response h(t)=0 for all time t<0. With primitive causality, the response of a linear time-invariant system must never precede its excitation. SIwave can check and compensate for primitive causality problems. With relativistic causality, the S-parameter data must never imply a response that exceeds the speed of light in the medium. SIwave cannot determine the length of the device from its scattering parameters, and so cannot detect violations of relativistic causality.

SIwave can verify that the frequency response of data from a Touchstone file satisfies primitive causality. For a frequency-dependent complex transfer function to be causal, its real and imaginary parts must form Hilbert pairs (the Kramers-Kroning relation). Because of this relation, the imaginary part of the frequency response in a linear causal system can be obtained by the Hilbert transform of the real part. Thus, knowledge of the real part of the transfer function over all frequencies is sufficient to completely reconstruct the imaginary part and specify the system (the reverse is also true). Thus, a possible check for system causality is to compare the imaginary part of the frequency response with the Hilbert transform of the real part.

The causality checker does a frequency-by-frequency calculation of a causal reconstruction error based on numerical generalized Hilbert transform and compares that against a pre-calculated frequency-dependent threshold. If the causal reconstruction error exceeds the threshold at any frequency in the available range then the causality checker reports a causality violation and the relative worst error in percent. The causality check is performed for every port and at every frequency.

Two technical issues: