It looks like you're new here. If you want to get involved, click one of these buttons!
Hello @Matthias ,
I trying to understand How does Klayout specify W, L of resistor in this case, Can you explain?
r_body = polygons(32, 0)
r_connector = polygons(31,0)
pin = labels(131,0)
connect(r_connector,pin)
extract_devices(resistor("Res",1),{ "R" => r_body,"C" => r_connector })
result:
circuit resistor ();
device Res $1 (A=B,B=A) (R=1.02877697842,L=0.143,W=0.139,A=0.010472,P=0.564);
end;
Thank you,
dai
Comments
Hello @dai,
So the blue patched are your terminals? That is kind of strange - usually they are connected on opposite sides.
The computation is L and W assumes a rectangular geometry with two ends being entirely assigned to "contact". The computation follows this scheme:
W is then computed as "total_length(w_edges) / 2" and L is computed as "total_length(l_edges) / 2".
In your case this leads to W being the average of the lengths of the blue stripes and L the average of basically nothing and the long path at the top and right side.
Matthias
Hello @Matthias
Yes, it is terminals.
i trying extract resistor of polygon shape(L,T.. shape), i split polygons to squares and each square is a resistor so it form resistor like that. Here is a example.
Thank you so much.
dai
I see - I guess my approximation is kind of crude for this application, but basically W and L should should give some average path length and width. Approximately.
Matthias
Hi @Matthias
BTW
Have any function help to calculate resistance from node 5 to node 6 in this picture?. I can not use netlist.simplify Because it combine all resistor to one. I trying to flag where is high resistor compare others.
Thank you so much!
dai
It looks like an over-elaborate version of the old school
"counting squares and corners" approach. For a fully
ortho resistor, seems like you could collect rectangles
(w/ orientation relative to current-flow axis, for squares
calculation apiece) and corners (treated as half-square)
pretty straightforwardly?
Now the contact cartoon makes zero sense, there's a
trivial gap where resistance will be way low irrespective
of bulk sheet resistance and further-out geometry. It
also does not match the latest "squares" figure, in the
contact-location aspect.
@dick_freebird Looks to me like the approach is to subdivide into pieces with a fixed dimension. So the small portion is a left-over part ...
Matthias
Thank you, @dick_freebird and @Matthias
I think i have to subdivide net into pieces because my net is complex and layout guys just want to show resistance between two specified points that they can select.
dai
Design resistors are (almost) always simple rectangles with terminals located on the opposite sides, corner to corner. Then you get a simple resistance formula: R=W/L*rsh.
For complex (non-1D) layouts like this, you need to mesh your area, apply proper boundary conditions, simulate, integrate the current along your ports / boundary, divide voltage by current, to get the resistance.
You can either spend some time doing that, or use a free field solver, or buy a commercial tool.
It's a tradeoff between your urgency, capabilities, money you are willing to spend on this, and guaranteed speed of getting the results and their quality.