• 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. Custom IC Design
  3. Difference between pss_fd and dft(pss_td)

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 125
  • Views 1405
  • 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

Difference between pss_fd and dft(pss_td)

MikeVP
MikeVP over 4 years ago

I'm trying to extract imaginary information from a dft of transient data to look at the steady state information on a driven circuit.  To make sure this works, I started with a pss analysis, because I assume that the pss_fd and pss_td are the exact same data, just in different formats.  In other words, I assume that you could reconstruct the time domain waveform from just the frequency/phase information.

The information I get from imag( v("/top" ?result 'pss_fd)) is correct.  However, when I plot imag( dft( v("/top" ?result 'pss_td ) 0 stop 16 "Rectangular" 1 "default" 1.0)) does not give the same data.

I did a simple test case of a single sinusoidal source, and the above does seem to work.  However, with a much more complicated circuit, it does not.

Is this a misunderstanding on my part of the dft?  I admit, I'm not an expert on FFTs.

  • Cancel
  • ShawnLogan
    ShawnLogan over 4 years ago

    Dear MikeVP,

    MikeVP said:

    The information I get from imag( v("/top" ?result 'pss_fd)) is correct.  However, when I plot imag( dft( v("/top" ?result 'pss_td ) 0 stop 16 "Rectangular" 1 "default" 1.0)) does not give the same data.

    I did a simple test case of a single sinusoidal source, and the above does seem to work.  However, with a much more complicated circuit, it does not.

    Is this a misunderstanding on my part of the dft? 

    [...

    I definitely cannot give you a firm answer MikeVP as I do not have enough information about your specific circuit and its response. A few ideas come to mind however and, as an attempt to help, they follow. 

    1. The accuracy of the dft() function output is a strong function of the accuracy its input waveform. Your dft() arguments suggest only a 16 point FFT. This will only produce 8 output points each of which has real and imaginary parts. The potential issues with this sample size are:

    a. If the time points of your pss_td waveform do not correspond to exactly [driven_waveform_period/16], then the dft() function will interpolate between the available pss_td data to "estimate" the appropriate values of the waveform. Thierefore, the dft() output will be an estimate (only). You can avoid this error by forcing Spectre to solve its matrix at the sample points with will be used in your dft() analysis (strobe points in analysis options) 

    b. With only 16 points chosen for the dft(0 function, the time samples will be: 

    from, from +  driven_waveform_period/16], from + 2*[driven_waveform_period/16],...,
    from + (15)*[driven_waveform_period/16]

    your dft() output frequencies will only exist at frequency intervals of:

    fsHz/(fft_length/2))

    However, if your waveform does not have exact frequency components of exactly  8/[driven_waveform_period], the real and imaginary components will not be representative of the exact frequency and amplitude/phase of your actual waveforms frequency content.

    The accuracy of the dft() function is summarized in the Cadence On-line Support at URL:

    support.cadence.com/.../ArticleAttachmentPortal

    The  "simple test case" you assembled with a single sinusoid did not show the lack of correlation between the dft() of its "pss_td" signal since there is only a single frequency component and, being a single sinusoid, its phase is 0 and hence would have only a real component. Hence, there is no complex part....

    This is my hypothesis for what you are observing.

    Does this help and does it make any sense MikeVP?

    Shawn

    • 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