Modifications to the wrapper testbench schematic (not quite working yet, though).
diff --git a/xschem/analog_wrapper_tb.sch b/xschem/analog_wrapper_tb.sch index 19675f8..736a27c 100644 --- a/xschem/analog_wrapper_tb.sch +++ b/xschem/analog_wrapper_tb.sch
@@ -17,9 +17,9 @@ N 480 -270 690 -270 { lab=#net2} N 690 -270 690 -250 { lab=#net2} N 300 10 450 10 { lab=#net3} -N 850 -270 850 0 { lab=io_analog[7]} -N 780 -270 850 -270 { lab=io_analog[7]} -N 780 -270 780 -250 { lab=io_analog[7]} +N 850 -270 850 0 { lab=io_analog[4]} +N 780 -270 850 -270 { lab=io_analog[4]} +N 780 -270 780 -250 { lab=io_analog[4]} N 300 30 470 30 { lab=io_clamp_high[2:0]} N 300 50 410 50 { lab=GND} N 550 30 630 30 { lab=io_clamp_high[2:0]} @@ -40,16 +40,43 @@ N 300 -70 480 -70 { lab=io_out[26:0]} N 520 -150 520 -60 { lab=io_oeb[16:15]} N 610 -150 610 -60 { lab=io_oeb[12:11]} -N 850 -0 850 40 { lab=io_analog[7]} +N 850 -0 850 40 { lab=io_analog[4]} N 640 40 810 40 { lab=io_clamp_high[2:1]} -N 670 0 850 -0 { lab=io_analog[7]} +N 670 0 850 -0 { lab=io_analog[4]} N 640 100 850 100 { lab=io_clamp_high[0]} -N 850 40 850 100 { lab=io_analog[7]} +N 850 40 850 100 { lab=io_analog[4]} +N 300 -270 400 -270 { lab=#net4} +N 300 -230 400 -230 { lab=#net5} +N 300 -190 400 -190 { lab=#net6} +N 300 -190 400 -190 { lab=#net6} +N 300 -170 400 -170 { lab=#net7} +N 290 -150 390 -150 { lab=#net8} +N 290 -130 390 -130 { lab=#net9} +N 290 -110 390 -110 { lab=#net10} +N 300 -90 400 -90 { lab=#net11} +N 300 -30 400 -30 { lab=#net12} +N 300 -10 400 -10 { lab=#net13} +N 300 70 400 70 { lab=#net14} +N -60 -290 -0 -290 { lab=#net15} +N -60 -270 0 -270 { lab=#net16} +N -60 -250 0 -250 { lab=#net17} +N -60 -230 0 -230 { lab=#net18} +N -60 -210 0 -210 { lab=#net19} +N -60 -210 0 -210 { lab=#net19} +N -60 -190 0 -190 { lab=#net20} +N -60 -190 0 -190 { lab=#net20} +N -60 -170 0 -170 { lab=#net21} +N -60 -150 0 -150 { lab=#net22} +N -60 -130 0 -130 { lab=#net23} +N -60 -110 0 -110 { lab=#net24} +N -60 -90 0 -90 { lab=#net25} +N -60 -70 0 -70 { lab=#net26} +N -60 -50 0 -50 { lab=#net27} C {user_analog_project_wrapper.sym} 150 -110 0 0 {name=x1} -C {devices/vsource.sym} 590 -220 0 0 {name=V1 value=3.3} -C {devices/vsource.sym} 690 -220 0 0 {name=V2 value=1.8} -C {devices/vsource.sym} 780 -220 0 0 {name=V3 value=3.3} -C {devices/bus_connect.sym} 660 10 1 1 {name=l1 lab=io_analog[7]} +C {devices/vsource.sym} 590 -220 0 0 {name=V1 value="PWL(0.0 0 400u 0 5.4m 3.3)"} +C {devices/vsource.sym} 690 -220 0 0 {name=V2 value="PWL(0.0 0 300u 0 5.3 1.8)"} +C {devices/vsource.sym} 780 -220 0 0 {name=V3 value="PWL(0.0 0 100u 0 5m 3.3)"} +C {devices/bus_connect.sym} 660 10 1 1 {name=l1 lab=io_analog[4]} C {devices/gnd.sym} 730 -150 0 0 {name=l2 lab=GND} C {devices/bus_connect.sym} 630 30 1 0 {name=l3 lab=io_clamp_high[2:1]} C {devices/bus_connect.sym} 630 90 1 0 {name=l8 lab=io_clamp_high[0]} @@ -60,3 +87,11 @@ C {devices/lab_pin.sym} 450 -70 0 0 {name=l5 sig_type=std_logic lab=io_out[26:0]} C {devices/bus_connect.sym} 510 -50 0 0 {name=l6 lab=io_oeb[16:15]} C {devices/bus_connect.sym} 600 -50 0 0 {name=l7 lab=io_oeb[12:11]} +C {devices/code_shown.sym} 920 -130 0 0 {name=s1 only_toplevel=false value=".param mc_mm_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 10u 20m +plot V(io_out[11]) V(io_out[12]) V(io_out[15]) V(io_out[16]) ++ V(gpio_analog[3]) V(gpio_analog[7]) +.endc"}
diff --git a/xschem/analog_wrapper_tb.spice b/xschem/analog_wrapper_tb.spice index e8d6c54..e28a311 100644 --- a/xschem/analog_wrapper_tb.spice +++ b/xschem/analog_wrapper_tb.spice
@@ -1,20 +1,79 @@ **.subckt analog_wrapper_tb -x1 net1 __UNCONNECTED_PIN__0 GND __UNCONNECTED_PIN__1 net2 __UNCONNECTED_PIN__2 __UNCONNECTED_PIN__3 -+ __UNCONNECTED_PIN__4 __UNCONNECTED_PIN__5 __UNCONNECTED_PIN__6 __UNCONNECTED_PIN__7 __UNCONNECTED_PIN__8 -+ __UNCONNECTED_PIN__9 __UNCONNECTED_PIN__10 __UNCONNECTED_PIN__11 __UNCONNECTED_PIN__12 __UNCONNECTED_PIN__13 -+ __UNCONNECTED_PIN__14 __UNCONNECTED_PIN__15 __UNCONNECTED_PIN__16 __UNCONNECTED_PIN__17 __UNCONNECTED_PIN__18 -+ __UNCONNECTED_PIN__19 io_out[26] io_out[25] io_out[24] io_out[23] io_out[22] io_out[21] io_out[20] io_out[19] io_out[18] -+ io_out[17] io_out[16] io_out[15] io_out[14] io_out[13] io_out[12] io_out[11] io_out[10] io_out[9] io_out[8] -+ io_out[7] io_out[6] io_out[5] io_out[4] io_out[3] io_out[2] io_out[1] io_out[0] io_oeb[26] io_oeb[25] -+ io_oeb[24] io_oeb[23] io_oeb[22] io_oeb[21] io_oeb[20] io_oeb[19] io_oeb[18] io_oeb[17] io_oeb[16] io_oeb[15] -+ io_oeb[14] io_oeb[13] io_oeb[12] io_oeb[11] io_oeb[10] io_oeb[9] io_oeb[8] io_oeb[7] io_oeb[6] io_oeb[5] -+ io_oeb[4] io_oeb[3] io_oeb[2] io_oeb[1] io_oeb[0] __UNCONNECTED_PIN__20 __UNCONNECTED_PIN__21 net3[10] -+ net3[9] net3[8] net3[7] net3[6] net3[5] net3[4] net3[3] net3[2] net3[1] net3[0] io_clamp_high[2] -+ io_clamp_high[1] io_clamp_high[0] GND GND GND __UNCONNECTED_PIN__22 __UNCONNECTED_PIN__23 -+ user_analog_project_wrapper -V1 net1 GND 3.3 -V2 net2 GND 1.8 -V3 io_analog[7] GND 3.3 +x1 net1 net4 GND net5 net2 net6 net7 net8 net15 net16 net17 net18 net19 net20[3] net20[2] net20[1] ++ net20[0] net21[31] net21[30] net21[29] net21[28] net21[27] net21[26] net21[25] net21[24] net21[23] net21[22] ++ net21[21] net21[20] net21[19] net21[18] net21[17] net21[16] net21[15] net21[14] net21[13] net21[12] net21[11] ++ net21[10] net21[9] net21[8] net21[7] net21[6] net21[5] net21[4] net21[3] net21[2] net21[1] net21[0] net22[31] ++ net22[30] net22[29] net22[28] net22[27] net22[26] net22[25] net22[24] net22[23] net22[22] net22[21] net22[20] ++ net22[19] net22[18] net22[17] net22[16] net22[15] net22[14] net22[13] net22[12] net22[11] net22[10] net22[9] ++ net22[8] net22[7] net22[6] net22[5] net22[4] net22[3] net22[2] net22[1] net22[0] net9 net10[31] net10[30] ++ net10[29] net10[28] net10[27] net10[26] net10[25] net10[24] net10[23] net10[22] net10[21] net10[20] net10[19] ++ net10[18] net10[17] net10[16] net10[15] net10[14] net10[13] net10[12] net10[11] net10[10] net10[9] net10[8] ++ net10[7] net10[6] net10[5] net10[4] net10[3] net10[2] net10[1] net10[0] net23[127] net23[126] net23[125] ++ net23[124] net23[123] net23[122] net23[121] net23[120] net23[119] net23[118] net23[117] net23[116] net23[115] ++ net23[114] net23[113] net23[112] net23[111] net23[110] net23[109] net23[108] net23[107] net23[106] net23[105] ++ net23[104] net23[103] net23[102] net23[101] net23[100] net23[99] net23[98] net23[97] net23[96] net23[95] ++ net23[94] net23[93] net23[92] net23[91] net23[90] net23[89] net23[88] net23[87] net23[86] net23[85] net23[84] ++ net23[83] net23[82] net23[81] net23[80] net23[79] net23[78] net23[77] net23[76] net23[75] net23[74] net23[73] ++ net23[72] net23[71] net23[70] net23[69] net23[68] net23[67] net23[66] net23[65] net23[64] net23[63] net23[62] ++ net23[61] net23[60] net23[59] net23[58] net23[57] net23[56] net23[55] net23[54] net23[53] net23[52] net23[51] ++ net23[50] net23[49] net23[48] net23[47] net23[46] net23[45] net23[44] net23[43] net23[42] net23[41] net23[40] ++ net23[39] net23[38] net23[37] net23[36] net23[35] net23[34] net23[33] net23[32] net23[31] net23[30] net23[29] ++ net23[28] net23[27] net23[26] net23[25] net23[24] net23[23] net23[22] net23[21] net23[20] net23[19] net23[18] ++ net23[17] net23[16] net23[15] net23[14] net23[13] net23[12] net23[11] net23[10] net23[9] net23[8] net23[7] ++ net23[6] net23[5] net23[4] net23[3] net23[2] net23[1] net23[0] net11[127] net11[126] net11[125] net11[124] ++ net11[123] net11[122] net11[121] net11[120] net11[119] net11[118] net11[117] net11[116] net11[115] net11[114] ++ net11[113] net11[112] net11[111] net11[110] net11[109] net11[108] net11[107] net11[106] net11[105] net11[104] ++ net11[103] net11[102] net11[101] net11[100] net11[99] net11[98] net11[97] net11[96] net11[95] net11[94] ++ net11[93] net11[92] net11[91] net11[90] net11[89] net11[88] net11[87] net11[86] net11[85] net11[84] net11[83] ++ net11[82] net11[81] net11[80] net11[79] net11[78] net11[77] net11[76] net11[75] net11[74] net11[73] net11[72] ++ net11[71] net11[70] net11[69] net11[68] net11[67] net11[66] net11[65] net11[64] net11[63] net11[62] net11[61] ++ net11[60] net11[59] net11[58] net11[57] net11[56] net11[55] net11[54] net11[53] net11[52] net11[51] net11[50] ++ net11[49] net11[48] net11[47] net11[46] net11[45] net11[44] net11[43] net11[42] net11[41] net11[40] net11[39] ++ net11[38] net11[37] net11[36] net11[35] net11[34] net11[33] net11[32] net11[31] net11[30] net11[29] net11[28] ++ net11[27] net11[26] net11[25] net11[24] net11[23] net11[22] net11[21] net11[20] net11[19] net11[18] net11[17] ++ net11[16] net11[15] net11[14] net11[13] net11[12] net11[11] net11[10] net11[9] net11[8] net11[7] net11[6] ++ net11[5] net11[4] net11[3] net11[2] net11[1] net11[0] net24[127] net24[126] net24[125] net24[124] net24[123] ++ net24[122] net24[121] net24[120] net24[119] net24[118] net24[117] net24[116] net24[115] net24[114] net24[113] ++ net24[112] net24[111] net24[110] net24[109] net24[108] net24[107] net24[106] net24[105] net24[104] net24[103] ++ net24[102] net24[101] net24[100] net24[99] net24[98] net24[97] net24[96] net24[95] net24[94] net24[93] ++ net24[92] net24[91] net24[90] net24[89] net24[88] net24[87] net24[86] net24[85] net24[84] net24[83] net24[82] ++ net24[81] net24[80] net24[79] net24[78] net24[77] net24[76] net24[75] net24[74] net24[73] net24[72] net24[71] ++ net24[70] net24[69] net24[68] net24[67] net24[66] net24[65] net24[64] net24[63] net24[62] net24[61] net24[60] ++ net24[59] net24[58] net24[57] net24[56] net24[55] net24[54] net24[53] net24[52] net24[51] net24[50] net24[49] ++ net24[48] net24[47] net24[46] net24[45] net24[44] net24[43] net24[42] net24[41] net24[40] net24[39] net24[38] ++ net24[37] net24[36] net24[35] net24[34] net24[33] net24[32] net24[31] net24[30] net24[29] net24[28] net24[27] ++ net24[26] net24[25] net24[24] net24[23] net24[22] net24[21] net24[20] net24[19] net24[18] net24[17] net24[16] ++ net24[15] net24[14] net24[13] net24[12] net24[11] net24[10] net24[9] net24[8] net24[7] net24[6] net24[5] ++ net24[4] net24[3] net24[2] net24[1] net24[0] net25[26] net25[25] net25[24] net25[23] net25[22] net25[21] ++ net25[20] net25[19] net25[18] net25[17] net25[16] net25[15] net25[14] net25[13] net25[12] net25[11] net25[10] ++ net25[9] net25[8] net25[7] net25[6] net25[5] net25[4] net25[3] net25[2] net25[1] net25[0] net26[26] ++ net26[25] net26[24] net26[23] net26[22] net26[21] net26[20] net26[19] net26[18] net26[17] net26[16] net26[15] ++ net26[14] net26[13] net26[12] net26[11] net26[10] net26[9] net26[8] net26[7] net26[6] net26[5] net26[4] ++ net26[3] net26[2] net26[1] net26[0] io_out[26] io_out[25] io_out[24] io_out[23] io_out[22] io_out[21] ++ io_out[20] io_out[19] io_out[18] io_out[17] io_out[16] io_out[15] io_out[14] io_out[13] io_out[12] io_out[11] ++ io_out[10] io_out[9] io_out[8] io_out[7] io_out[6] io_out[5] io_out[4] io_out[3] io_out[2] io_out[1] io_out[0] ++ io_oeb[26] io_oeb[25] io_oeb[24] io_oeb[23] io_oeb[22] io_oeb[21] io_oeb[20] io_oeb[19] io_oeb[18] io_oeb[17] ++ io_oeb[16] io_oeb[15] io_oeb[14] io_oeb[13] io_oeb[12] io_oeb[11] io_oeb[10] io_oeb[9] io_oeb[8] io_oeb[7] ++ io_oeb[6] io_oeb[5] io_oeb[4] io_oeb[3] io_oeb[2] io_oeb[1] io_oeb[0] net12[17] net12[16] net12[15] net12[14] ++ net12[13] net12[12] net12[11] net12[10] net12[9] net12[8] net12[7] net12[6] net12[5] net12[4] net12[3] ++ net12[2] net12[1] net12[0] net13[17] net13[16] net13[15] net13[14] net13[13] net13[12] net13[11] net13[10] ++ net13[9] net13[8] net13[7] net13[6] net13[5] net13[4] net13[3] net13[2] net13[1] net13[0] net3[10] net3[9] ++ net3[8] net3[7] net3[6] net3[5] net3[4] net3[3] net3[2] net3[1] net3[0] io_clamp_high[2] io_clamp_high[1] ++ io_clamp_high[0] GND GND GND net27 net14[2] net14[1] net14[0] user_analog_project_wrapper +V1 net1 GND PWL(0.0 0 400u 0 5.4m 3.3) +V2 net2 GND PWL(0.0 0 300u 0 5.3 1.8) +V3 io_analog[4] GND PWL(0.0 0 100u 0 5m 3.3) +**** begin user architecture code + +.param mc_mm_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 10u 20m +plot V(io_out[11]) V(io_out[12]) V(io_out[15]) V(io_out[16]) V(gpio_analog[3]) V(gpio_analog[7]) +.endc + +**** end user architecture code **.ends * expanding symbol: user_analog_project_wrapper.sym # of pins=32