• 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. ADE Assembler: automatic ADC gain error extraction

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 131
  • Views 10279
  • 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

ADE Assembler: automatic ADC gain error extraction

NewScreenName
NewScreenName over 2 years ago

Hi all,

I am simulating a Nyquist ADC by giving a slow varying input ramp, collecting the sampled output code (and reconstructed by a verilogA model) and then plotting it versus the input signal (waveVsWave calculator function), hence getting the transfer characteristics of the ADC.

Now I would like to remove the offset and gain error, in order to take the difference between this corrected output and input, to observe the DNL.

Is there any built-in function to do that in the calculator or simple ocean script?

For the offset subtraction would be quite trivial, just subtract to the output its value at Vin=0.

But to find the gain error correction factor "gec" such that Vout*gec is the output characterstics without gain error, the proper Vin points must be chosen such that Vin(end) is the Vin corresponding to the last output code step + LSB/2 and Vin(start) corresponding to the first output code step -LSB/2.

To better explain, see example plot of an output characteristics of the ADC: the gec would be ideally calculated by [Vin(M4)-Vin(M5)]/[Vout(M4)-Vout(M5)] with reference to the markers M4,M5,M6,M7, such that Vin(M4)-Vin(M6)=LSB/2 and Vin(M4)-Vin(M7)=-LSB/2.

M5 and M4 are on the minimum and maximum ADC output code respectively, therefore the quantization error is diverging on their outer sides

Therefore finding a way to automatically extract the location of these M4 and M5 points is what I am looking for, without having to manually export data to matlab or any other program to do it manually for each corner/design parameter.

Note that depending on the corner the ADC gain error could be different, and therefore when I am sweeping a fixed range for the input voltage, in principle it is not possible to just use INTERCEPT/SLOPE functions of excel for example, because the regions where quantization noise diverges would start from different input voltages, but those functions would try to minimize the error thorugh all the input range. So such a method would require also to extract beforehand the region of the characteristics where quantization noise is within 0.5*LSB.

Any suggestion, or idea for different approaches, in case similar automatic functions are not available, would be highly appreciated.

virtuoso version ICADVM20.1

Thank you

Best regards

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to Andrew Beckett

    I updated the code in the original post to add two new functions - abBestFitSlope and abBestFitIntercept which do handle family data (they will return a waveform of the slope or intercept versus the swept parameter for each curve in the family.

    Andrew

    • Cancel
    • Vote Up +1 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