summaryrefslogtreecommitdiff
path: root/schematic/opamp.sch
blob: 7103dc836c722079541e18d43ba9b1b2fc0d2259 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
v {xschem version=3.4.8RC file_version=1.3}
G {}
K {}
V {}
S {}
F {}
E {}
N 0 0 1640 0 {lab=VDD}
N 0 800 1780 800 {lab=VSS}
N 0 340 1440 340 {lab=PLUS}
N 1440 340 1440 430 {lab=PLUS}
N 1400 430 1440 430 {lab=PLUS}
N 0 430 1120 430 {lab=MINUS}
N 140 0 140 40 {lab=VDD}
N 140 100 140 220 {lab=#N01}
N 140 280 140 640 {lab=#N02}
N 140 700 140 800 {lab=VSS}
N 100 70 100 800 {lab=VSS}
N 100 70 120 70 {lab=VSS}
N 100 250 120 250 {lab=VSS}
N 100 670 120 670 {lab=VSS}
N 1260 0 1260 120 {lab=VDD}
N 1260 100 1300 100 {lab=VDD}
N 1300 100 1300 150 {lab=VDD}
N 1260 150 1300 150 {lab=VDD}
N 140 150 1220 150 {lab=#N01}
N 1260 180 1260 380 {lab=#N03}
N 1160 380 1360 380 {lab=#N03}
N 1160 380 1160 400 {lab=#N03}
N 1360 380 1360 400 {lab=#N03}
N 1200 380 1200 430 {lab=#N03}
N 1160 430 1200 430 {lab=#N03}
N 1320 380 1320 430 {lab=#N03}
N 1320 430 1360 430 {lab=#N03}
N 1160 460 1160 640 {lab=#N04}
N 1360 460 1360 640 {lab=#N05}
N 1200 670 1320 670 {lab=#N06}
N 1160 700 1160 800 {lab=VSS}
N 1360 700 1360 800 {lab=VSS}
N 1120 670 1160 670 {lab=VSS}
N 1120 670 1120 720 {lab=VSS}
N 1120 720 1160 720 {lab=VSS}
N 1360 670 1400 670 {lab=VSS}
N 1400 670 1400 720 {lab=VSS}
N 1360 720 1400 720 {lab=VSS}
N 1040 600 1160 600 {lab=#N04}
N 1360 600 1480 600 {lab=#N05}
N 880 0 880 220 {lab=VDD}
N 1640 0 1640 220 {lab=VDD}
N 840 200 880 200 {lab=VDD}
N 840 200 840 250 {lab=VDD}
N 840 250 880 250 {lab=VDD}
N 1640 200 1680 200 {lab=VDD}
N 1680 200 1680 250 {lab=VDD}
N 1640 250 1680 250 {lab=VDD}
N 880 280 880 640 {lab=#N07}
N 1640 280 1640 640 {lab=OUT}
N 880 700 880 800 {lab=VSS}
N 1640 700 1640 800 {lab=VSS}
N 1080 600 1080 670 {lab=#N04}
N 920 670 1080 670 {lab=#N04}
N 1440 600 1440 670 {lab=#N05}
N 1440 670 1600 670 {lab=#N05}
N 880 600 920 600 {lab=#N07}
N 1600 600 1640 600 {lab=OUT}
N 840 670 880 670 {lab=VSS}
N 840 670 840 720 {lab=VSS}
N 840 720 880 720 {lab=VSS}
N 1640 670 1680 670 {lab=VSS}
N 1680 670 1680 720 {lab=VSS}
N 1640 720 1680 720 {lab=VSS}
N 1010 620 1010 800 {lab=VSS}
N 1510 620 1510 800 {lab=VSS}
N 920 250 1600 250 {lab=#N07}
N 880 300 940 300 {lab=#N07}
N 940 250 940 300 {lab=#N07}
N 1640 600 1780 600 {lab=OUT}
N 1780 600 1780 640 {lab=OUT}
N 1780 700 1780 800 {lab=VSS}
N 1780 600 1880 600 {lab=OUT}
N 700 500 1360 500 {lab=#N05}
N 700 560 1160 560 {lab=#N04}
N 600 500 600 560 {lab=#N08}
N 600 500 640 500 {lab=#N08}
N 600 560 640 560 {lab=#N08}
N 560 530 600 530 {lab=#N08}
N 670 520 670 540 {lab=VSS}
N 670 530 740 530 {lab=VSS}
N 740 530 740 800 {lab=VSS}
N 420 0 420 220 {lab=VDD}
N 420 200 460 200 {lab=VDD}
N 460 200 460 250 {lab=VDD}
N 420 250 460 250 {lab=VDD}
N 340 150 340 250 {lab=#N01}
N 340 250 380 250 {lab=#N01}
N 420 280 420 480 {lab=#N09}
N 320 480 520 480 {lab=#N09}
N 320 480 320 500 {lab=#N09}
N 520 480 520 500 {lab=#N09}
N 360 480 360 530 {lab=#N09}
N 320 530 360 530 {lab=#N09}
N 480 480 480 530 {lab=#N09}
N 480 530 520 530 {lab=#N09}
N 140 530 280 530 {lab=#N02}
N 320 560 320 640 {lab=#N06}
N 520 560 520 640 {lab=#N10}
N 320 620 380 620 {lab=#N06}
N 380 620 380 670 {lab=#N06}
N 360 670 380 670 {lab=#N06}
N 460 620 520 620 {lab=#N10}
N 460 620 460 670 {lab=#N10}
N 460 670 480 670 {lab=#N10}
N 320 700 320 800 {lab=VSS}
N 520 700 520 800 {lab=VSS}
N 280 670 320 670 {lab=VSS}
N 280 670 280 720 {lab=VSS}
N 280 720 320 720 {lab=VSS}
N 520 670 560 670 {lab=VSS}
N 560 670 560 720 {lab=VSS}
N 520 720 560 720 {lab=VSS}
N 380 670 380 760 {lab=#N06}
N 380 760 1260 760 {lab=#N06}
N 1260 670 1260 760 {lab=#N06}
C {sky130_fd_pr/pfet_01v8_lvt.sym} 1240 150 0 0 {name=M1
W=2.85
L=0.35
nf=1
mult=2
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=pfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8_lvt.sym} 1140 430 0 0 {name=M2
W=2.8
L=0.65
nf=1
mult=12
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=pfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8_lvt.sym} 1380 430 0 1 {name=M3
W=2.8
L=0.65
nf=1
mult=12
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=pfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/nfet_01v8_lvt.sym} 1180 670 0 1 {name=M4
W=1
L=0.35
nf=1
mult=1
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=nfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/nfet_01v8_lvt.sym} 1340 670 0 0 {name=M5
W=1
L=0.35
nf=1
mult=1
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=nfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/nfet_01v8_lvt.sym} 900 670 0 1 {name=M6
W=1.4
L=0.65
nf=1
mult=4
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=nfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/nfet_01v8_lvt.sym} 1620 670 0 0 {name=M7
W=1.4
L=0.65
nf=1
mult=4
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=nfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8_lvt.sym} 900 250 0 1 {name=M8
W=2.2
L=0.35
nf=1
mult=1
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=pfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8_lvt.sym} 1620 250 0 0 {name=M9
W=2.2
L=0.35
nf=1
mult=1
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=pfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8_lvt.sym} 400 250 0 0 {name=M10
W=2.6
L=0.35
nf=1
mult=1
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=pfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8_lvt.sym} 300 530 0 0 {name=M11
W=2.4
L=0.35
nf=1
mult=1
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=pfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/pfet_01v8_lvt.sym} 540 530 0 1 {name=M12
W=2.4
L=0.35
nf=1
mult=1
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=pfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/nfet_01v8_lvt.sym} 340 670 0 1 {name=M13
W=1
L=0.25
nf=1
mult=1
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=nfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/nfet_01v8_lvt.sym} 500 670 0 0 {name=M14
W=1
L=0.25
nf=1
mult=1
ad="expr('int((@nf + 1)/2) * @W / @nf * 0.29')"
pd="expr('2*int((@nf + 1)/2) * (@W / @nf + 0.29)')"
as="expr('int((@nf + 2)/2) * @W / @nf * 0.29')"
ps="expr('2*int((@nf + 2)/2) * (@W / @nf + 0.29)')"
nrd="expr('0.29 / @W ')" nrs="expr('0.29 / @W ')"
sa=0 sb=0 sd=0
model=nfet_01v8_lvt
spiceprefix=X
}
C {sky130_fd_pr/res_iso_pw.sym} 1010 600 3 0 {name=R1
W=0.5
L=2.65
model=res_iso_pw
spiceprefix=X
mult=1}
C {sky130_fd_pr/res_iso_pw.sym} 1510 600 1 1 {name=R2
W=0.5
L=2.65
model=res_iso_pw
spiceprefix=X
mult=1}
C {sky130_fd_pr/res_iso_pw.sym} 670 500 3 0 {name=R3
W=0.05
L=6.6
model=res_iso_pw
spiceprefix=X
mult=1}
C {sky130_fd_pr/res_iso_pw.sym} 670 560 3 1 {name=R4
W=0.05
L=6.6
model=res_iso_pw
spiceprefix=X
mult=1}
C {sky130_fd_pr/res_iso_pw.sym} 140 70 0 0 {name=R5
W=0.05
L=4.5
model=res_iso_pw
spiceprefix=X
mult=1}
C {sky130_fd_pr/res_iso_pw.sym} 140 250 0 0 {name=R6
W=0.05
L=6.4
model=res_iso_pw
spiceprefix=X
mult=1}
C {sky130_fd_pr/res_iso_pw.sym} 140 670 0 0 {name=R7
W=0.05
L=4.2
model=res_iso_pw
spiceprefix=X
mult=1}
C {sky130_fd_pr/cap_mim_m3_1.sym} 950 600 3 0 {name=C1
model=cap_mim_m3_1
W=6
L=4
MF=4
spiceprefix=X}
C {sky130_fd_pr/cap_mim_m3_1.sym} 1570 600 1 1 {name=C2
model=cap_mim_m3_1
W=6
L=4
MF=4
spiceprefix=X}
C {sky130_fd_pr/cap_mim_m3_1.sym} 1780 670 0 0 {name=C3
model=cap_mim_m3_1
W=12
L=10
MF=8
spiceprefix=X}
C {ipin.sym} 0 0 0 0 {name=p1 lab=VDD}
C {ipin.sym} 0 800 0 0 {name=p2 lab=VSS}
C {ipin.sym} 0 340 0 0 {name=p3 lab=PLUS}
C {ipin.sym} 0 430 0 0 {name=p4 lab=MINUS}
C {opin.sym} 1880 600 0 0 {name=p5 lab=OUT}