Draft: Chipathon2024 Mahowald-ers Regulated Cascoded Current Mirror block#349
Draft: Chipathon2024 Mahowald-ers Regulated Cascoded Current Mirror block#349amisapta15 wants to merge 43 commits intoidea-fasoc:mainfrom
Conversation
|
Current LVS result |
|
Updated the Layout and decreased LVS Errors. Current LVS produces the following Errors The error now comes from the labels 'VCOPY ` Contents of circuit 1: Circuit: 'CM' Circuit was modified by parallel/series device merging. Contents of circuit 1: Circuit: 'CM' Circuit 1 contains 3 devices, Circuit 2 contains 3 devices. Final result: Logging to file "/tmp/tmpi4zjwy4q/CM_lvs.rpt" disabled Circuit 1 cell sky130_fd_pr__nfet_01v8 and Circuit 2 cell sky130_fd_pr__nfet_01v8 are black boxes. Subcircuit pins:
Cell pin lists are equivalent. Cell CM (0) disconnected node: VCOPY
Netlists match uniquely with port errors. Subcircuit pins:
Cell pin lists for CM and CM altered to match. Final result: Top level cell failed pin matching. ` |
|
Finally Cleared LVS. Improvement suggestions on the layout (along with further technical checks) will be greatly appreciated. Specially need help with moving the components around to become DRC clean. DRC is still being checked. Next Goal is to get the Spice SIm going to extract the IV curve of this CM |
|
Schematic-wise, getting suggestions on the schematic code for these would be super helpful. Thanks in advance. (a) I'm not sure what's going on there. The Via from licon to met1 doesn't encompass the finger and the via to met 2 doesn't line up. The finger should be extended to fully enclose the via to met 1 track (blue), and the via between met1 and met2 (the red line) should be aligned with the previous via. I'm not sure how to achieve that in code. (b) We want to move the Vref pin and track to the other position. Not sure what port to use for that move. (c) The positioning of the pins (Vref, Vopy, and Vss) isn't good. They don't produce errors but would be great to bring them outside the well and make their location aligned and parametrized proper way. hope I am able to explain it in an understandable fashion. |
...ut/glayout/flow/blocks/composite/regulated_cascoded_current_mirror/CM_primitive_cell_test.py
Outdated
Show resolved
Hide resolved
...flow/blocks/composite/regulated_cascoded_current_mirror/regulated_cascoded_current_mirror.py
Outdated
Show resolved
Hide resolved
...flow/blocks/composite/regulated_cascoded_current_mirror/regulated_cascoded_current_mirror.py
Outdated
Show resolved
Hide resolved
...flow/blocks/composite/regulated_cascoded_current_mirror/regulated_cascoded_current_mirror.py
Outdated
Show resolved
Hide resolved
...flow/blocks/composite/regulated_cascoded_current_mirror/regulated_cascoded_current_mirror.py
Outdated
Show resolved
Hide resolved
...flow/blocks/composite/regulated_cascoded_current_mirror/regulated_cascoded_current_mirror.py
Outdated
Show resolved
Hide resolved
|
@amisapta15 any update on this? |
|
Hello! Thanks for the comments and sorry for the delay. I should be able to push an update by the weekend. Thanks |
…` in regulated_cascoded_current_mirror.py The main component name was generic. It is updated as per the suggestion provided by the maintainer.
|
@harshkhandeparkar Kindly see my responses in your comments. Also, please see my request for help in placing the nodes
Please note aside from this, following Mehedi's comment (from back before Holidays) a new code will be pushed for a non-uniform current mirror component generation code, utilising the |
I can't see any replies to my comments. Did you reply on a different platform?
Can you send the gds for this? Also, can you highlight(or tell line nos) this part of your code?
Which other position? |
| dummy=with_dummy,with_substrate_tap=with_substrate_tap,with_tie=with_tie,tie_layers=tie_layers) | ||
| elif type.lower() =="nfet" or type.lower() =="nmos": | ||
| currm= two_nfet_interdigitized(pdk,numcols=num_cols,width=Width,length=Length,fingers=fingers,dummy=with_dummy, | ||
| with_substrate_tap=with_substrate_tap,with_tie=with_tie,tie_layers=tie_layers) |
There was a problem hiding this comment.
I'm not sure what's going on there. The Via from licon to met1 doesn't encompass the finger and the via to met 2 doesn't line up. The finger should be extended to fully enclose the via to met 1 track (blue), and the via between met1 and met2 (the red line) should be aligned with the previous via. I'm not sure how to achieve that in code.
There was a problem hiding this comment.
Has this been fixed now?
| "pad_label" : (76, 5), | ||
| "pwell_pin" : (122, 16), | ||
| "pwell_label" : (122, 5) | ||
| } |
There was a problem hiding this comment.
This is the new addition to the pdk for making the labelling pdk agonastic. Not sure How to tell Glayout to use this file instead of what is installed in the miniconda folder
I had commented on Github itself. There were some wrongly set settings. It should be visible to you now. Please let me know if it isn't.
Yes and Yes. The GDS is added here This particular problem comes directly from the
Please see this earlier comment or The following picture with red highlights! |
|
@alibillalhammoud Can you please take a look at this issue? |
|
Dear @harshkhandeparkar, both issues are opened in appropriate places, as we discussed in the comments. A helper function is added and all unnecessary things have been shifted. Another GitHub action run will be very helpful. New commit forward from this, add new Kindly note the positioning issues with the pins aren't solved. But we can address this later when the whole block is integrated. |
@amisapta15 can you rebase your branch so the new workflow can run on this? |
| @@ -0,0 +1,126 @@ | |||
| import sys | |||
| sys.path.append('../../elementary/current_mirror/') | |||
There was a problem hiding this comment.
Is this required?
| return CMS.flatten() | ||
|
|
||
|
|
||
| comp = current_mirror(sky130, numcols=2, device='nfet') |
There was a problem hiding this comment.
It would be better to add these commands to a function or under if __name__ == "__main__" so it doesn't accidentally run as a side-effect of importing the file.
| @@ -0,0 +1,17 @@ | |||
| from os import path, rename, environ , listdir, remove, chmod | |||
|
|
|||
| def delete_files_in_directory(directory_path): | |||
There was a problem hiding this comment.
Where is this used? Does os.rmtree not do the same?
| return reg_casc_netlist | ||
|
|
||
|
|
||
| # def regulated_cascode_netlist( |
There was a problem hiding this comment.
If this code is unused, it would be better to delete it. If it is old code, it would remain in the git history.
| print(netgen_lvs_result['result_str']) | ||
|
|
||
|
|
||
| ## Will be used in future for simulation |
|
|
||
| from glayout.flow.pdk.util.comp_utils import prec_ref_center, prec_center, movey, evaluate_bbox, align_comp_to_port | ||
|
|
||
| # def cascode_common_source_netlist( |
There was a problem hiding this comment.
It would be better to remove this file as it can be generated.





Team Mahowald-ers: PR for adding Regulated Cascoded Current Mirror block. This block will add a Cascode regulator block from this team's other PR for enhanced voltage swing.
Ref: DOI: 10.1109/AE54730.2022.9920096
This is an initial Commit and a Circuit (with description) will be added. Details of the goal of this PR can be found in this Gslides link presented in 05.09.2024 meeting
Current Status: A simple Current Mirror template is added. LVS is failing with Final result: Top level cell failed pin matching. Further comments will be added soon.