The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Design >> Analog Design >> how to get the DNL/INL for a current-steering DAC?Thanks.
https://designers-guide.org/forum/YaBB.pl?num=1258302249

Message started by holddreams on Nov 15th, 2009, 8:24am

Title: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by holddreams on 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.

Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by ywguo 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

Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by holddreams on 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


Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by holddreams on Nov 29th, 2009, 11:20pm

Anybody help?

Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by Mayank 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.

Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by pancho_hideboo 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/

Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by Mayank on 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. :)

thanx
mayank.

Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by holddreams on 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/


Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by holddreams on 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.


Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by pancho_hideboo 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


Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by holddreams on 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


Title: Re: how to get the DNL/INL for a current-steering DAC?Thanks.
Post by pancho_hideboo on 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.

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.