the8thhabit
Junior Member level 1
- Joined
- Aug 19, 2024
- Messages
- 15
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1
- Activity points
- 157
Thank you very much for your answerI have to correct my previous post - I got confused in terminology.
MOM capacitors are constructed of multiple inter-digitated fingers formed with metal interconnect layers (using fringe capacitance mostly)
MIM capacitors use plate-to-plate capacitance.
So, I have to correct my answer:
5. I was wondering what the standard is for choosing between MOM and MIM for the caps that make up a CDAC?
- I am not aware of any recommendations about this, but most likely, MIM capacitors will be more asymmetric (bottom plate and top plate parasitics will be different), more sensitive to the substrate noise (because it's closer to it) and probably will have a larger minimum value than MOM. But these MIM caps should be more precise and maybe slightly easier to route.
P.S. MIM capacitors are more effective at larger nodes (180nm, 90nm) whereas MOM is better at lower (40nm, 28nm) because the plate-to-plate capacitance dominates till approx. 65nm and below 65nm the fringe capacitance will dominate.
1. You are right, you should set 10fF as a minimum unit cap size for your Matlab simulations. Generally speaking, yes 10fF is the process limitation for you as a designer.
1.1. Fingers and length will specify your unit cap value and geometry in layout. Simply configure your unit capacitor size through fingers and length to achieve desired value of capacitance and then use <> notation in the instance name, as shown below. This notation simply means specified number of instances in parallel, for example:
C6<1:0> = C6<1> || C6<0> -> 2x C6 in parallel
C6<3:0> = C6<3> || C6<2> || C6<1> || C6<0> -> 4x C6 in parallel
View attachment 196495
2. I have a few ways in mind:
I cannot suggest any resources straight away, but I will add them to my post later.
- Calculate your CDAC transfer function and add the corresponding deltaC to each capacitor in your equation. Build a complete model of SAR ADC in Matlab Simulink, using ideal elements for comparator logic etc. and place your CDAC as a transfer function block. After that, you can simulate it like a normal circuit, varying deltaC and estimating the impact on the output.
- Build an ideal model directly in Cadence, using Verilog-A models and ideal components for comparator, logic etc. In this case, you can use your CDAC as a circuit and perform variation using Cadence. The benefit of that approach is that after you're satisfied with the schematic results, you can do the layout of CDAC, extract it and estimate the impact on your SNR/INL etc. The downside is that this approach would be quite slower to simulate rather than Matlab, but it is all depends on your computational capacity
3. It's quite hard to guess without seeing your schematic and test setup.
- You are thinking that it is a noise issue - are you simulating your ADC with transient noise on? What bandwidth of noise are you using? If you are not using these settings, then your circuit is absolutely noiseless and the issue is something else.
- You need to make sure that in your simulation you are using the correct number of samples and sim time to avoid FFT leakage (you can read more about this in this book: Understanding digital signal processing by Richard G. Lyons). As a sanity check, you can export your sim data to .csv and use FFT in MATLAB to verify your results.
Thanks for your reply!1. You are right, you should set 10fF as a minimum unit cap size for your Matlab simulations. Generally speaking, yes 10fF is the process limitation for you as a designer.
1.1. Fingers and length will specify your unit cap value and geometry in layout. Simply configure your unit capacitor size through fingers and length to achieve desired value of capacitance and then use <> notation in the instance name, as shown below. This notation simply means specified number of instances in parallel, for example:
C6<1:0> = C6<1> || C6<0> -> 2x C6 in parallel
C6<3:0> = C6<3> || C6<2> || C6<1> || C6<0> -> 4x C6 in parallel
View attachment 196495
2. I have a few ways in mind:
I cannot suggest any resources straight away, but I will add them to my post later.
- Calculate your CDAC transfer function and add the corresponding deltaC to each capacitor in your equation. Build a complete model of SAR ADC in Matlab Simulink, using ideal elements for comparator logic etc. and place your CDAC as a transfer function block. After that, you can simulate it like a normal circuit, varying deltaC and estimating the impact on the output.
- Build an ideal model directly in Cadence, using Verilog-A models and ideal components for comparator, logic etc. In this case, you can use your CDAC as a circuit and perform variation using Cadence. The benefit of that approach is that after you're satisfied with the schematic results, you can do the layout of CDAC, extract it and estimate the impact on your SNR/INL etc. The downside is that this approach would be quite slower to simulate rather than Matlab, but it is all depends on your computational capacity
3. It's quite hard to guess without seeing your schematic and test setup.
- You are thinking that it is a noise issue - are you simulating your ADC with transient noise on? What bandwidth of noise are you using? If you are not using these settings, then your circuit is absolutely noiseless and the issue is something else.
- You need to make sure that in your simulation you are using the correct number of samples and sim time to avoid FFT leakage (you can read more about this in this book: Understanding digital signal processing by Richard G. Lyons). As a sanity check, you can export your sim data to .csv and use FFT in MATLAB to verify your results.
Thanks for the answer!1. That's correct.
2. Hopefully, that helps
3. Your simulation setup seems fine to me:
fin = 0.605 MHz;
N = 1024;
fs = 20 MHz;
Tsim = 52us - 800ns = 51.2 us;
Tin = 1/fin = 1.652 us;
Nperiods =Tsim / Tin = 30.976 periods, nearly 31 (integer number of input signal period, looks ok)
FFT resolution = fs / N = 20 MHz / 1024 = 19.531 kHz
fin / FFT resolution = 31 (input signal energy falls in one bin, looks ok)
As far as I can see, the distortion is the problem here. Try to understand which block is the biggest contributor to these harmonics, by replacing them with ideal models, one by one. One more thing that came into my mind is to check if you are using a strobe period while simulating your ADC to achieve evenly spaced samples:
https://community.cadence.com/caden...re-tech-tips-using-the-spectre-strobe-feature
If you are not using this, then it may lead to worse FFT results. Also check that your accuracy preset in simulator is conservative (conservative option in ADEL or CX for Spectre X in ADEXL/Maestro and don't use aps++ option)
View attachment 196500
x
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?