Corrected the schematic for the proper orientation of the topmost capacitor; the circuit now passes LVS.
diff --git a/netgen/comp.out b/netgen/comp.out index 9155711..691707f 100644 --- a/netgen/comp.out +++ b/netgen/comp.out
@@ -102,62 +102,37 @@ sky130_fd_pr__cap_mim_m3_2 (1) |sky130_fd_pr__cap_mim_m3_2 (1) sky130_fd_sc_hvl__buf_8 (2) |sky130_fd_sc_hvl__buf_8 (2) sky130_fd_pr__pfet_g5v0d10v5 (8) |sky130_fd_pr__pfet_g5v0d10v5 (8) -sky130_fd_pr__nfet_g5v0d10v5 (3) |sky130_fd_pr__nfet_g5v0d10v5 (5) **Mismatc +sky130_fd_pr__nfet_g5v0d10v5 (3) |sky130_fd_pr__nfet_g5v0d10v5 (3) sky130_fd_pr__res_xhigh_po_0p69 (3) |sky130_fd_pr__res_xhigh_po_0p69 (3) sky130_fd_sc_hvl__schmittbuf_1 (1) |sky130_fd_sc_hvl__schmittbuf_1 (1) sky130_fd_pr__cap_mim_m3_1 (1) |sky130_fd_pr__cap_mim_m3_1 (1) sky130_fd_sc_hvl__inv_8 (1) |sky130_fd_sc_hvl__inv_8 (1) -Number of devices: 20 **Mismatch** |Number of devices: 22 **Mismatch** -Number of nets: 16 **Mismatch** |Number of nets: 18 **Mismatch** +Number of devices: 20 |Number of devices: 20 +Number of nets: 16 |Number of nets: 16 --------------------------------------------------------------------------------------- -NET mismatches: Class fragments follow (with fanout counts): -Circuit 1: example_por |Circuit 2: example_por +Circuits match uniquely. +Property errors were found. +Netlists match uniquely. +There were property errors. +sky130_fd_pr__res_xhigh_po_0p69_S5N9F3_0/sky130_fd_pr__res_xhigh_po_0p693 vs. sky130_fd_pr__res_xhigh_po_0p69R1: +Property W in circuit2 has no matching property in circuit1 +sky130_fd_pr__res_xhigh_po_0p69_S5N9F3_0/sky130_fd_pr__res_xhigh_po_0p690 vs. sky130_fd_pr__res_xhigh_po_0p69R2: +Property W in circuit2 has no matching property in circuit1 +sky130_fd_pr__res_xhigh_po_0p69_S5N9F3_0/sky130_fd_pr__res_xhigh_po_0p6918 vs. sky130_fd_pr__res_xhigh_po_0p69R3: +Property W in circuit2 has no matching property in circuit1 ---------------------------------------------------------------------------------------- -Net: vss |Net: vss - sky130_fd_pr__cap_mim_m3_1/2 = 1 | sky130_fd_pr__cap_mim_m3_1/2 = 1 - sky130_fd_pr__cap_mim_m3_2/1 = 1 | sky130_fd_pr__cap_mim_m3_2/2 = 1 - sky130_fd_pr__nfet_g5v0d10v5/(1|3) = 3 | sky130_fd_pr__nfet_g5v0d10v5/(1|3) = 3 - sky130_fd_pr__nfet_g5v0d10v5/4 = 3 | sky130_fd_pr__nfet_g5v0d10v5/4 = 5 - sky130_fd_pr__res_xhigh_po_0p69/3 = 3 | sky130_fd_pr__res_xhigh_po_0p69/3 = 3 - sky130_fd_pr__res_xhigh_po_0p69/(1|2) = | sky130_fd_pr__res_xhigh_po_0p69/(1|2) = - sky130_fd_sc_hvl__buf_8/VGND = 2 | sky130_fd_sc_hvl__buf_8/VGND = 2 - sky130_fd_sc_hvl__buf_8/VNB = 2 | sky130_fd_sc_hvl__buf_8/VNB = 2 - sky130_fd_sc_hvl__inv_8/VGND = 1 | sky130_fd_sc_hvl__inv_8/VGND = 1 - sky130_fd_sc_hvl__inv_8/VNB = 1 | sky130_fd_sc_hvl__inv_8/VNB = 1 - sky130_fd_sc_hvl__schmittbuf_1/VGND = 1 | sky130_fd_sc_hvl__schmittbuf_1/VGND = 1 - sky130_fd_sc_hvl__schmittbuf_1/VNB = 1 | sky130_fd_sc_hvl__schmittbuf_1/VNB = 1 - | -Net: sky130_fd_sc_hvl__schmittbuf_1_0/A |Net: net4 - sky130_fd_pr__cap_mim_m3_2/2 = 1 | sky130_fd_pr__nfet_g5v0d10v5/2 = 2 - sky130_fd_sc_hvl__schmittbuf_1/A = 1 | sky130_fd_pr__nfet_g5v0d10v5/(1|3) = 2 - sky130_fd_pr__pfet_g5v0d10v5/(1|3) = 1 | - sky130_fd_pr__cap_mim_m3_1/1 = 1 | - | -(no matching net) |Net: net1 - | sky130_fd_pr__nfet_g5v0d10v5/(1|3) = 2 - | -(no matching net) |Net: net11 - | sky130_fd_pr__cap_mim_m3_1/1 = 1 - | sky130_fd_pr__cap_mim_m3_2/1 = 1 - | sky130_fd_pr__pfet_g5v0d10v5/(1|3) = 1 - | sky130_fd_sc_hvl__schmittbuf_1/A = 1 ---------------------------------------------------------------------------------------- -DEVICE mismatches: Class fragments follow (with node fanout counts): +Subcircuit pins: Circuit 1: example_por |Circuit 2: example_por - +-------------------------------------------|------------------------------------------- +vdd3v3 |vdd3v3 +porb_h |porb_h +porb_l |porb_l +por_l |por_l +vdd1v8 |vdd1v8 +vss |vss --------------------------------------------------------------------------------------- -(no matching instance) |Instance: sky130_fd_pr__nfet_g5v0d10v5M5 - | (1,3) = (24,4) - | 2 = 4 - | 4 = 24 - | - | -(no matching instance) |Instance: sky130_fd_pr__nfet_g5v0d10v5M2 - | (1,3) = (24,2) - | 2 = 4 - | 4 = 24 - | ---------------------------------------------------------------------------------------- -Netlists do not match. -Netlists do not match. +Cell pin lists are equivalent. +Device classes example_por and example_por are equivalent. +Circuits match uniquely. +Property errors were found. +The following cells had property errors: example_por
diff --git a/xschem/example_por.sch b/xschem/example_por.sch index 0dfa849..419c0c8 100644 --- a/xschem/example_por.sch +++ b/xschem/example_por.sch
@@ -21,58 +21,58 @@ T {Simple power-on-reset circuit calibrated to 500us nominal delay no temperature compensation} 1950 -570 0 0 0.6 0.6 {} -N 2500 -310 2500 -270 { lab=#net2} -N 2500 -210 2500 -100 { lab=#net3} -N 2300 -40 2300 20 { lab=#net4} +N 2500 -310 2500 -270 { lab=#net1} +N 2500 -210 2500 -100 { lab=#net2} +N 2300 -40 2300 20 { lab=#net3} N 2300 80 2300 110 { lab=vss} N 2360 110 2500 110 { lab=vss} N 2500 80 2500 110 { lab=vss} -N 2400 50 2460 50 { lab=#net4} +N 2400 50 2460 50 { lab=#net3} N 2360 -400 2500 -400 { lab=vdd3v3} N 2500 -400 2500 -370 { lab=vdd3v3} N 2500 -400 2790 -400 { lab=vdd3v3} -N 2300 -10 2370 -10 { lab=#net4} -N 2370 -10 2370 50 { lab=#net4} -N 2500 -290 2570 -290 { lab=#net2} -N 2570 -340 2570 -290 { lab=#net2} -N 2540 -340 2570 -340 { lab=#net2} -N 2500 -190 2570 -190 { lab=#net3} -N 2570 -240 2570 -190 { lab=#net3} -N 2540 -240 2570 -240 { lab=#net3} +N 2300 -10 2370 -10 { lab=#net3} +N 2370 -10 2370 50 { lab=#net3} +N 2500 -290 2570 -290 { lab=#net1} +N 2570 -340 2570 -290 { lab=#net1} +N 2540 -340 2570 -340 { lab=#net1} +N 2500 -190 2570 -190 { lab=#net2} +N 2570 -240 2570 -190 { lab=#net2} +N 2540 -240 2570 -240 { lab=#net2} N 2240 110 2360 110 { lab=vss} N 2500 110 2630 110 { lab=vss} N 2500 50 2630 50 { lab=vss} N 2110 110 2240 110 { lab=vss} N 1930 60 1930 110 { lab=vss} -N 1930 -160 1930 0 { lab=#net6} +N 1930 -160 1930 0 { lab=#net4} N 1930 -400 1930 -220 { lab=vdd3v3} N 2110 -400 2360 -400 { lab=vdd3v3} N 1880 -190 1910 -190 { lab=vss} N 1880 -190 1880 110 { lab=vss} N 1880 110 1930 110 { lab=vss} N 1880 30 1910 30 { lab=vss} -N 2300 -310 2300 -270 { lab=#net7} +N 2300 -310 2300 -270 { lab=#net5} N 2300 -400 2300 -370 { lab=vdd3v3} -N 2300 -140 2300 -100 { lab=#net5} -N 2340 50 2400 50 { lab=#net4} -N 2300 -210 2300 -140 { lab=#net5} +N 2300 -140 2300 -100 { lab=#net3} +N 2340 50 2400 50 { lab=#net3} +N 2300 -210 2300 -140 { lab=#net3} N 2100 80 2100 110 { lab=vss} N 2100 110 2110 110 { lab=vss} -N 2050 50 2060 50 { lab=#net6} -N 2050 -70 2050 50 { lab=#net6} -N 1930 -70 2050 -70 { lab=#net6} +N 2050 50 2060 50 { lab=#net4} +N 2050 -70 2050 50 { lab=#net4} +N 1930 -70 2050 -70 { lab=#net4} N 1930 -400 2110 -400 { lab=vdd3v3} N 2100 -400 2100 -370 { lab=vdd3v3} -N 2100 -310 2100 -270 { lab=#net8} -N 2100 -210 2100 20 { lab=#net9} +N 2100 -310 2100 -270 { lab=#net6} +N 2100 -210 2100 20 { lab=#net7} N 2100 50 2300 50 { lab=vss} N 2200 50 2200 110 { lab=vss} -N 2140 -240 2260 -240 { lab=#net9} -N 2140 -340 2260 -340 { lab=#net8} -N 2100 -290 2180 -290 { lab=#net8} -N 2180 -340 2180 -290 { lab=#net8} -N 2100 -180 2180 -180 { lab=#net9} -N 2180 -240 2180 -180 { lab=#net9} +N 2140 -240 2260 -240 { lab=#net7} +N 2140 -340 2260 -340 { lab=#net6} +N 2100 -290 2180 -290 { lab=#net6} +N 2180 -340 2180 -290 { lab=#net6} +N 2100 -180 2180 -180 { lab=#net7} +N 2180 -240 2180 -180 { lab=#net7} N 1930 -240 2100 -240 { lab=vdd3v3} N 1930 -340 2100 -340 { lab=vdd3v3} N 1930 110 2100 110 { lab=vss} @@ -80,42 +80,42 @@ N 2300 -340 2500 -340 { lab=vdd3v3} N 2400 -340 2400 -240 { lab=vdd3v3} N 2400 -400 2400 -340 { lab=vdd3v3} -N 2570 -240 2650 -240 { lab=#net3} -N 2570 -340 2650 -340 { lab=#net2} +N 2570 -240 2650 -240 { lab=#net2} +N 2570 -340 2650 -340 { lab=#net1} N 2690 -400 2690 -370 { lab=vdd3v3} N 2790 -400 2790 -340 { lab=vdd3v3} N 2690 -340 2790 -340 { lab=vdd3v3} N 2690 -240 2790 -240 { lab=vdd3v3} N 2790 -340 2790 -240 { lab=vdd3v3} -N 2690 -310 2690 -270 { lab=#net10} -N 2690 -210 2690 -150 { lab=#net11} +N 2690 -310 2690 -270 { lab=#net8} +N 2690 -210 2690 -150 { lab=#net9} N 1830 30 1880 30 { lab=vss} N 1810 60 1810 110 { lab=vss} N 1810 110 1880 110 { lab=vss} N 1810 -70 1810 0 { lab=vss} N 1810 -70 1880 -70 { lab=vss} -N 2690 -150 2690 -70 { lab=#net11} -N 2820 -130 2820 -70 { lab=#net11} -N 2690 -130 2820 -130 { lab=#net11} +N 2690 -150 2690 -70 { lab=#net9} +N 2820 -130 2820 -70 { lab=#net9} +N 2690 -130 2820 -130 { lab=#net9} N 2630 110 2820 110 { lab=vss} N 2820 -10 2820 110 { lab=vss} N 2690 -10 2690 110 { lab=vss} -N 2820 -130 2980 -130 { lab=#net11} -N 3060 -130 3130 -130 { lab=#net12} -N 3090 -130 3090 60 { lab=#net12} -N 3090 60 3130 60 { lab=#net12} -N 3090 -40 3130 -40 { lab=#net12} +N 2820 -130 2980 -130 { lab=#net9} +N 3060 -130 3130 -130 { lab=#net10} +N 3090 -130 3090 60 { lab=#net10} +N 3090 60 3130 60 { lab=#net10} +N 3090 -40 3130 -40 { lab=#net10} N 3210 -130 3300 -130 { lab=porb_h} N 3210 -40 3300 -40 { lab=porb_l} N 3210 60 3300 60 { lab=por_l} N 2790 -400 2840 -400 { lab=vdd3v3} N 2820 110 2870 110 { lab=vss} -N 2630 50 2690 50 {} -N 2300 -100 2300 -40 {} -N 2500 -100 2500 -30 {} -N 2500 -30 2500 20 {} +N 2630 50 2690 50 { lab=vss} +N 2300 -100 2300 -40 { lab=#net3} +N 2500 -100 2500 -30 { lab=#net2} +N 2500 -30 2500 20 { lab=#net2} C {sky130_fd_pr/cap_mim_m3_1.sym} 2690 -40 0 0 {name=C1 model=cap_mim_m3_1 W=30 L=30 MF=1 spiceprefix=X} -C {sky130_fd_pr/cap_mim_m3_2.sym} 2820 -40 0 0 {name=C2 model=cap_mim_m3_2 W=30 L=30 MF=1 spiceprefix=X} +C {sky130_fd_pr/cap_mim_m3_2.sym} 2820 -40 2 1 {name=C2 model=cap_mim_m3_2 W=30 L=30 MF=1 spiceprefix=X} C {sky130_fd_pr/pfet_g5v0d10v5.sym} 2280 -240 0 0 {name=M1 L=0.8 W=2
diff --git a/xschem/example_por_tb.sch b/xschem/example_por_tb.sch index 2d9ba11..6e8b3c8 100644 --- a/xschem/example_por_tb.sch +++ b/xschem/example_por_tb.sch
@@ -32,5 +32,10 @@ C {devices/opin.sym} 180 -50 0 0 {name=p3 lab=porb_h} C {devices/opin.sym} 180 -20 0 0 {name=p4 lab=porb_l} C {devices/opin.sym} 180 10 0 0 {name=p5 lab=por_l} -C {devices/code.sym} 140 -270 0 0 {name=s1 only_toplevel=false value=".lib /usr/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt"} -C {devices/code.sym} 260 -270 0 0 {name=s2 only_toplevel=false value=".include /usr/share/pdk/sky130A/libs.ref/sky130_fd_sc_hvl/spice/sky130_fd_sc_hvl.spice"} +C {devices/code_shown.sym} -470 140 0 0 {name=s1 only_toplevel=false value=".param mc_switch=0 +.lib /usr/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt +.include /usr/share/pdk/sky130A/libs.ref/sky130_fd_sc_hvl/spice/sky130_fd_sc_hvl.spice"} +C {devices/code_shown.sym} -470 250 0 0 {name=s2 only_toplevel=false value=".control +tran 1u 20m +plot V(vdd3v3) V(vdd1v8) V(porb_h) V(porb_l) V(por_l) +.endc"}
diff --git a/xschem/example_por_tb.spice b/xschem/example_por_tb.spice index 5af67cf..b58a814 100644 --- a/xschem/example_por_tb.spice +++ b/xschem/example_por_tb.spice
@@ -1,5 +1,4 @@ **.subckt example_por_tb vdd3v3 vdd1v8 porb_h porb_l por_l -.param mc_switch=0 *.opin vdd3v3 *.opin vdd1v8 *.opin porb_h @@ -10,11 +9,11 @@ V2 vdd1v8 GND PWL(0.0 0 300u 0 5.3m 1.8) **** begin user architecture code +.param mc_switch=0 .lib /usr/share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice tt - - .include /usr/share/pdk/sky130A/libs.ref/sky130_fd_sc_hvl/spice/sky130_fd_sc_hvl.spice + .control tran 1u 20m plot V(vdd3v3) V(vdd1v8) V(porb_h) V(porb_l) V(por_l) @@ -34,7 +33,7 @@ *.opin por_l *.iopin vdd1v8 XC1 net9 vss sky130_fd_pr__cap_mim_m3_1 W=30 L=30 MF=1 m=1 -XC2 net9 vss sky130_fd_pr__cap_mim_m3_2 W=30 L=30 MF=1 m=1 +XC2 vss net9 sky130_fd_pr__cap_mim_m3_2 W=30 L=30 MF=1 m=1 XM1 net3 net7 net5 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 L=0.8 W=2 nf=1 ad='int((nf+1)/2) * W/nf * 0.29' + as='int((nf+2)/2) * W/nf * 0.29' pd='2*int((nf+1)/2) * (W/nf + 0.29)' ps='2*int((nf+2)/2) * (W/nf + 0.29)' + nrd='0.29 / W' nrs='0.29 / W' sa=0 sb=0 sd=0 mult=1 m=1