blob: e81f97f51965e3f88988684879b874fb67811a45 [file] [log] [blame]
v {xschem version=3.0.0 file_version=1.2 }
G {}
K {}
V {}
S {}
E {}
B 2 1350 -10 2150 390 {flags=graph
y1=0
y2=2
ypos1=0
ypos2=2
divy=5
subdivy=1
unity=1
x1=0
x2=3.95631e-05
divx=5
subdivx=1
node="PIXEL_OUT,col0x7x,col0x6x,col0x5x,col0x4x,col0x3x,col0x2x,col0x1x,col0x0x
read"
color="4 5"
dataset=0
unitx=u
digital=1}
B 2 1350 -450 2150 -50 {flags=graph
y1=0.58
y2=0.6
ypos1=0
ypos2=2
divy=5
subdivy=1
unity=1
x1=0
x2=3.95631e-05
divx=5
subdivx=1
dataset=0
unitx=u
color=4
node=AMP_OUT}
N 130 260 130 290 { lab=PLUS}
N 270 260 270 290 { lab=vbias}
N 370 260 370 290 { lab=CSA}
N 420 60 440 60 {
lab=vbias}
N 420 -100 440 -100 {
lab=CSA}
N 420 -140 440 -140 {
lab=PLUS}
N 420 120 440 120 {
lab=VDD}
N -30 450 -20 450 {
lab=VCC}
N 20 470 30 470 {
lab=VCC}
N 60 490 70 490 {
lab=VCC}
N 40 450 130 450 {
lab=#net1}
N 90 470 130 470 {
lab=#net2}
N 420 80 440 80 {
lab=NB1}
N 420 100 440 100 {
lab=NB2}
N 420 -80 440 -80 {
lab=SF_IB}
N 500 260 500 280 {
lab=ADC_ON}
N 500 340 500 360 {
lab=GND}
N -340 340 -340 380 {
lab=NB1}
N -420 380 -340 380 {
lab=NB1}
N -420 240 -420 380 {
lab=NB1}
N -490 340 -490 360 {
lab=NB2}
N -520 360 -490 360 {
lab=NB2}
N -580 360 -520 360 {
lab=NB2}
N -490 330 -490 340 {
lab=NB2}
N -180 310 -180 370 {
lab=GND}
N -250 230 -180 230 {
lab=SF_IB}
N -180 230 -180 250 {
lab=SF_IB}
N -100 260 -100 290 { lab=row_sel}
N -100 260 -70 260 {
lab=row_sel}
N 420 0 440 0 {
lab=BIAS1_OUT}
N 420 -20 440 -20 {
lab=BIAS2_OUT}
N 710 290 710 310 {
lab=RAMP}
N 640 290 640 310 {
lab=VCC}
N 730 450 730 470 {
lab=SA_VREF}
N 730 530 730 550 {
lab=GND}
N 120 670 120 690 {
lab=#net3}
N 120 670 200 670 {
lab=#net3}
N 260 670 440 670 {
lab=CLK}
N 30 610 30 630 {
lab=#net4}
N 30 610 230 610 {
lab=#net4}
N 230 610 230 630 {
lab=#net4}
N 210 830 230 830 {
lab=#net5}
N 210 850 230 850 {
lab=#net6}
N 210 810 230 810 {
lab=#net7}
N 530 950 550 950 {
lab=#net8}
N 530 930 550 930 {
lab=#net9}
N 530 910 550 910 {
lab=#net10}
N 530 890 550 890 {
lab=#net11}
N 530 870 550 870 {
lab=#net12}
N 530 850 550 850 {
lab=#net13}
N 530 830 550 830 {
lab=#net14}
N 530 810 550 810 {
lab=#net15}
N 40 850 50 850 {
lab=GND}
N 420 40 440 40 {
lab=GRAY_IN[7:0]}
N 420 20 440 20 {
lab=RAMP}
N 420 -120 440 -120 {
lab=row_sel}
N 840 450 840 470 {
lab=READ}
N 420 -40 440 -40 {
lab=READ}
N 740 -160 790 -160 {
lab=AMP_OUT}
N 740 -140 790 -140 {
lab=PIX_OUT}
N 740 -120 790 -120 {
lab=OUT[7:0]}
N 910 20 930 20 { lab=GND}
N 910 20 910 100 { lab=GND}
N 960 100 1000 100 {
lab=ARRAY_OUT}
N 860 100 880 100 {
lab=PIX_OUT}
N 980 100 980 130 {
lab=ARRAY_OUT}
N 940 100 960 100 {
lab=ARRAY_OUT}
N 810 660 830 660 {
lab=SA_VREF}
N 810 640 830 640 {
lab=OUT[7:0]}
N 1130 640 1150 640 {
lab=COL0[7:0]}
N 810 680 830 680 {
lab=SA_IREF_OUT}
C {devices/code.sym} -10 60 0 0 {name=TT_MODELS1
only_toplevel=true
format="tcleval( @value )"
value="
** opencircuitdesign pdks install
.lib $::SKYWATER_MODELS/sky130.lib.spice tt
.global vcc
"
spice_ignore=false}
C {devices/code.sym} -10 -100 0 0 {name=STIMULI1
only_toplevel=true
place=end
value="
.options gmin=10e-20
.control
save all
*dc v2 0 1.8 0.05
*plot v(test)
tran 1u 200u
write pixel_components_tb.raw
.endc
"}
C {devices/vsource.sym} 60 320 0 0 {name=V8 value=1.8 net_name=true}
C {devices/vsource.sym} 130 320 0 0 {name=V9 only_toplevel=true value="DC=0.80"}
C {devices/lab_pin.sym} 130 260 0 1 {name=l1 sig_type=std_logic lab=PLUS}
C {devices/vsource.sym} 270 320 0 0 {name=V11 only_toplevel=true value="DC=1"}
C {devices/lab_pin.sym} 270 260 0 1 {name=l4 sig_type=std_logic lab=vbias}
C {devices/gnd.sym} 60 350 0 0 {name=l6 lab=GND}
C {devices/gnd.sym} 130 350 0 0 {name=l7 lab=GND}
C {devices/gnd.sym} 270 350 0 0 {name=l31 lab=GND}
C {devices/vsource.sym} 370 320 0 0 {name=V12 only_toplevel=true value="DC=0.7"}
C {devices/lab_pin.sym} 370 260 0 1 {name=l9 sig_type=std_logic lab=CSA}
C {devices/gnd.sym} 370 350 0 0 {name=l36 lab=GND}
C {devices/vdd.sym} 60 290 0 0 {name=l37 lab=VDD}
C {devices/lab_pin.sym} 420 -100 2 1 {name=l2 sig_type=std_logic lab=CSA}
C {devices/lab_pin.sym} 420 60 2 1 {name=l3 sig_type=std_logic lab=vbias}
C {devices/lab_pin.sym} 420 -140 2 1 {name=l5 sig_type=std_logic lab=PLUS}
C {devices/vdd.sym} 420 120 3 0 {name=l8 lab=VDD}
C {devices/isource.sym} 10 450 3 0 {name=I1 value=100n}
C {devices/lab_pin.sym} -30 450 3 0 {name=p12 lab=VCC}
C {devices/isource.sym} 60 470 3 0 {name=I3 value=40n}
C {devices/lab_pin.sym} 20 470 3 0 {name=p3 lab=VCC}
C {devices/isource.sym} 100 490 3 0 {name=I8 value=200n}
C {devices/lab_pin.sym} 60 490 3 0 {name=p13 lab=VCC}
C {devices/lab_pin.sym} 430 430 2 0 {name=l40 sig_type=std_logic lab=NB1}
C {devices/lab_pin.sym} 430 450 2 0 {name=l55 sig_type=std_logic lab=NB2}
C {devices/lab_pin.sym} 430 510 2 0 {name=l56 lab=BIAS2_OUT}
C {devices/lab_pin.sym} 430 470 2 0 {name=l57 lab=SF_IB}
C {devices/lab_pin.sym} 430 490 2 0 {name=l58 lab=BIAS1_OUT}
C {devices/lab_pin.sym} 430 530 2 0 {name=l59 lab=SA_IREF_OUT}
C {devices/lab_pin.sym} 130 430 0 0 {name=l61 sig_type=std_logic lab=ADC_ON}
C {devices/lab_pin.sym} 420 80 0 0 {name=l10 sig_type=std_logic lab=NB1}
C {devices/lab_pin.sym} 420 100 0 0 {name=l11 sig_type=std_logic lab=NB2}
C {devices/lab_pin.sym} 420 -80 0 0 {name=l12 lab=SF_IB}
C {devices/vsource.sym} 500 310 0 0 {name=V6 value=1.8}
C {devices/gnd.sym} 500 360 0 0 {name=V15 value="PULSE(0 1.8 20us 0.01us 0.01us 10us 50us)"}
C {devices/gnd.sym} 500 360 0 0 {name=V16 value="PULSE(0 1.8 20us 0.01us 0.01us 10us 50us)"}
C {devices/lab_pin.sym} 500 260 0 0 {name=l60 sig_type=std_logic lab=ADC_ON}
C {devices/ngspice_probe.sym} -340 370 0 0 {name=r2}
C {devices/vdd.sym} -340 280 0 0 {name=l46 lab=VDD}
C {devices/lab_pin.sym} -420 240 0 1 {name=l47 sig_type=std_logic lab=NB1}
C {devices/vdd.sym} -490 270 0 0 {name=l48 lab=VDD}
C {devices/isource.sym} -490 300 0 0 {name=I4 value=30n}
C {devices/lab_pin.sym} -580 360 0 0 {name=l51 sig_type=std_logic lab=NB2}
C {devices/isource.sym} -180 280 0 0 {name=I6 value=200n}
C {devices/lab_pin.sym} -180 370 0 1 {name=l30 sig_type=std_logic lab=GND}
C {devices/lab_pin.sym} -250 230 0 0 {name=l32 sig_type=std_logic lab=SF_IB}
C {devices/vsource.sym} -100 320 0 0 {name=V5 net_name=true value="dc=2" PULSE(0 1.8 20m 20u 20u 50m)"}
C {devices/gnd.sym} -100 350 0 0 {name=l35 lab=GND}
C {devices/lab_pin.sym} -70 260 2 0 {name=l38 sig_type=std_logic lab=row_sel}
C {devices/isource.sym} -340 310 0 0 {name=I0 value=400n}
C {devices/lab_pin.sym} 420 0 0 0 {name=l13 lab=BIAS1_OUT}
C {devices/lab_pin.sym} 420 -20 0 0 {name=l14 lab=BIAS2_OUT}
C {devices/code_shown.sym} -470 550 0 0 {name=SPICE only_toplevel=false value="
.param per = 0.1u
.param t_start = 4u
.param num_bits=8
.param num_rows = 1
.param num_cols = 1
.param ramp_low=400m
.param ramp_high=1000m
.param t_read=2u
.param t_ramp = \{per * pow(2,num_bits)\}
.param read_start = \{t_start + t_ramp\}
.param pixel_rate = \{t_ramp + t_read*num_rows\}
"}
C {devices/lab_pin.sym} 640 290 0 0 {name=p1 lab=VCC}
C {devices/vsource.sym} 640 340 0 0 {name=V1 value=1.8}
C {devices/gnd.sym} 640 370 0 0 {name=l15 lab=GND}
C {devices/vsource.sym} 710 340 0 0 {name=V2 value="PULSE(\{ramp_low\} \{ramp_high\} \{t_start\} \{t_ramp\} 0.01u \{pixel_rate-t_ramp\} \{pixel_rate\})"}
C {devices/gnd.sym} 710 370 0 0 {name=l16 lab=GND}
C {devices/lab_pin.sym} 710 290 2 0 {name=l17 sig_type=std_logic lab=RAMP}
C {devices/vsource.sym} 730 500 0 0 {name=V10 value=500m}
C {devices/gnd.sym} 730 550 0 0 {name=V13 value="PULSE(0 1.8 20us 0.01us 0.01us 10us 50us)"}
C {devices/gnd.sym} 730 550 0 0 {name=V14 value="PULSE(0 1.8 20us 0.01us 0.01us 10us 50us)"}
C {devices/lab_pin.sym} 730 450 0 0 {name=l19 sig_type=std_logic lab=SA_VREF}
C {devices/vsource.sym} 120 720 0 0 {name=V4 value="PULSE(0 1.8 \{t_start\} 0.01u 0.01u \{per/2\} \{per\})"}
C {devices/gnd.sym} 120 750 0 0 {name=l23 lab=GND}
C {devices/vsource.sym} 30 660 0 0 {name=V3 value="PULSE(2 0 \{read_start\} 0.01us 0.01us \{pixel_rate-t_ramp\} \{pixel_rate\})"}
C {devices/gnd.sym} 30 690 0 0 {name=l18 lab=GND}
C {devices/lab_pin.sym} 440 670 2 0 {name=l42 sig_type=std_logic lab=CLK}
C {devices/spice_probe.sym} 310 670 3 0 {name=p22 attrs=""}
C {sky130_fd_pr/nfet3_01v8_lvt.sym} 230 650 1 0 {name=M1
L=1
W=5
nf=1
mult=1
body=GND
ad="'int((nf+1)/2) * W/nf * 0.29'"
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
as="'int((nf+2)/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
model=nfet_01v8_lvt
spiceprefix=X
}
C {digital_prims/adc_bridge.sym} 120 850 0 0 {name=x6}
C {devices/lab_pin.sym} 50 810 0 0 {name=p24 lab=VCC}
C {digital_prims/adc_bridge.sym} 120 810 0 0 {name=x8}
C {digital_prims/adc_bridge.sym} 120 830 0 0 {name=x7}
C {devices/lab_pin.sym} 710 950 2 0 {name=l70 sig_type=std_logic lab=GRAY_IN[0]}
C {adc/8bit_graycounter.sym} 380 880 0 0 {name=x10}
C {devices/gnd.sym} 40 850 1 0 {name=l71 lab=GND}
C {devices/lab_pin.sym} 710 930 2 0 {name=l72 sig_type=std_logic lab=GRAY_IN[1]}
C {devices/lab_pin.sym} 710 910 2 0 {name=l73 sig_type=std_logic lab=GRAY_IN[2]}
C {devices/lab_pin.sym} 710 890 2 0 {name=l74 sig_type=std_logic lab=GRAY_IN[3]}
C {devices/lab_pin.sym} 710 870 2 0 {name=l75 sig_type=std_logic lab=GRAY_IN[4]}
C {devices/lab_pin.sym} 710 850 2 0 {name=l76 sig_type=std_logic lab=GRAY_IN[5]}
C {devices/lab_pin.sym} 710 830 2 0 {name=l77 sig_type=std_logic lab=GRAY_IN[6]}
C {devices/lab_pin.sym} 710 810 2 0 {name=l78 sig_type=std_logic lab=GRAY_IN[7]}
C {devices/lab_pin.sym} 50 830 0 0 {name=l79 sig_type=std_logic lab=CLK}
C {digital_prims/dac_bridge.sym} 700 810 0 0 {name=x5}
C {digital_prims/dac_bridge.sym} 700 830 0 0 {name=x9}
C {digital_prims/dac_bridge.sym} 700 850 0 0 {name=x11}
C {digital_prims/dac_bridge.sym} 700 870 0 0 {name=x12}
C {digital_prims/dac_bridge.sym} 700 890 0 0 {name=x13}
C {digital_prims/dac_bridge.sym} 700 910 0 0 {name=x14}
C {digital_prims/dac_bridge.sym} 700 930 0 0 {name=x15}
C {digital_prims/dac_bridge.sym} 700 950 0 0 {name=x16}
C {devices/lab_pin.sym} 420 40 0 0 {name=l20 sig_type=std_logic lab=GRAY_IN[7:0]}
C {devices/lab_pin.sym} 420 20 0 0 {name=l21 lab=RAMP}
C {devices/lab_pin.sym} 420 -120 0 0 {name=l22 sig_type=std_logic lab=row_sel}
C {devices/vsource.sym} 840 500 0 0 {name=V7 value="PULSE(0 1.8 \{read_start\} 0.01u 0.01u \{t_read\} \{pixel_rate\})"}
C {devices/gnd.sym} 840 530 0 0 {name=l24 lab=GND}
C {devices/lab_pin.sym} 840 450 2 0 {name=l33 sig_type=std_logic lab=READ}
C {devices/spice_probe.sym} 840 460 3 0 {name=p20 attrs=""}
C {devices/lab_pin.sym} 420 -40 0 0 {name=l25 sig_type=std_logic lab=READ}
C {devices/netlist_options.sym} -460 990 0 0 {
bus_replacement_char="xx"
}
C {devices/spice_probe.sym} 760 -160 0 0 {name=p2 attrs=""}
C {devices/spice_probe.sym} 760 -140 0 0 {name=p4 attrs=""}
C {devices/lab_pin.sym} 790 -140 2 0 {name=l26 sig_type=std_logic lab=PIX_OUT}
C {devices/lab_pin.sym} 790 -160 2 0 {name=l27 sig_type=std_logic lab=AMP_OUT}
C {devices/lab_pin.sym} 790 -120 2 0 {name=l28 sig_type=std_logic lab=OUT[7:0]}
C {devices/gnd.sym} 930 20 3 0 {name=l121 lab=GND}
C {devices/lab_pin.sym} 910 140 3 0 {name=l122 sig_type=std_logic lab=COL_SEL0}
C {sky130_fd_pr/nfet_01v8_lvt.sym} 910 120 3 0 {name=M8
L=0.15
W=8
nf=1
mult=1
ad="'int((nf+1)/2) * W/nf * 0.29'"
pd="'2*int((nf+1)/2) * (W/nf + 0.29)'"
as="'int((nf+2)/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
model=nfet_01v8_lvt
spiceprefix=X
}
C {devices/lab_pin.sym} 1000 100 2 0 {name=l53 sig_type=std_logic lab=ARRAY_OUT
}
C {devices/isource.sym} 980 160 0 0 {name=I9 value=1u}
C {devices/gnd.sym} 980 190 0 0 {name=l54 lab=GND}
C {devices/lab_pin.sym} 1060 210 1 0 {name=l162 sig_type=std_logic lab=COL_SEL0}
C {devices/vsource.sym} 1060 240 0 0 {name=Vcol1 value="1.8" pulse(0.0 1.8 2u 0.1u 0.1u 1u 2u)"}
C {devices/gnd.sym} 1060 270 0 0 {name=l163 lab=GND}
C {devices/lab_pin.sym} 860 100 0 0 {name=l29 sig_type=std_logic lab=PIX_OUT}
C {devices/opin.sym} 1150 640 0 0 {name=p6 lab=COL0[7:0]}
C {devices/lab_pin.sym} 810 660 0 0 {name=l34 sig_type=std_logic lab=SA_VREF}
C {devices/lab_pin.sym} 810 640 0 0 {name=l39 sig_type=std_logic lab=OUT[7:0]}
C {devices/lab_pin.sym} 810 680 0 0 {name=l41 sig_type=std_logic lab=SA_IREF_OUT}
C {post_layout/pixel_layout.sym} 590 -20 0 0 {name=x1}
C {post_layout/bias_layout.sym} 280 480 0 0 {name=x3}
C {post_layout/8bit_SA_conv_layout.sym} 980 660 0 0 {name=x2}