update 20180819: add experiments and start with regulation
This commit is contained in:
Binary file not shown.
+74
-2
@@ -1,4 +1,5 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.cm as cm
|
||||
import numpy as np
|
||||
import wafer
|
||||
import VisTools.plotting as vtp
|
||||
@@ -9,6 +10,40 @@ plt.rcParams['axes.facecolor'] = 'white'
|
||||
plt.figure(figsize=(8, 4))
|
||||
|
||||
|
||||
def gen_reg_theory():
|
||||
xdata = np.linspace(0, 150, 1001)
|
||||
|
||||
# consts
|
||||
rpar = 75000
|
||||
rser = 9400
|
||||
r0 = 1.0029e-3
|
||||
r1 = 15.966e-3
|
||||
iret = 9.1
|
||||
|
||||
plt.clf()
|
||||
plt.figure(figsize=(8, 4))
|
||||
for n, voff in enumerate([1.75, 1.8, 1.85, 1.9]):
|
||||
ydata = iret * r1 + r0 * xdata + voff
|
||||
ydata = (.7*30100 / (ydata - .7)) - 6490 - rser
|
||||
ydata = rpar * ydata / (rpar + ydata) * 256 / 10000
|
||||
|
||||
plt.plot(
|
||||
[x for x, y in zip(xdata, ydata) if y >= 0],
|
||||
[y for y in ydata if y >= 0],
|
||||
color=f"C{n}",
|
||||
label=f"V$_{{off}}$ = {voff}"
|
||||
)
|
||||
plt.plot(
|
||||
xdata,
|
||||
ydata,
|
||||
color=f"C{n}",
|
||||
linestyle='dotted'
|
||||
)
|
||||
|
||||
plt.legend()
|
||||
plt.savefig('reg.pdf')
|
||||
|
||||
|
||||
def gen_reticle_empty():
|
||||
plt.clf()
|
||||
|
||||
@@ -20,6 +55,37 @@ def gen_reticle_empty():
|
||||
ax.set_aspect("equal")
|
||||
plt.savefig('wafer.pdf')
|
||||
|
||||
def gen_reticle_patterns():
|
||||
plt.clf()
|
||||
|
||||
f, sax = plt.subplots(2, 2, figsize=(8, 6))
|
||||
sax = np.resize(sax, 4)
|
||||
|
||||
patterns = [
|
||||
[0, 2, 8, 10, 12, 14, 25, 27, 29, 31, 41, 43],
|
||||
[1, 9, 11, 13, 24, 26, 28, 30, 32, 40, 42, 44],
|
||||
[3, 5, 7, 15, 17, 19, 21, 23, 34, 36, 38, 46],
|
||||
[4, 6, 16, 18, 20, 22, 33, 35, 37, 39, 45, 47]
|
||||
]
|
||||
|
||||
for ax, p in zip(sax, patterns):
|
||||
w = wafer.WaferRepr()
|
||||
|
||||
for r in p:
|
||||
w.set(r, .2)
|
||||
|
||||
w.placeim(ax, (0, 0), cmap=cm.tab20c, nonumber=True)
|
||||
|
||||
ax.set_ylim([-.6, 7.6])
|
||||
ax.set_xlim([-.6, 8.6])
|
||||
ax.set_aspect('equal')
|
||||
ax.axis('off')
|
||||
ax.invert_yaxis()
|
||||
|
||||
|
||||
plt.tight_layout()
|
||||
plt.savefig('wpattern.pdf')
|
||||
|
||||
|
||||
def gen_48v_theory():
|
||||
xdata = np.linspace(43, 53, 100)
|
||||
@@ -58,9 +124,13 @@ def gen_1v8_theory():
|
||||
plt.clf()
|
||||
plt.plot(xdata, ydata, label="Equation after Datasheet")
|
||||
|
||||
vps = vtp.fit(xdata, ydata, lambda x,m,p,a,c: a/(m*x-p)+c, [.1, -1, 1, 1.5])
|
||||
vps = vtp.fit(
|
||||
xdata,
|
||||
ydata,
|
||||
lambda x, m, p, a, c: a/(m*x-p)+c, [.1, -1, 1, 1.5]
|
||||
)
|
||||
|
||||
#plt.plot(xdata, vps[2].n / (vps[0].n * xdata - vps[1].n) + vps[3].n)
|
||||
# plt.plot(xdata, vps[2].n / (vps[0].n * xdata - vps[1].n) + vps[3].n)
|
||||
vtt.unc_tolatex(vps[0], None, 'theo.tex', name="m")
|
||||
vtt.unc_tolatex(vps[1], None, 'theo.tex', name="p")
|
||||
vtt.unc_tolatex(vps[2], None, 'theo.tex', name="a")
|
||||
@@ -77,3 +147,5 @@ if __name__ == "__main__":
|
||||
gen_48i_theory()
|
||||
gen_1v8_theory()
|
||||
gen_reticle_empty()
|
||||
gen_reg_theory()
|
||||
gen_reticle_patterns()
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user