Issue during parasitic extraction in Magic.
n
load preamp_2.mag flatten preamp_flat load preamp_flat extract all ext2sim labels on ext2sim extresist tolerance 10 extresist all ext2spice lvs ext2spice cthresh 0 ext2spice extresist on ext2spice
During extresist all, I am getting following errors : Please see the snapshot
If anyone has faced similar issue, please help me. Thank you.
Moreover, the post layout simulation is drastically different from schematic simulation.
m
Naina, you need to completely flatten the layout before parasitic extraction with magic.
n
HI Mitch Bailey, I have flatten the cell using the flatten command as stated above. Isn't that enough? Sorry but I can not open the link provided. it is asking for login and not working later on.
I do not have an account with the work space.
m
Copy code
load <cellname>
flatten my_flat_cell
load my_flat_cell
select top cell
extract do local
extract all
ext2sim labels on
ext2sim
extresist tolerance 10
extresist
ext2spice lvs
ext2spice cthresh 0
ext2spice extresist on
ext2spice
Here’s an invitation link.
n
Hey Mitch Bailey. Thank you so much for the answer and the link. I used the command you gave and still got the following errors:
m
I think we need @Tim Edwards to take a look.
t
I need a reproducible result.
The GDS alone is sufficient to reproduce the problem. This will take some debugging. It's not clear what's going on but I can see two apparently distinct problems: (1) The four res_xhigh_po_1p41 resistors at the top have a problem with one of the terminals being found, which is always the terminal "A", "B", "C", or "D". This results in the terminal being dropped in the R-C extracted netlist as-is, without the specific network node for the detailed R-C network, which will result in some error in the characteristics of those four networks, since it effectively moves the resistor terminal to the position of the port. These errors are happening during "extresist". (2) The res_xhigh_po_1p41 resistor at the bottom gets lost from the final netlist, which is quite odd because the device exists in both files that feed the final result (the .ext and .res.ext files), and ext2spice makes no complaint. It is the only device missing from the final netlist. The final netlist looks fine at a glance except for these issues, so they appear to be something specific to the res_xhigh_po resistor. . Both errors will need to be debugged, and I most likely won't have time to look into it until after Thursday
n
Thank you so much for all the help. In the final spice netlist there is an extra poly resistor being extracted which is messing the post layout simulation result.
Here is the extracted netlist with parasitic RC. The device x51 (in line 61) is extra which is not present in layout or schematic.
No worries about the delay.
t
What version of magic are you using? It's very curious that you got one extra device while my netlist is missing one device. . . Both problems center around the snake geometry resistor in the bottom corner. Your extra device is in parallel with the real one but has L=0.16 which effectively short-circuits the large resistor.
n
yup that is what is happening
I am using Magic 8.3.452
t
I haven't even changed any of the extresist code since then. . .
n
Ok. Maybe something is wrong from my end. I am currently designing a poly resistor with snake geometry to see how it is extracted.
t
It does look like the problem has something to do with the snake geometry, so at least that means that there's a workaround by using parallel straight resistors. Weirdly, though, the problem is happening in ext2spice, which should only be looking at the contents of the .ext files and shouldn't care about the geometry at all. The .ext file has the correct extraction for the resistor, and handles the snake geometry just fine.
It makes a little more sense to me now. One of the nodes that was replaced by its resistive network got into the .res.ext file, which means the fault is back in the extresist code, not ext2spice.
n
Ok. I tried reading .ext file but it did not make much sense to me. :( During extresist errors do pop up for each node connected to poly resistors (5 of them). It just affects the simulation with the snake geometry one.
t
I did take a long enough look at it to discover that there is a routine in extresist that does not work for snake resistors. It should not be too difficult to extend the routine to cover devices with more complex shapes. Unfortunately, that has no bearing at all on the other errors, since those resistors are just simple rectangles. But I had already suspected that there were two separate issues.
n
Oh ok. Thank you so much for the help. :) You are awesome. Looking forward to the update for snake resistor. For now I will use couple of series connected resistors and see how that goes.
Hey Tim Edwards, I saw one difference between snake geometry resistors and normal resistors in PDK. The normal resistor have MCON contact already present at the terminals but the snake geometry ones do not. I don't think that changes anything though.
Everything works fine with series connected resistors. There are still "node with no area" errors but netlist and post layout simulation is good.
Sorry but I have one more question. After extresist only 19 nets are output out of total 127. How to fix that? I think that affects the accuracy of post layout simulation. Doesn't it?
t
The number of nets output is related to the
extresist tolerance
value; it determines at what cutoff resistance a network is too low resistance to be worth extracting. You can play around with this value to get more or fewer nets in the output. You can also do
extresist all
instead of
extresist
, which will automatically decompose all nets into resistive networks, ignoring the tolerance value.
n
Ok. Thank you.
Hi, I used the "extresist all" command. I am getting another issue. I changed the resistor with snake geometry to 26 series connected resistors. When I use "extresist all" command, It extracts only 11 resistors out of total 26. There are more errors present as well. Please find the attachment of the updated GDS and spice file. There should be a total of 95 extracted devices but there are only 57.
Moreover, the .ext file has all the device present.
I just had a look at "preamp_2_flat.res.ext", it has "killnode" for 31 nodes. I guess they are getting deleted.
m
Naina, the spice file you attached has 14
sky130_fd_pr__res_xhigh_po_1p41
resistors, 4 with
l=15
and 10 with
l=30
. The layout has 4 with
l=15
and 26 with
l=30
. I looked at the terminals for a couple resistors in the extracted netlist and they do not appear to be connected to anything.
n
Hi @Mitch Bailey. Yes I used
extresist all
command instead of
extresist
to get all the nets at output with parasitic R. But I am having issue with resistance extraction.
t
@naina singhal, @Mitch Bailey: Sorry about the several-day delay as I was busy launching the Chipalooza challenge; but I tracked down the issues over the weekend (there were two independent issues) and fixed them. The one causing issues with the snake resistor I knew about and knew where to apply the fix, so that was relatively easy. But there was a second error caused by the way the high-resistance poly contact was defined in the sky130 tech file, which caused the contact tracer in extersist to break, so switching from the snake-geometry resistor to the straight-line resistors just traded off one error for the other. The fixed version of magic is 8.3.461, which I just pushed to opencircuitdesign.com (it will update on github in about 12 hours). I tested it on your example layout and it appears to be completely correct now.
🙌 1
👍 1
n
Hi @Tim Edwards. Thank you so much for the help and fixing the issue. I will update magic. No worries about the delay.
130 Views