netlist extraction from GDS does not work as expected in ngspice #229
-
on running these in magic- the netlist generated have 2 issues:
I made a digital counter in verilog - ran it through openRoad to generate GDS file and ran the above to extract netlist to run on ngspice. When I drive it - I dont get expected output. The design is verified to work in a verilog test bench. So there seems to be an issue in extraction? |
Beta Was this translation helpful? Give feedback.
Replies: 9 comments 10 replies
-
@spnadig : You might have typos in your list of commands, but the proper sequence of commands to get an R-C parasitic extracted netlist is:
Also, the R-C extraction has unknown/unproven reliability when extracting a hiearchy, so it works best if you flatten the circuit first with the |
Beta Was this translation helpful? Give feedback.
-
@spnadig : The negative capacitances are a known problem that I am actively working on, and hope to have a patch for in a day or two. The zero area of diodes is not one I'm aware of. Which type (or types) of diode is showing the problem? |
Beta Was this translation helpful? Give feedback.
-
Are you flattening the design before running extraction? I cannot guarantee that full R-C extraction works at all on a hierarchical layout, even if you have manually worked through the entire subcell tree and run ext2sim on every cell (which you would need to do in order for it to work at all). Do not save the flattened layout (it would make everything harder for DRC, LVS, and GDS generation), but just use it to generate the extracted netlist. |
Beta Was this translation helpful? Give feedback.
-
@proppy : I'm still not sure why that layout ends up with devices with area/length/width of zero, because I have not been able to come up with my own example that duplicates that issue. The issue with negative capacitance is one that I'm aware of and currently working on (as in, today). |
Beta Was this translation helpful? Give feedback.
-
I believe that I have now tracked down and fixed all of the issues in the extraction that produce negative capacitances. |
Beta Was this translation helpful? Give feedback.
-
@RTimothyEdwards - thanks for fixing -ve capacitance. I have one other thing regarding extraction to bring to your attention When I compare extraction from magic with commercial tools - the Capacitance extraction is is close agreement. However, R is inaccurate and for some nodes R is significantly different when compared to extraction from commercial tools. Is inaccuracy in R extraction known and can this be fixed? |
Beta Was this translation helpful? Give feedback.
-
@spnadig : I'd have to do some comparisons. I have spot-checked some of the resistance results and they look valid to me, at least for simple geometries. I have not tried to analyze complicated resistive networks. Generally, the algorithm looks valid and its assumptions seem reasonable. I would not expect a large departure from another tool unless the underlying sheet resistance numbers are significantly different. Do you know what numbers are being plugged into the commercial tool? Can you validate the total resistance of a wire for a simple case, such as a relatively simple set of wire lengths and contact cuts? |
Beta Was this translation helpful? Give feedback.
-
@spnadig : Can you please send me or post a layout that has a large discrepancy in R compared to a commercial tool result, and locate the net that is showing the discrepancy? I want to debug what's going on, since at the moment I can't tell if the problem lies in the numbers put into the technology file, or in magic's extresist code. |
Beta Was this translation helpful? Give feedback.
Are you flattening the design before running extraction? I cannot guarantee that full R-C extraction works at all on a hierarchical layout, even if you have manually worked through the entire subcell tree and run ext2sim on every cell (which you would need to do in order for it to work at all). Do not save the flattened layout (it would make everything harder for DRC, LVS, and GDS generation), but just use it to generate the extracted netlist.