jupiter28
New Member
Offline
Posts: 8
|
Hi folks,
To avoid running into the "hidden state" errors in SpectreRF, i used the track-and-hold model (from Listing2 by Ken Kundert's document titled "Hidden State in SpectreRF"). Basically, i had a mixed-signal macro model consisting of some analog circuits and digital feedback control (modeled in behavioral Verilog-A) in a closed-loop configuration.
A few "analog-type" registers (state element) were originally declared in my behavioral Verilog-A and SpectreRF complains about them as being "hidden state". So, I ended up replacing each and every register with the track-and-hold model. I verified that the functionality of the standalone Verilog-A model before and after the change is the same. The good thing is that SpectreRF PSS runs to completion successfully. The bad thing is that i am seeing oscillations in my output voltage, indicating that the oveall system is unstable.
The PAC phase plots also seem to indicate that the phase margin is close to 0 deg. (phase drops to 180 deg. at very low frequency). This leads me to wonder if the track-and-hold circuit somehow adds a low-frequency pole to the small-signal response of my original loop-gain transfer function.
This track-and-hold circuit has 2 phases, i.e. sampling and hold. During sampling phase, a pole is formed by Ron and C. Typically, this pole is located at fairly high frequency since Ron is small and C is around 1nF or so. During hold phase, another pole is formed by Roff and C. It is this pole which worries me since Roff is very large (~10^12 ohm) and C=1nF, meaning that this pole is located at very low frequency.
So, it appears to me that the track-and-hold circuit actually changes the frequency response of my overall system due to its low-pass filtering action.
The following are my questions: 1. How can i modify the track-and-hold model so that its poles will be moved to higher frequency ?
2. SpectreRF supports differential operators (idt, ddt) and Laplace function. So, modeling continuous-time filter in s-domain is easy. But, the trouble comes when we model discrete-time (digital) filter in z-domain because SpectreRF does not support the Z function and any register-like constructs in Verilog-A.
So, i am sure people have run into this kind of situation before and really appreciate if any of you can shed some light.
Thanks.
-albert
|