<@U03SX0UNJRZ>: I'll look at this a little later ...
# magic
t
@Ellen Wood: I'll look at this a little later today. It would be helpful to know what version of the PDK you have, and the version of magic, because I modified both recently to handle the specific-size devices. I think you have the new PDK (it does not generate layers like
res0p35
and in fact no longer defines them), and the new PDK should force you to use the newer/compatible version of magic. The updated magic can specify specific device names to use for specific ranges of parameters. My suspicion here is that the bends in the resistor are extracted as a different effective width and may be messing with the new method (which I don't think I've tried with the snake geometry). The solution could be as simple as just slightly expanding the range of widths at which the
0p35
device is detected. I shouldn't need any example to reproduce the problem, as your description is very clear.
e
Thanks Tim, Magic is 8.3 revision 404, the PDK was downloaded on 16th June, not sure how to check which version it is, but I believe its the latest one as far as I'm aware?
t
The new parameter method was introduced in magic
8.3.411
, and the PDK was updated to make use of that change in open_pdks version
1.0.422
(July 6). So I would suggest an update first to see if that takes care of the problem, because I know that the extraction method is going to be different. That said, I have not used the device generator with snake resistors much, as initially I interpreted one of the design rules as meaning that resistor bends were not allowed; later I found that SkyWater uses snake geometry resistors in the I/O cells, so my interpretation was wrong. I updated the device generators to allow snake geometry, but have not done the same amount of validation with it.
d
@Tim Edwards Sorry if this is the wrong thread to use, but I am trying to use snake geometry in my layout. I noticed that the total length yields something slightly different from just a straight resistor, so I adjusted the length to compensate. However, I am getting property mismatches in LVS. Is there a way to account for the snake geometry in xschem? Or is there something else I should try? Thanks!
t
Assuming that there are no other errors other than the length modification needed to get the same effective length between the snake geometry and straight-resistor geometry, then the solution is to create a copy of the netgen
setup.tcl
file and change the tolerance for the resistors to whatever covers that difference (5%, say).
d
I see, thank you! One other concern I had is the resistor length shown in netgen. Would you happen to know how 246 is calculated? The device in magic is shown on the left
t
Netgen only looks at the netlist; it doesn't calculate anything itself. Is the 246 coming from the schematic netlist or the layout?
d
246 is the value given in the magic spice extraction
t
Snake resistors are by nature difficult to derive an equivalent length for. Magic generates a value which is pretty complicated to compute. The straight lines are calculated simply but separated from the corners. The corners are taken as 1/2 the length of the centerline through the corner. The
res_high_po
and
res_xhigh_po
have unsalicided poly covering the entire device, and the resistor is (arbitrarily) measured to the edge of the contact (which is a little behind the drawn contact line in magic) (the SPICE model for the resistor computes terminal resistance at the contacts based on that definition). The fact that the calculation depends on various assumptions is a good reason not to use snake geometry for matched devices.
d
Makes sense, thanks again
t
I just worked out the length of a resistor by hand and compared it to magic's output, and they match. But as I said, there are various assumptions going into that; in particular, the 1/2 resistance at corners is a commonly-accepted value, but I just looked at the SkyWater Calibre decks and they are calculating as (total area / width) which counts corners with a factor of 1.
d
Okay, thank you for the clarification. I think I will just replace them with straight resistors in series to stay on the safe side