Jess Chen
|
VerilogA is most functional in simulators like Spectre and SPICE. (VerilogA is somehwat crippled in all RF simulators I know because of the hidden state problem.) Those simulators were designed to solve ordinary differential equations, not partial differential equations. Transmission lines are described by partial differential equations. The only way I know of to make partial differential equations look like ordinary differential equations is with lumped approximations; chop the transmission line up into small segments, say of length delta. The trick is to find delta. The lumped approximation for a section of length delta is a pi or T or L network with RLGC scaled by delta, and perhaps 1/2, depending on which network you select. As I recall, I determined the number of segments by first determining the shortest delay of interest, then computing how far a pulse propagates in that time, and then dividing that distance by 20. I believe there's a similar frequency domain approach. The factor of 20 was just a rule of thumb based on trial and error. If you want more accuracy, you need small deltas. As for implementation, you need not write out a RLGC line for each segment, you can use the generate command. Since the segments are linear, you should not have any convergence issues but you may see slow run times if you have lots of lines and/or lots of segments.
Harmonic balance based RF simulators can handle linear partial differential equations directly because they allow you to describe the system in the frequency domain. If you have access to one, you may be able to use an envelope option if your stimulus is not periodic. However, I don't think you will be able to use VerilogA with a harmonic balance simulator because to my knowledge, VerilogA does not let you describe behavior in the frequency domain, unless it is a noise look up table. I'm not 100% sure but I think you can enter look up table transfer functions in most hb simulators, without using VerilogA.
-Jess
|