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
267 stars 85 forks source link

High-Resistivity Poly Resistors LVS Issue #68

Open yrrapt opened 3 years ago

yrrapt commented 3 years ago

I find LVS issues with the attached source files which consist of two sky130_fd_pr__res_xhigh_po resistor networks. Manually inspecting the netlist I see no difference.

Netgen agrees the topology is the same but differs on the property values:

Netlists match uniquely. Circuits match correctly. There were property errors. sky130_fd_prres_xhigh_po_1p00_12p4_0[1]/sky130_fd_prres_xhigh_po0 vs. sky130_fd_prres_xhigh_poRptat3: w circuit1: 1 circuit2: 7 (delta=150%, cutoff=1%) sky130_fd_pr__res_xhigh_po_1p00_12p4_0[1]/sky130_fd_prres_xhigh_po0 vs. sky130_fd_prres_xhigh_poRptat3: w circuit1: 7 circuit2: 1 (delta=150%, cutoff=1%) sky130_fd_prres_xhigh_po_1p00_12p4_0[9]/sky130_fd_prres_xhigh_po0 vs. sky130_fd_prres_xhigh_poRctat6: w circuit1: 1 circuit2: 7 (delta=150%, cutoff=1%) sky130_fd_prres_xhigh_po_1p00_12p4_0[9]/sky130_fd_prres_xhigh_po0 vs. sky130_fd_prres_xhigh_poRctat6: w circuit1: 7 circuit2: 3 (delta=80%, cutoff=1%) sky130_fd_pr__res_xhigh_po_1p00_12p4_0[9]/sky130_fd_prres_xhigh_po0 vs. sky130_fd_pr__res_xhigh_poRctat6: w circuit1: 3 circuit2: 1 (delta=100%, cutoff=1%)

issue_source_files.zip

RTimothyEdwards commented 3 years ago

@yrrapt : This appears to be a netgen issue and I will need to investigate it. Apparently the combination of parallel and series resistors is not being combined correctly, although the algorithm should have been pretty straightforward, identifying and combining parallel devices first, then series.

If you ensure, as you have done, that your schematic side netlist represents the resistors exactly as they are in the layout, then you can work around the problem by editing the sky130A_setup.tcl setup file for netgen. Comment out ("#") the three lines that indicate how to combine resistors in series (lines 47-49 and lines 60-62). This will force netgen not to combine the resistors in series. With that change, it doesn't have any problem matching the two netlists exactly.

Meanwhile I will track down what is wrong with the series/parallel combining algorithm.