image.png
# magic
e
image.png
h
I am not sure about the
snake
option, usually, I split a large resistor into smaller pieces and wire them up manually. This is usually preferred if this resistor needs to match to other resistors (I feel that bends are poorly modeled).
e
Ah ok, would you still use the device generator to make the resistors? I'm a bit nervous to create one by hand, as it uses layers I'm not familiar with (for example
xpolycontact
on either end, and the
res0p35
layer, which I cant seem to be able to paint myself)
What material would you wire them up with?
h
Yes, use the pcell definitely, use it to create enough “pieces” of the resistor. Also you can use one pcell to create resistor pieces for multiple matching resistors. BTW, I do the same for MOSFET. Wire them up with
m1
since it is low-res (
li1
is too resistive, and might add to the overall value of the resistor).
e
Brilliant. Thank you!
t
FYI, The snake geometry goes along with the "X repeat" value. If you have, say, X = 10, then without "snake geometry" you get 10 resistors in a row that need to be connected up with metal wires. If you have X = 10 with "snake geometry" then you get the snake geometry with contacts at the endpoints only.
e
Good to know 😊 👍🏻
Another resistor question @Tim Edwards, I am trying to make a small resistor (100 Ohms) and it looks like
li1
is my best bet for this. However when I generate this resistor, magic gives a DRC error saying
Local interconnect width < 0.29um (li.7)
I'm assuming adding more Li is not a good idea because it will increase resistance? Is this DRC rule ignorable?
image.png
t
@Ellen Wood: The rule is "Min LI resistor width (rule exempted within areaid.ed; Inside areaid.ed, min width of the li resistor is determined by rule li.1)". I think the likely purpose of the rule is to prevent large statistical variation in the resistor value; the wider the resistor is, the less variability you will get in the resulting resistance. If you have the area, I would just proportionally increase the width and length to make the width 0.29um and the length 2.25um.
Note that the local interconnect resistor is just a piece of local interconnect that has been identified as a resistor so that it will be extracted as a resistor device. Don't forget that there will be extra local interconnect on either side of the resistor to make the contacts that will add to the total resistance. I don't know if the 100 ohms is a precise target or not, but you need to watch out for the parasitic resistances in the net, because they can add significantly to that 100 ohms. In particular, the SkyWater contacts are pretty high resistance. A single contact cut from local interconnect up to metal 1 is 9.3 ohms, which is a significant error on the 100 ohm total (make a large contact on each end so that it accommodates an array of 3 x 3 contact cuts, and that will cut down the error by cutting the resistance down to about 1 ohm on each terminal).
e
Okay thank you @Tim Edwards that makes sense. 100 Ohms isn't too precise but we don't want it wildly off so I'll have a look into the parasitic resistances. Does the same apply to the Poly resistors, or are they more accurate (given that they are generated with large contacts on either end?)
t
The high-value poly resistors (300 ohms/square (res_high_po) and 2000 ohms/square (res_xhigh_po)) are very precise, and magic's device generator includes the terminal resistance of the contacts. The simple poly resistor is like the local interconnect resistor, in that it is just a length of poly that is marked so that it will be extracted as a device. All the same caveats apply, but the poly contact is even higher resistance than the local interconnect contact (as in 150 ohms per contact!).
👍 1