RTimothyEdwards / open_pdks

PDK installer for open-source EDA tools and toolchains. Distributed with setups for the SkyWater 130nm and Global Foundries 180nm open processes.
http://opencircuitdesign.com/open_pdks
Apache License 2.0
292 stars 86 forks source link

Symbol calculated resistance on fixed width high poly resistors does not appear correct #409

Closed mhommelga closed 1 year ago

mhommelga commented 1 year ago

There is a large discrepancy between the calculated resistance (from L & W parameters) on the high poly resistor symbols depending on whether the fixed width or custom width symbol is used. Attached picture shows the issue and also shows that xhigh poly resistors match perfectly.

poly_resistors_L=10um

Example: Custom Width: Symbol: res_high_po W=1.41um L=10um Rcalc=2251 Ohm FIxed Width: Symbol res_high_po_1p41 (W=1.41um) L=10um Rcalc=1632Ohm

In some cases the values differ by 5x and the custom width resistors appear to be more realistic values and better match the simulation model. However for LVS to work on the layout I have, I need to use the fixed width resistors in the schematics.

d-m-bailey commented 1 year ago

@mhommelga The res_high_po_?p?? resistor models use more accurate resistance values as described here. The values displayed in xschem are just estimates and I don't think they're used in simulation.

mhommelga commented 1 year ago

Thanks - indeed the values shown on the symbol differs from the simulated value. Still someone might trust the symbol value blindly and not double check the simulation. As mentioned in my setup the only resistors I can get LVS clean are the fixed width ones. The others cannot be matched by netgen.

It would just be good to have the calculated resistance value match regardless of which version of the resistor symbol you use. It works great for the res_xhigh_po resistors as shown in the picture.

RTimothyEdwards commented 1 year ago

@d-m-bailey : While it's true that this is just an estimate, the difference between 9.1kOhms and 31.8kOhms is way too much to be accounted for by, say, lack of terminal resistance.

RTimothyEdwards commented 1 year ago

@d-m-bailey , @mhommelga : The error is in the symbol definitions for the specific-width devices. For example, res_high_po_5p73.sym has

tcleval(R=[ev \{ 56.46 * @L / 5.73 / @mult \}])

The error is that the width of 5.73um is already folded into the value 56.46 and should not be divided out again. I will inform Stefan Schippers of the error.

StefanSchippers commented 1 year ago

I have pushed the fix upstream. The displayed value is now a better estimate since the value is calculated from a fixed (contact) resistance and a sheet (per square) resistance.

I confirm also these displayed values are informative only, will not be used in simulation or dumped into netlists.

test_res

mhommelga commented 1 year ago

Thanks for the quick turn around and resolution.