• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. RF Design
  3. pole zero analysis validation using ac sweep

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 63
  • Views 20087
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

pole zero analysis validation using ac sweep

yefJ
yefJ over 6 years ago

Hello ,i have built a circuit and ran a POLE ZERO simulation on it, after that i took  those poles and zeros shown in the simulation results

poles: 1.9128e-12+5.03292e9i  ,  1.9128e-12-5.03292e9i

zeros: 0+0i  ,  -1.58e-21+0i
and made a transfer function in MATLAB as shown bellow.

After that i  compared the MATLAB bode plot with AC sweep of the circuit . i get almost the same response however the peak at the AC sweep is much lower then the POLE ZERO transfer function bode plot.

where did i go wrong comparing them?
Thanks

p=[1.9128e-12+5.03292e9i;1.9128e-12-5.03292e9i]
z=[0+0i;-1.58e-21+0i]
k=1
[num,den]=zp2tf(z,p,k)
sys=tf(num,den)
bode(sys)


  • Cancel
  • ShawnLogan
    ShawnLogan over 6 years ago

    Dear yefJ,

    You did not specify the frequency resolution you chose on your spectre AC analysis. I suspect you are using a different frequency step in your Matlab computation than in your spectre AC simulation. Hence the frequency corresponding to the two peaks will be slightly different. I would use the same frequency step in both analyses and increase the frequency resolution to see if the two peak frequencies become closer in value.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • yefJ
    yefJ over 6 years ago in reply to ShawnLogan

    Hello Shawn , your advice helped to make the peaks frequency match exactly(by increasing to 1000 samples) however there is no 150dB amplitude

    in fact when i put 100000 samples this peak rose to 50db ,so maybe if we put 1M sample then it will match :-)


    Is there a way to get the poles as a function of a circuit component,or the transfer function which component parameters in them??

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to yefJ
    yefJ said:
    is there a way to get the poles as a function of a circuit component?

    What does that mean?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • yefJ
    yefJ over 6 years ago in reply to Andrew Beckett

    Hello Andrew,  if i will replace  the values of the components with parameters(with values in them)

    is there a way to get a transfer function with those parameters in them so i will get something like

    H=cap*s^2 +cap*res*s+2 some thing like that   or the poles instead being shown as numbers they will be shown as parametric expression of my components .

    Thanks 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to yefJ

    yefJ said:
    is there a way to get a transfer function with those parameters in them so i will get something like H=cap*s^2 +cap*res*s+2 some thing like that   or the poles instead being shown as numbers they will be shown as parametric expression of my components

    No.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 6 years ago in reply to Andrew Beckett

    Dear yefj,

    The peak may not be as relevant as the integrated area in a high Q network such as you are simulating since the peak will be determined by the exact frequency found in the Matlab and spectre simulations. A small difference in frequency in a high Q network can lead to very significant difference in the "peak". You are using pole and zero values with only a few digits (I only see 5 digits)  from spectre in Matlab - hence the degree to which the peak frequency and magnitude shown in Matlab matches spectre is determined how accurate only 5 digits are in yout poles and zeroes. Spectre is likely using much greater accuracy in its simulation result.

    A different way to gauge to which the two agree might be to integrate the area over the entire frequency of interest - say 4 GHz to 6 GHz-  of both solutions.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • yefJ
    yefJ over 6 years ago in reply to ShawnLogan
    Unknown said:
    Spectre is likely using much greater accuracy in its simulation result.

    Hello Shawn , is there a way to get the poles and zeros in more accurate for ,in order to avoid potential mismatch?
    Thank

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to yefJ

    It doesn't seem to be possible to increase the number of digits in the pz output in the spectre log file (the digits option doesn't seem to affect this - I'll request that this is fixed). However, in the CIW after running the simulation you can do:

    aelPushSignifDigits(15)
    pzSummary()

    This will retrieve the pole-zero information from the result database (which is stored in double precision floating point numbers) and print a summary. The first function increases the number of digits that numbers are displayed using for this kind of report.

    By the way, rather than doing your ac sweep with lots of points, you could simply add an additional point via the "Add Specific Points" on the ac analysis form, and enter:

    (1/(2*M_PI*sqrt(1n*1p)))

    (note, the parentheses around the whole expression are required because otherwise spectre will have a problem with an expression within the vector for the additional points). The M_PI is a built-in constant in spectre, and the expression is for the resonant frequency of the LC tank).

    I still suspect you'll struggle to get the peak correctly matching as it is very big, but as Shawn said I wouldn't worry about that too much. Even resimulating in spectre using an svcvs (with the coefficients with the extra precision above scaled by 2*pi because they need to be in radians/s) does not give an absolutely precise match of the peak magnitude:

    However, as you can see, they overlay pretty well. I couldn't check your Matlab work because I don't have the Control Toolbox, so that's why I used spectre's Laplace voltage controlled voltage source (svcvs).

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • yefJ
    yefJ over 6 years ago in reply to Andrew Beckett

    Hello Andrew , Thank you very much , as you can see bellow i got the poles and zeros in a much bigger accuracy.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information