the gnucap bm_
framework can be used to plug in impulse response filters to elements.
with these, filtering is as simple as this:
spice .model sfir fir coefs=(1,0,-1,1,1,1,1,0,0,-1) step=1m .model sir int_filter step=0.1m v1 nin 0 1 e1 nout 0 nin 0 sfir e2 nint 0 nin 0 sir
.print tran v(nin) v(nint) v(nout) Vout(e1) .tran 0 2m 0.02m basic .end
here sfir
is a finite impulse reponse filter with 10 coefficients. sir
is an integrating filter, which is implemented similarly to the other iirs
(but more efficient). in ac analysis, the filter transfer function can be computed using libfftw.
these filters can also be used to generate alpha-noise from white noise. gnucap could get this in a netlist:
V0 n0 0 noise r=1 amp=0.1 step=0.1m alpha=0 V0.5 n0.5 1 noise r=1 amp=0.1 step=0.1m alpha=0.5 V1 n1 2 noise r=1 amp=0.1 step=0.1m alpha=1 V1.5 n1.5 3 noise r=1 amp=0.1 step=0.1m alpha=1.5 V2 n2 4 noise r=1 amp=0.1 step=0.1m alpha=2 V2.5 n2.5 5 noise r=1 amp=0.1 step=0.1m alpha=2.5
unfortunately if alpha!=0 and alpha!=2, this is inefficient, but at least its not as ugly as precalculating noise.
the implementation on tool (git repo) works, and is slightly incomplete (but was fun to write).