Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 1 | *------------------------------------------------------------------- |
| 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 Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 27 | .subckt simple_por vdd3v3 vdd1v8 vss porb_h por_l porb_l |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 28 | |
| 29 | Xcap1 vcap vss sky130_fd_pr__cap_mim_m3_1 l=30 w=30 |
Tim Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 30 | Xcap2 vss vcap sky130_fd_pr__cap_mim_m3_2 l=30 w=30 |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 31 | |
| 32 | * Note: 20 resistors of length 25um connected in series |
Tim Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 33 | Xres1 vdd3v3 vin vss sky130_fd_pr__res_xhigh_po_0p69 l=500 |
Tim Edwards | 4f6036f | 2020-11-20 22:05:43 -0500 | [diff] [blame] | 34 | * Note: 6 resistors of length 25um connected in series |
| 35 | Xres2 vin vss vss sky130_fd_pr__res_xhigh_po_0p69 l=150 |
| 36 | * Note: 2 dummy resistors of length 25um |
| 37 | Xres3 vss vss vss sky130_fd_pr__res_xhigh_po_0p69 l=50 |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 38 | |
| 39 | * Triple current mirror, ratios 8:1, 7:1, and 7:1, with p-cascodes |
Tim Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 40 | * D G S B |
| 41 | Xm1 casc1 vin vss vss sky130_fd_pr__nfet_g5v0d10v5 w=2 l=0.8 m=1 |
| 42 | Xc1 mir1 casc1 casc1 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1 |
| 43 | Xm2 mir1 mir1 vdd3v3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=8 |
| 44 | Xm3 mir2 mir1 vdd3v3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1 |
| 45 | Xc2 casc2 casc1 mir2 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1 |
| 46 | Xm4 casc2 casc2 vss vss sky130_fd_pr__nfet_g5v0d10v5 w=2 l=0.8 m=7 |
| 47 | Xm5 casc3 casc2 vss vss sky130_fd_pr__nfet_g5v0d10v5 w=2 l=0.8 m=1 |
| 48 | Xc3 mir3 casc3 casc3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1 |
| 49 | Xm6 mir3 mir3 vdd3v3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=7 |
| 50 | Xm7 mir4 mir3 vdd3v3 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1 |
| 51 | Xc4 vcap casc3 mir4 vdd3v3 sky130_fd_pr__pfet_g5v0d10v5 w=2 l=0.8 m=1 |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 52 | |
| 53 | * Buffered with schmitt trigger buffer |
Tim Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 54 | Xtrig vcap vss vss vdd3v3 vdd3v3 out sky130_fd_sc_hvl__schmittbuf_1 |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 55 | |
| 56 | * High voltage output (buffer) |
Tim Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 57 | Xbuf out vss vss vdd3v3 vdd3v3 porb_h sky130_fd_sc_hvl__buf_8 |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 58 | |
| 59 | * Level shift down (buffer) |
Tim Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 60 | Xlv1 out vss vss vdd1v8 vdd1v8 porb_l sky130_fd_sc_hvl__buf_8 |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 61 | |
| 62 | * Level shift down (inverter) |
Tim Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 63 | Xlv2 out vss vss vdd1v8 vdd1v8 por_l sky130_fd_sc_hvl__inv_8 |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 64 | |
Tim Edwards | 4f6036f | 2020-11-20 22:05:43 -0500 | [diff] [blame] | 65 | * Fill cell |
Tim Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 66 | Xfill vss vss vdd3v3 vdd3v3 sky130_fd_sc_hvl__fill_4 |
Tim Edwards | 4f6036f | 2020-11-20 22:05:43 -0500 | [diff] [blame] | 67 | |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 68 | * No tap cell in library? |
Tim Edwards | 1feaa10 | 2020-11-22 15:10:38 -0500 | [diff] [blame^] | 69 | * Xtap vdd3v3 vss sky130_fd_sc_hvl__tapvpwrvgnd_1 |
Tim Edwards | 1070832 | 2020-11-20 13:55:57 -0500 | [diff] [blame] | 70 | |
| 71 | .ends |
| 72 | |
| 73 | .end |