blob: 18065b82e15e40b1afb22ff6c36e58f3b15788cc [file] [log] [blame]
Tim Edwards10708322020-11-20 13:55:57 -05001*-------------------------------------------------------------------
2* Simple POR circuit for Caravel
3*-------------------------------------------------------------------
4*
5* Architecture:
6*
7* Resistive divider sets mvnfet transistor gate voltage to ??V
8* mvnfet current is 240nA nominal
9* mvnfet drives current mirror at 1/400x to 600pA through mvpfet
10* current feeds 1.84pF capacitor (double MiM at 30um x 30um)
11* voltage across capacitor is input to chain of two schmitt trigger
12* inverters.
13*
14* Q = C * V = I * dt
15*
16* t = C * V / I = 1.84pF * 3.3V / 600pA = 10ms
17*
18* ~400x step-down done by mirroring 1:8, 1:7, 1:7 (= 392)
19*
20* From DC sweep test result, V = 0.7575 on the transtor gate at vin
21* Resistor divider at fraction 0.23.
22* This yields resistor lengths of 500 on top, 149 on the bottom
23*
24* Actual response of this circuit by ngspice simulation is 15ms.
25*-------------------------------------------------------------------
26
Tim Edwards1feaa102020-11-22 15:10:38 -050027.subckt simple_por vdd3v3 vdd1v8 vss porb_h por_l porb_l
Tim Edwards10708322020-11-20 13:55:57 -050028
29Xcap1 vcap vss sky130_fd_pr__cap_mim_m3_1 l=30 w=30
Tim Edwards1feaa102020-11-22 15:10:38 -050030Xcap2 vss vcap sky130_fd_pr__cap_mim_m3_2 l=30 w=30
Tim Edwards10708322020-11-20 13:55:57 -050031
32* Note: 20 resistors of length 25um connected in series
Tim Edwards1feaa102020-11-22 15:10:38 -050033Xres1 vdd3v3 vin vss sky130_fd_pr__res_xhigh_po_0p69 l=500
Tim Edwards4f6036f2020-11-20 22:05:43 -050034* Note: 6 resistors of length 25um connected in series
35Xres2 vin vss vss sky130_fd_pr__res_xhigh_po_0p69 l=150
36* Note: 2 dummy resistors of length 25um
37Xres3 vss vss vss sky130_fd_pr__res_xhigh_po_0p69 l=50
Tim Edwards10708322020-11-20 13:55:57 -050038
39* Triple current mirror, ratios 8:1, 7:1, and 7:1, with p-cascodes
Tim Edwards1feaa102020-11-22 15:10:38 -050040* D G S B
41Xm1 casc1 vin vss vss sky130_fd_pr__nfet_g5v0d10v5 w=2 l=0.8 m=1
42Xc1 mir1 casc1 casc1 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1
43Xm2 mir1 mir1 vdd3v3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=8
44Xm3 mir2 mir1 vdd3v3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1
45Xc2 casc2 casc1 mir2 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1
46Xm4 casc2 casc2 vss vss sky130_fd_pr__nfet_g5v0d10v5 w=2 l=0.8 m=7
47Xm5 casc3 casc2 vss vss sky130_fd_pr__nfet_g5v0d10v5 w=2 l=0.8 m=1
48Xc3 mir3 casc3 casc3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1
49Xm6 mir3 mir3 vdd3v3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=7
50Xm7 mir4 mir3 vdd3v3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1
51Xc4 vcap casc3 mir4 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1
Tim Edwards10708322020-11-20 13:55:57 -050052
53* Buffered with schmitt trigger buffer
Tim Edwards1feaa102020-11-22 15:10:38 -050054Xtrig vcap vss vss vdd3v3 vdd3v3 out sky130_fd_sc_hvl__schmittbuf_1
Tim Edwards10708322020-11-20 13:55:57 -050055
56* High voltage output (buffer)
Tim Edwards1feaa102020-11-22 15:10:38 -050057Xbuf out vss vss vdd3v3 vdd3v3 porb_h sky130_fd_sc_hvl__buf_8
Tim Edwards10708322020-11-20 13:55:57 -050058
59* Level shift down (buffer)
Tim Edwards1feaa102020-11-22 15:10:38 -050060Xlv1 out vss vss vdd1v8 vdd1v8 porb_l sky130_fd_sc_hvl__buf_8
Tim Edwards10708322020-11-20 13:55:57 -050061
62* Level shift down (inverter)
Tim Edwards1feaa102020-11-22 15:10:38 -050063Xlv2 out vss vss vdd1v8 vdd1v8 por_l sky130_fd_sc_hvl__inv_8
Tim Edwards10708322020-11-20 13:55:57 -050064
Tim Edwards4f6036f2020-11-20 22:05:43 -050065* Fill cell
Tim Edwards1feaa102020-11-22 15:10:38 -050066Xfill vss vss vdd3v3 vdd3v3 sky130_fd_sc_hvl__fill_4
Tim Edwards4f6036f2020-11-20 22:05:43 -050067
Tim Edwards10708322020-11-20 13:55:57 -050068* No tap cell in library?
Tim Edwards1feaa102020-11-22 15:10:38 -050069* Xtap vdd3v3 vss sky130_fd_sc_hvl__tapvpwrvgnd_1
Tim Edwards10708322020-11-20 13:55:57 -050070
71.ends
72
73.end