From the PDK it looks like the difference between ...
# analog-design
m
From the PDK it looks like the difference between res_high and res_xhigh is one the doping, either + or -
what are the use cases for using one over the other?
c
My guess would be: the resistance per square. Just for fun, put res_high and res_xhigh resistors of the same size, not resistance, side by side in a schematic (or better yet, in a layout, if you already know how to extract netlists from there) and compare the resistance values. Conversely, you might try to put res_high and res_xhigh resistors with the same resistance value side by side and compare their sizes. R5 … R12 and R14 … R17 in xschem
top.sch
totally confuse me, but if (sorry, big IF) the underlying resistor models are accurate, a test schematic where you just copy&paste those resistors in should give you something to play with and find answers.
t
Generally I use
xhigh
only when I have to create really big resistors like 1 megaohm or larger. The
res_high
resistor has better matching and is generally better to use.
💡 1
c
I find the skywater process documentation, written in Google's Software Engineering Echo Chamber, less than easy to parse, but some processes offer optional extra fabrication steps to add a precision resistor implant … that costs extra. My guess would be that 1. you only get res_high and/or res_xhigh if you ask (and pay) for them 2. MPW runs may have these layers available, just in case.
t
Actually, the sky130 process is defined with a fixed set of masks rather than options (for simplicity, I guess), so the
res_high
and
res_xhigh
resistors are always available (or maybe it's more accurate to say that you always pay for them, as I assume that they would not run a completely blank mask through the process).
💡 1
m
I was wrong
I thought I'd checked them the same but xhigh is higher
t
If I bring up the default sky130 examples page in xschem, there are a bunch of resistors in the middle, in four rows: Row three is
res_high
and row four is
res_xhigh
and they have the appropriate resistances.
Do bear in mind, however, that the model behavior is quite complex and any resistance value told to you by either xschem or magic is slightly off from the actual modeled resistance. I think xschem now accounts for the terminal resistance, and I know that magic does, and there have been a number of corrections to those equations, so the number presented to the user as the actual resistance should be pretty close to the modeled number, minus various 2nd order effects due to voltage and temperature variation.
c
How would the models deal with process variation and mismatch, and if they do, which library options and flags would I need to set to model them?
t
@Christoph Maier: A complicated question. There are process corners for resistors and capacitors that are independent of process corners for active devices like FETs and bipolars. Generally, while FET corners are referred to as "fast" and "slow", resistor and capacitor corners are referred to as "high" and "low". Just like FET N and P corners are considered independently (
ff
,
fs
,
tt
, etc.), resistor and capacitor corners are treated independently (
hl
,
lh
,
ll
, etc.). For mismatch, there are resistor and capacitor mismatch corners (
.lib sky130.lib.spice hl_mm
, for example) as well as the basic corners (
.lib sky130.lib.spice hh
, for example). However, the corners are defined only for devices and you should also extract with the corresponding corners. Magic has corner styles for extraction to get the parasitics corresponding to the low or high corners.
l
The open pdk files have a body_pelgrom subcircuit parameter. They seem to be almost the same for both resistors.