The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Sep 27th, 2024, 4:24pm
Pages: 1
Send Topic Print
how to get the DNL/INL for a current-steering DAC?Thanks. (Read 13195 times)
holddreams
Junior Member
**
Offline



Posts: 19

how to get the DNL/INL for a current-steering DAC?Thanks.
Nov 15th, 2009, 8:24am
 
How to get the DNL/INL for a current-steering DAC?
Is there any script to get the DNL/INL  just in the attachment?
Thanks a lot!

btw, I use spectre simulator.
Back to top
 

Screen_shot_2009-11-16_at_12_22_55_AM.png
View Profile   IP Logged
ywguo
Community Fellow
*****
Offline



Posts: 943
Shanghai, PRC
Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #1 - Nov 15th, 2009, 6:03pm
 
Hi,

It seems that you have already plot the INL using matlab. What script do you need?

If you want to measure INL/DNL in cadence analog design environment, please try dac_8bit_inl and dac_8bit_dnl in ahdlLib. You need revise it if your DAC is not 8 bit.


Yawei
Back to top
 
 
View Profile   IP Logged
holddreams
Junior Member
**
Offline



Posts: 19

Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #2 - Nov 17th, 2009, 4:57am
 
Hi,

The attachment is from a paper.
I want to get the INL/DNL just like in the attachment.
But I do not know how to get such waveforms.
If there are scripts for INL/DNL testing, could you please send me one copy?

Also, in cadence, how to use dac_8bit_inl and dac_8bit_dnl to get the inl/dnl?That is, how to connect both cells with my current-steering DAC? And when I connect correctly, can I get INL/DNL waveform just like the one in the attachment? How do I deal with it?

Thanks a lot!

ywguo wrote on Nov 15th, 2009, 6:03pm:
Hi,

It seems that you have already plot the INL using matlab. What script do you need?

If you want to measure INL/DNL in cadence analog design environment, please try dac_8bit_inl and dac_8bit_dnl in ahdlLib. You need revise it if your DAC is not 8 bit.


Yawei

Back to top
 
 
View Profile   IP Logged
holddreams
Junior Member
**
Offline



Posts: 19

Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #3 - Nov 29th, 2009, 11:20pm
 
Anybody help?
Back to top
 
 
View Profile   IP Logged
Mayank
Community Fellow
*****
Offline



Posts: 334

Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #4 - Nov 30th, 2009, 12:02am
 
Hi dreams,
               
              Method to calculate INL/DNL :--
1. Get Istep_avg = Imax / max_code (say for a 6 bit DAC, Imax/64)

SPECTRE steps:--
2. Find DC Op info for every code from 0 to 64, & find Iout at all codes.
3. Export Iouts at every code into some file, say csv, and read it in MATLAB.

MATLAB steps:--
4. Find Deviation ie Iout - Istep_avg for each code.
5. Plot These Deviations vs. code, you get the DNL plot.
6. INL = ΣDNL upto that code ir cumulative DNL
7. Find INL values corresponding to the above formula for each code.
8. Plot INL vs code ---> you will get a similar graph.

PS :- I would suggest you to do some reading on the topic first...

mayank.
Back to top
 
 
View Profile   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #5 - Nov 30th, 2009, 3:02am
 
Mayank wrote on Nov 30th, 2009, 12:02am:
3. Export Iouts at every code into some file, say csv, and read it in MATLAB.
I don't think MATLAB is needed.

Static INL and static DNL are very easy measurements.

Simply do DC simulation with ramp input code.
Input signal can be described like following, if you use Cadence Spectre Netlist.
Din<n> (in<n> 0) vsource type=dc dc=int(input_code) & (1<<n) ? Vhigh : Vlow

Then do post processing based on definition of INL and DNL by using your post processing environment.

Any EDA Tool have some languages for post processing.

If you use Cadence ADE, OCEAN script is available.

Do you have any code for actual measurement using actual instruments, e.g. Visual-Basic Program for GPIB(SCPI) ?
I can easily do coding for EDA Tool environment from codes of actual measurement.
Sometimes, first I create automation program in EDA Tool, then transplant it to actual measurement environment.

If you have actual experience of measurements, you can easily set up simulation for measurement.

EDA Tool Play is no more than Tool Play.
There is nothing superior to the actual measurement using actual instruments.

If you have Instrument Control Toolbox of MATLAB, you can share codes for measurement both in actual measurement and simulation domains.
http://www.mathworks.com/products/instrument/
Back to top
 
« Last Edit: Nov 30th, 2009, 5:55pm by pancho_hideboo »  
View Profile WWW Top+Secret Top+Secret   IP Logged
Mayank
Community Fellow
*****
Offline



Posts: 334

Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #6 - Dec 1st, 2009, 10:06am
 
Hello Pancho,
                    you are also right....You can do some post-processing in any EDA Tool and obtain INL/DNL plots from there itself....Personally, i find it easier to import spectre results data into matlab...takes a sec to import those csv files directly into variables....In MATLAB, i can play with the data all i want. Smiley

thanx
mayank.
Back to top
 
 
View Profile   IP Logged
holddreams
Junior Member
**
Offline



Posts: 19

Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #7 - Dec 1st, 2009, 5:23pm
 
Thanks!
Could you please take a 3-bit DAC as an example to give the spectre netlist for simulation DNL/INL?
I really don't know how to make the horizontal coordinate to be code.

Thanks again.

pancho_hideboo wrote on Nov 30th, 2009, 3:02am:
Mayank wrote on Nov 30th, 2009, 12:02am:
3. Export Iouts at every code into some file, say csv, and read it in MATLAB.
I don't think MATLAB is needed.

