-
Notifications
You must be signed in to change notification settings - Fork 68
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Noise Analysis Issue with PDK Resistor in Transimpedance Amplifier Design #318
Comments
@rupokdas147 thank you for reporting this issue. My first guess is that the ideal resistor do not have flicker noise component and ngspice is only calculating thermal noise spectral density, which is proportional to the actual value of the resistor. Warning Please be aware that this flicker noise is only calculated by ngspice, Xyce does not support these extended model by default.
Let us check the numerical values and figure out are calculated correctly. |
@rupokdas147 |
@KrzysztofHerman If it is flicker noise, it should decrease with increasing frequency, shouldn't it? |
@KrzysztofHerman PDK's resistor and Ideal Resistor noise are the same in the simulation below. Taking w=1 and l=10 produces 2654 Ohm, not 2600 Ohm. I guess If you use a 2654 Ohm ideal resistor your result will be the same for both cases. |
@rupokdas147 As shown in the equation (16) of the manual the flicker noise should be proportional to ~ Anyway still the values are out of range by a few orders of magnitude but this is a simulator issue. |
@KrzysztofHerman As far as I know thermal noise is dominant comparatively flicker noise in High Frequency applications. But the resistor provided in the PDK has more dominant flicker noise. I am really confused. Could you please explain in more detail why it's happening? |
@rupokdas147 I suppose that the confusion comes from the fact how the data are presented. |
@KrzysztofHerman, I found nothing about which noises are calculated using Noise Analysis in the Ngspice 44 manual. I reviewed it again. They did not mention anything about Thermal Noise, Flicker Noise, or Shot Noise. However, in the Transient Analysis, I found Transient Noise, where they mentioned the Flicker noises but I could not find any way to calculate it in Qucs-s. What I found from the Manual: 1.1 Small signal noise 1.2 Transient noise |
@rupokdas147 I guess @dwarning can answer this question better. |
I have manually calculated the flicker noise for res_rppd using equations Mentioned in the documents: Taking DC current flowing through the resistor is 1 mA. The flicker noise should be below 1 pA/sqrt(Hz) after 0.1 GHz. I am not sure if I am using the correct equation for the flicker noise. |
@rupokdas147 we are looking at the noise calculation implementation in ngspice. You are completely right that the flicker can be neglected at high frequencies and the noise will be dominated by the thermal one. |
@KrzysztofHerman Thank you for looking into this! I appreciate your effort in addressing the issue. |
Sorry - I must disagree: Flicker noise follows in problems for mixers, oscillators, in phase noise of pll designs and in many other situations. In ngspice we are using same formula as in hspice (and may be in spectre): resnoise.c, l. 109: For the provided test case I got following subexpressions (R=2.654k, Vdc=0.5V, f=100GHz):
|
@dwarning Thank you. Could you please compare the result with a resistor of similar type and dimension in Spectre? I do not have a Cadence license. |
@KrzysztofHerman Is there any restriction for maximum resistor dimension? I need to increase the size of the resistors significantly to minimize the noise. |
@rupokdas147 Only for information: We investigating the problem and see a difference in geometry scaling between the ngspice an spectre model. As soon we have a solution we will come back. |
I have searched the files in Ngspice and found that the total noise of a resistor is the summation of thermal noise and flicker noise:
Thermal Noise
Flicker Noise
File: Observation According to the data in the paper, the flicker noise should become lower than thermal noise beyond the kHz frequency range. However, when I simulated the resistor from the PDK, I observed that the noise aggressively dominates at the 100 GHz range. Simulation Details |
@rupokdas147 |
because of additional Verilog-A model reorganization of directory structure and install process was introduced Signed-off-by: Dietmar Warning <warning@ihp-microelectronics.com>
I just submitted my PR for dev branch of IHP-Open-PDK. Any way - you must have openvaf available, same as for psp103 model. |
Thank you, but still i have this error: Applying: pyprozessor added |
git am --show-current-patch=diffihp-sg13g2/libs.tech/klayout/python/pypreprocessor | 2 +- diff --git a/ihp-sg13g2/libs.tech/klayout/python/pypreprocessor b/ihp-sg13g2/libs.tech/klayout/python/pypreprocessor |
@dwarning The verilog-a model of the resistor working fine in low frequency. But, there are difference between calculated input noise and simulated input noise in high frequency. Simulator: Ngspice 44.2 Low Frequency:Ideal Resistor: PDK Resistor: Test Case: High Frequncy:Ideal Resistor: PDK Resistor: Test Case: |
I made an update for the PR yesterday. Because nothing else changed, you can use this fix: @rupokdas147 I will check your testcases later. |
@dwarning The outputs remains same. Please check the test cases, I have attached both high frequency and low frequency test case files with the previous comment. |
@rupokdas147 |
@ArashKat Anyway - it seems you have the old lib from dev branch. Could you please update in same way as rupokdas147 made. Or you have to wait for dev branch update, evaluation is on the way. That I got with your testcase: As said, for higher frequencies then 1 GHz the device capacitors to ground comes in play, the model show this effect. |
@dwarning As I mentioned earlier the patch of the PR can not be executed. Also, I used the zip file here in this issue that you mentioned as updated model and simply replace it in this directory: IHP-Open-PDK\ihp-sg13g2\libs.tech\ngspice\models. After running I have the following error: Error on line: |
You have to compile the r3_cmc Verilog-A model with openvaf same way as with the psp103 model. |
@dwarning @KrzysztofHerman I might not installed everything correctly i did it my way and it was working .. now I installed it step by step following the guide and I have this error: Note: Compatibility modes selected: hs a Circuit: ** sch_path: /home/arashka/ihp-open-pdk/ihp-sg13g2/libs.tech/xschem/sg13g2_tests/dc_hbt_13g2.sch Too few parameters for subcircuit type "npn13g2" (instance: xxq1) |
@ArashKat I am using Qucs-s for schematic design. I have successfully run the new vlog-a model of the resistor. I can help you if you use Qucs-s. |
@dwarning I have downloaded the verilog-a model of the resistors from https://github.com/dwarning/IHP-Open-PDK/tree/res_r3_model/ihp-sg13g2/libs.tech/verilog-a and Ngspice models from the same repository. Here is a test case of the resistor: |
Yes, same as mine, here with capacitance extraction: You can close. @ArashKat can open an new issue, if needed. |
I am designing a Transimpedance Amplifier (TIA) using the PDK and have encountered a significant issue during noise analysis. Below are the details:
Problem Statement:
Noise performance is critical for my TIA design. I initially tested the circuit using ideal resistors and inductors, and the noise levels were in the expected range of pA/√Hz. However, upon replacing the ideal resistor with the PDK resistor, the noise levels changed drastically, increasing from pA/√Hz to nA/√Hz. This discrepancy raises concerns about the accuracy of noise analysis with the PDK resistor.
Simulation Setup:
Simulator: Ngspice 44
Schematic Editor: Qucs-s 24.4.1
Circuit Details: The design uses a combination of ideal and PDK components. The issue arises specifically when substituting ideal resistors with PDK resistors.
Steps to Reproduce:
Design a TIA circuit in Qucs-s using Ngspice as the simulator.
Perform noise analysis using ideal resistors and note the results (pA/√Hz range).
Replace the ideal resistor with a PDK resistor.
Rerun noise analysis and observe the noise level (nA/√Hz range).
Observed Behavior:
The noise levels jump significantly from the practical range of pA/√Hz to an unrealistic nA/√Hz after replacing the ideal resistor with the PDK resistor.
There is uncertainty about whether the noise analysis is functioning correctly with the PDK resistor.
Expected Behavior:
The noise levels should remain consistent with practical expectations (in the pA/√Hz range) when using the PDK resistor, assuming it is modeled correctly.
Noise analysis should work properly with PDK components, providing reliable results.
Additional Context:
This issue might indicate an error in the noise model of the PDK resistor or a compatibility issue with Ngspice.
If the noise analysis for the PDK resistor is not supported or requires specific configuration, additional clarification in the documentation would be helpful.
Request for Support:
Could you please investigate if this issue is related to the PDK resistor model or its compatibility with noise analysis in Ngspice? Any guidance on resolving this problem or verifying the noise analysis would be greatly appreciated.
Attachments:
CE_Buffer_3_noise_analysis.zip
The text was updated successfully, but these errors were encountered: