• 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. CALCULATOR DNL/ INL DAC

Stats

  • Locked Locked
  • Replies 14
  • Subscribers 129
  • Views 36413
  • 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

CALCULATOR DNL/ INL DAC

mirtaji65
mirtaji65 over 4 years ago

Hi

I'm designing a 4 bit DAC.I have completed the schematic and The output waveform of the block is as follows

I want measure INL error and I use INL function in calculator I try this expression

dnl(v("/net055" ?result "tran") 6.251e-5  ?mode "auto"  ?crossType "rising" ?delay 0.0 ?method "end" ?units "abs" ?nbsamples 16)

and it could't It does not work properly  the output waveform is as follows

Where is the problem? 

 is my method to use this function currect ?

THANKS

  • Cancel
  • mirtaji65
    mirtaji65 over 4 years ago in reply to ShawnLogan

    I made a waveform for testing

    The result of the dnl function is as follows
    Which is the X-axis and the Y-axis are in terms of voltage

    The result of the dnl function in mathlab is as follows
    Which is the X-axis in terms of time and the Y-axis are in terms of voltage

    As is clear from the signal of the value (0v to 1.8v) after that (1.8v to 0v) after that (0 to 3.2)

    And because one axis is in terms of voltage and the other is time, the waveform is not the same.

    you can't use the YvsY() function
    i use dc signal 0v as the time axis as a waveform (/net011)
    when i plot two out put in simulation Draws them in the subwindows form

    I can use YvsY for (/net11) and (/net05)  Because both of the in same windows and choose select trace 

    i can not plot inl and (/net11) in same window that YvsY

    What should I do to solve the problem?

    In your opinion, it is not better to write a program VHDL or verilog

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

    Dear mirtaji65,

    mirtaji65 said:
    What should I do to solve the problem?

    I hope the following solves your latest problem. I have included the specific steps I followed and the resulting plots of INL versus voltage and the new plot of INL versus Time.

    Shawn

    Fullscreen example_plot_inl_vs_time.txt Download
    1. Create time values:
    
    value(v("/vout" ?result "tran") 0.5e-06  ?period 1e-06 ?xName "time"  )
    
    Place in Calculator Table (Tools->Table)
    
    2. Create inl values:
    
    value(inl(v("/vout" ?result "tran") 1e-06  ?mode "auto"  ?crossType "rising" ?delay 0.5e-06 ?units "abs" ?nbsamples nil) 0.5e-06 ?period 1e-06 ?xName "time")
    
    Append to table (See below for comma-separated variable file I created)
    
    3. Save table as a comma-separated variable file with <filename> (i.e. nl_xval_inl.csv)
    
    3.Create new waveform:
    
    getAsciiWave("Full path to saved file inl_xval_inl.csv"> 1 4 ?xskip 1 ?yskip 1 ?formatFloat nil ?xName "Time" ?xUnits "sec" ?yName "inl" ?yUnits "LSB" )
    
    4. Plot new waveform
    
    5. Enjoy!
    
    Example "inl_xval_inl.csv"
    
    time (s),xval(value(v("/vout" ?result "tran") 0.5e-06  ?period 1e-06 ?xName "time"  )) (s),V (V),inl
    500.00000E-9,500.00000E-9,24.961888E-3,0.0000000
    1.5000000E-6,1.5000000E-6,72.934183E-3,-37.478530E-3
    2.5000000E-6,2.5000000E-6,123.74225E-3,-18.059857E-3
    3.5000000E-6,3.5000000E-6,175.35193E-3,17.442537E-3
    4.5000000E-6,4.5000000E-6,223.30014E-3,-20.519130E-3
    5.5000000E-6,5.5000000E-6,276.42237E-3,45.331194E-3
    6.5000000E-6,6.5000000E-6,323.72824E-3,-5.5186424E-3
    7.5000000E-6,7.5000000E-6,374.44416E-3,12.051288E-3
    8.5000000E-6,8.5000000E-6,425.94798E-3,45.429609E-3
    9.5000000E-6,9.5000000E-6,474.45422E-3,18.664130E-3
    10.500000E-6,10.500000E-6,524.10157E-3,14.794140E-3
    11.500000E-6,11.500000E-6,576.87473E-3,73.640760E-3
    12.500000E-6,12.500000E-6,622.86814E-3,-3.5422922E-3
    13.500000E-6,13.500000E-6,675.23440E-3,47.140060E-3
    14.500000E-6,14.500000E-6,722.63109E-3,-1.8875072E-3
    15.500000E-6,15.500000E-6,772.56539E-3,-555.11151E-18
    
    sml 1/4/2021

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

    Dear Shawnlogan

    Your solution for converting X-axis from voltage to time works exactly.

    But why do I have to sample the waveform by use <<value function>>  when i want to use INL and DNL function ,why delay of INL function doesn't work itself,

    Is this a software bug?

    ver virtuoso :6.17.77

    This method is not suitable if I want to use the analysis parameter

    But your method of  converting X-axis from voltage to time  was great

    thanks my friend

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

    Dear mirtaji65,

    > Your solution for converting X-axis from voltage to time works exactly.

    Great! Thank you for letting us know!

    mirtaji65 said:

    But why do I have to sample the waveform by use <<value function>>  when i want to use INL and DNL function ,why delay of INL function doesn't work itself,

    Is this a software bug?

    First, I do not work for Cadence and hence cannot really respond to your comment about the behavior of INL. However, the INL function, as it is documented, does not provide the x-axis as a function of time (which is what I assume you want). Hence, the "workaround" using the value() function.

    mirtaji65 said:
    This method is not suitable if I want to use the analysis parameter

    Sorry, I don't understand exactly what you mean by this comment! You can use this methodology in an Explorer/Assembler expression through the use of an ocean script. This is documented at URL:

    https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nXTvEAM&pageName=ArticleContent

    and

    https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nXS2EAM&pageName=ArticleContent

    Hence, you may define the steps in an ocean script and add the ocean script as an Explorer/Assembler output.

    I hope this helps mirtaji65,

    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