Static INL and static DNL are very easy measurements.

Simply do DC simulation with ramp input code.
Input signal can be described like following, if you use Cadence Spectre Netlist.
Din<n> (in<n> 0) vsource type=dc dc=int(input_code) & (1<<n) ? Vhigh : Vlow

Then do post processing based on definition of INL and DNL by using your post processing environment.

Any EDA Tool have some languages for post processing.

If you use Cadence ADE, OCEAN script is available.

Do you have any code for actual measurement using actual instruments, e.g. Visual-Basic Program for GPIB(SCPI) ?
I can easily do coding for EDA Tool environment from codes of actual measurement.
Sometimes, first I create automation program in EDA Tool, then transplant it to actual measurement environment.

If you have actual experience of measurements, you can easily set up simulation for measurement.

EDA Tool Play is no more than Tool Play.
There is nothing superior to the actual measurement using actual instruments.

If you have Instrument Control Toolbox of MATLAB, you can share codes for measurement both in actual measurement and simulation domains.
http://www.mathworks.com/products/instrument/

Back to top
 
 
View Profile   IP Logged
holddreams
Junior Member
**
Offline



Posts: 19

Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #8 - Dec 1st, 2009, 5:24pm
 
Thanks Mayank.
I will also try your method.

Mayank wrote on Nov 30th, 2009, 12:02am:
Hi dreams,
               
              Method to calculate INL/DNL :--
1. Get Istep_avg = Imax / max_code (say for a 6 bit DAC, Imax/64)

SPECTRE steps:--
2. Find DC Op info for every code from 0 to 64, & find Iout at all codes.
3. Export Iouts at every code into some file, say csv, and read it in MATLAB.

MATLAB steps:--
4. Find Deviation ie Iout - Istep_avg for each code.
5. Plot These Deviations vs. code, you get the DNL plot.
6. INL = ΣDNL upto that code ir cumulative DNL
7. Find INL values corresponding to the above formula for each code.
8. Plot INL vs code ---> you will get a similar graph.

PS :- I would suggest you to do some reading on the topic first...

mayank.

Back to top
 
 
View Profile   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #9 - Dec 5th, 2009, 4:50am
 
I can't find out any Design Issue in your post.
Your question is no more than a usage of very specific EDA vendor's Tools.
holddreams wrote on Dec 1st, 2009, 5:23pm:
Could you please take a 3-bit DAC as an example to give the spectre netlist for simulation DNL/INL?
I really don't know how to make the horizontal coordinate to be code.

simulator lang=spectre
global 0

parameters input_code=0 // 0~7
parameters Vlow=0 Vhigh=1.5

Din<0> (in<0> 0) vsource type=dc dc=int(input_code) & (1<<0) ? Vhigh : Vlow
Din<1> (in<1> 0) vsource type=dc dc=int(input_code) & (1<<1) ? Vhigh : Vlow
Din<2> (in<2> 0) vsource type=dc dc=int(input_code) & (1<<2) ? Vhigh : Vlow

boke dc param=input_code start=0 stop=7 step=1 oppoint=rawfile maxiters=150 \
   maxsteps=10000 annotate=status

Back to top
 
 
View Profile WWW Top+Secret Top+Secret   IP Logged
holddreams
Junior Member
**
Offline



Posts: 19

Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #10 - Dec 7th, 2009, 4:25am
 
Thanks Pancho!
I used an ideal DAC and the stimulus in the netlist you provide. After the spectre simulation, I recorded the results into Excel, and calculated DNL/INL according to the definition. Then use the Excel funtion to plot the INL/DNL Vs input_code.

Now here comes a question:
In the ideal DAC, there is no "CLOCK" signal, while in current-steering DAC, Latch or D flip-flop is used.
Then how to give the stimulus about the "CLOCK" signal?



pancho_hideboo wrote on Dec 5th, 2009, 4:50am:
I can't find out any Design Issue in your post.
Your question is no more than a usage of very specific EDA vendor's Tools.
holddreams wrote on Dec 1st, 2009, 5:23pm:
Could you please take a 3-bit DAC as an example to give the spectre netlist for simulation DNL/INL?
I really don't know how to make the horizontal coordinate to be code.

simulator lang=spectre
global 0

parameters input_code=0 // 0~7
parameters Vlow=0 Vhigh=1.5

Din<0> (in<0> 0) vsource type=dc dc=int(input_code) & (1<<0) ? Vhigh : Vlow
Din<1> (in<1> 0) vsource type=dc dc=int(input_code) & (1<<1) ? Vhigh : Vlow
Din<2> (in<2> 0) vsource type=dc dc=int(input_code) & (1<<2) ? Vhigh : Vlow

boke dc param=input_code start=0 stop=7 step=1 oppoint=rawfile maxiters=150 \
   maxsteps=10000 annotate=status


Back to top
 
 
View Profile   IP Logged
pancho_hideboo
Senior Fellow
******
Offline



Posts: 1424
Real Homeless
Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Reply #11 - Dec 7th, 2009, 4:38am
 
Again I can't find out any Design Issue in your post.
Your question is no more than a usage of very specific EDA vendor's Tools.
Please post to simulator's boards.


Use "ahdlLib/adc_8bit_ideal" instead of Din<N-1:0>.

You can easily modify this "ahdlLib/adc_8bit_ideal" as any N bits ADC as you need.
Back to top
 
 
View Profile WWW Top+Secret Top+Secret   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.