• 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. Dac verilog ams output FFT plot issue

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 125
  • Views 13419
  • 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

Dac verilog ams output FFT plot issue

sidm
sidm over 4 years ago

Hi All,

I have a DAC implemented in  verilog ams.

I am giving a 405Mhz digital hex code based digital input.

But when taking the spectrum of that it doesn't look like a sinewave means I don't see a single tone in the output. I am using Spectre as the simulator with AMS option selected and ++APS turned on in conservative mode.

The code looks to be fine as it is giving expected single tone output when using other utilities.

can anyone please suggest where I might be screwing up ? Should I be using XPS instead of APS or how can I debug the issue.

thanks

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    Are you making sure that the FFT is sampling at the points at which the DAC output has settled? I don't know what version you're using of the IC tools, but in versions before IC6.1.7 you were limited to a power of two sample points in the dft function - if you specified a different value it would round to a power of two (I forget whether it rounded up, down, or to the nearest). From IC617 onwards, it will honour a non-power-of-two number of samples.

    Sometimes you may see advice to use strobe period when using the dft function, but assuming that the DAC output is settled for each DAC sample, and you're sampling at those points, this is unnecessary because there's no time interpolation that would occur.

    If that's not it, it would be best if you could provide your code, test bench, and stimulus - not too bad if it's entirely behavioural.

    Thanks,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sidm
    sidm over 4 years ago in reply to Andrew Beckett

    Thanks for the reply Andrew ,

    the version is IC6.1.7 , I am not sure if moving to IC6.1.8 will help ??

    I switched to XPS MS mode with ++APS turned on , with that the output after FFT is like the following :

    I am still checking on the code part.

    regards

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to sidm

    I wouldn't expect XPS to be necessary or to help with performance (it wouldn't help with accuracy). The main benefit of XPS is when you have a large chunk of digital transistors.

    I don't think moving to IC6.1.8 is going to make a difference here. Something is probably either wrong with the circuit, or your measurement setup. It's really hard to know what without being able to see more information.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to Andrew Beckett

    Dear sidm,

    I absolutely agree with Andrew. I highly suspect your simulation setup or your use of the dft() function is likely the source of your confusion. Please include your simulation set-up details, your time domain result, and your post-processing expression using the dft() function if you need any additional thoughts on your issue.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sidm
    sidm over 4 years ago in reply to ShawnLogan

    thanks for the reply Andrew,

    HERE is the snapshot of the equation being used.

    I am seeing how to share the other details like testbench etc.

    .

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sidm
    sidm over 4 years ago in reply to sidm

    The sampling frequency is 450Mhz and simulation time is 30us

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to sidm

    I'm a bit confused - you appear to be doing the DFT on VT("/data_out<13:0>") which appears to be a 14-bit bus. I thought this was a DAC? What does the. VT("/data_out<13:0>") waveform look like when you plot the entire simulation results, and perhaps you can zoom in to show a few transitions between codes so that it's clearer how often it is changing.

    Of course, this would be much simpler if we could just see the entire setup to work out what you've done wrong.

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to Andrew Beckett

    Dear sidm,

    sidm said:

    Hi All,

    I have a DAC implemented in  verilog ams.

    I am giving a 405Mhz digital hex code based digital input.

    1. I assume you meant 450 MHz and not 405 MHz in your initial question?

    In any case, the expression you provided for the dft() output indicates the reconstruction frequency is 450 MHz.

    2. Your initial argument is clearly a digital bus and not the output of the DAC. Hence, you will not find its dft() to appear sinusoidal if your DAC code data_out<13:0> is a digital bus representing a sampled sine wave. To observe the spectrum of your DAC created sinusoid, the first argument must be the DAC analog output(s) - not its digital code inputs.

    3. What is the intended DAC sinusoidal output frequency intended to be?

    4. The use of the Hanning window will "warp" the output amplitude of your sinusoid. Are you aware of that? In essence, it will not provide the amplitude that you programmed into the DAC input code.

    As Andrew noted, you are causing Andrew and I to "guess" both your setup/simulation/simulation results AND your issue. It would be most helpful if you could at least provide the information we requested.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sidm
    sidm over 4 years ago in reply to ShawnLogan

    thanks for the reply Andrew, the issue is resolved now.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • sidm
    sidm over 4 years ago in reply to ShawnLogan

    thanks for the reply Andrew, the issue is resolved now.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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