-
Notifications
You must be signed in to change notification settings - Fork 109
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
Added a generator for constant bias-voltage generator. #327
Conversation
…es having same threshold.
@msaligane / reviewers : |
The threshold voltage and other device specific parameters are a property of the tech file you use. You can find the various platform files available to you in |
Please attach a screenshot of the klayout gds so we can how it looks, also run drc and lvs as instructed in the contributor docs |
Thanks @chetanyagoyal . Regarding DRC, I see an error when building with gf180 through the |
I tried with magic drc instead of KLayout and I have the following report with a violation for metal-2 and deep n-well. Hence the above error is a path concat error for the KLayout DRC rather than the gf180_drc file path. `Defaulting to stale magic_commands.tcl Magic 8.3 revision 464 - Compiled on Sat Mar 9 23:18:29 UTC 2024. Loading DRC CIF style. Using technology "gf180mcuC", version 1.0.471-1-gd8bfd6f Soft errors: Unnamed_8cd675c4 count: Metal2 spacing < 0.28um (M2.2a) -15.760um 1.495um -15.260um 1.525um -14.900um 1.495um -14.120um 1.525um -0.820um 1.495um -0.320um 1.525um -15.260um 1.495um -14.980um 1.525um -0.320um 1.495um -0.040um 1.525um 0.040um 1.495um 0.820um 1.525um Deep N-well spacing < 2.5um (DN.2a) -7.320um -6.395um -5.120um 0.000um -7.320um 0.000um -5.120um 6.395um DRC is clean: {'result_str': 'magic drc script passed\nErrors found in DRC report', 'subproc_code': 0} |
the deep n-well spacing issue can be fixed by manually placing one continuous deep n-well that covers both fets, rather than each fet's dnwell separately you can see where exactly the metal spacing error is occuring by running drc in klayout |
You can find the gf180mcu files in the |
@chetanyagoyal The Metal2 spacing violation is within the nmos p-cell. Please help me understand how to confirm if these need to be less than 0.28u and be waived or need to be modified within the pcell through a separate PR. |
nfet_M1 = nmos(pdk, with_substrate_tap=False, with_dummy=(True, True)) | ||
nfet_M2 = nmos(pdk, with_substrate_tap=False, with_dummy=(True, True)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no point to turning on both dummies here, this doesnt contribute to the symmetricity of the design
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Additionally, your design is not parameterisable with transistor sizing and other properties
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @chetanyagoyal for highlighting it.
I had retained dummies to maintain good symmetry for the threshold voltages. In this case, would it be better to have dummies on far extremes i.e. east of M2 and west of M1 for the flattened component or none at all ?
Regarding parameterizing, sure this isn't. Will it be useful to bring the multiplier and fingers of the fet argument at a minimum to parameterize or will it need all the nmos arguments ?
the pcell seems to be fine, the error is from your side, possibly with the way routing or movement is done |
I can't re-review this yet because there are quite a few changes yet to be made. @Sud-ana If you are looking for different types of FETs completely (like JFETs or even BJTs) you are correct in saying that GLayout doesn't support them. However, if you are looking for different variations of the the MOSFETs under a PDK (such as low voltage, high voltage, power fets), the GLayout API abstracts out the need for designing for different models. You are supposed to create an API agnostic pcell, which incorporates the actual pdk when the gds is written out (or netlists are extracted) You'll find in sky130_mapped_pdk.py, a bunch of settings for the gds writer, try using that for your application. I have also noticed that you have not yet parameterised the pcell function, please do this |
Added Layout for a constant bias voltage generator using two NMOS devices with same thresholds.
DRC, LVS, PEX is not setup for this instance.