Repository navigation
Expand file tree
/
Copy pathnoise_res.py
More file actions
51 lines (44 loc) · 1.74 KB
/
Copy pathnoise_res.py
File metadata and controls
51 lines (44 loc) · 1.74 KB
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
# Copyright 2013 DEVSIM LLC
#
# SPDX-License-Identifier: Apache-2.0
# solid state resistor ssac
import devsim
import res1
import test_common
devsim.circuit_element(name="V1", n1="topbias", n2=0, acreal=1.0)
test_common.CreateNoiseMesh(res1.device, res1.region)
devsim.set_parameter(name="botbias", value=0.0)
res1.run_initial_bias(use_circuit_bias=True, net_doping=1e17)
for v in (0.0, 1e-3):
devsim.circuit_alter(name="V1", value=v)
devsim.solve(
type="dc", absolute_error=1e10, relative_error=1e-7, maximum_iterations=30
)
for contact in res1.contacts:
test_common.printResistorCurrent(device=res1.device, contact=contact)
devsim.solve(type="dc", absolute_error=1e10, relative_error=1e-7, maximum_iterations=30)
devsim.solve(type="noise", frequency=1e5, output_node="V1.I")
devsim.vector_gradient(
device=res1.device,
region=res1.region,
node_model="V1.I_ElectronContinuityEquation_real",
calc_type="avoidzero",
)
for name in (
"V1.I_ElectronContinuityEquation_real",
"V1.I_ElectronContinuityEquation_imag",
"V1.I_ElectronContinuityEquation_real_gradx",
"V1.I_ElectronContinuityEquation_imag_gradx",
):
devsim.print_node_values(device=res1.device, region=res1.region, name=name)
rv = "V1.I_ElectronContinuityEquation_real_gradx"
iv = "V1.I_ElectronContinuityEquation_imag_gradx"
for name, equation in (
("noisesource", "4*ElectronCharge^2 * ThermalVoltage * mu_n * Electrons"),
("vfield", "(%(rv)s*%(rv)s+%(iv)s*%(iv)s)" % {"rv": rv, "iv": iv}),
("noise", "vec_sum(vfield * noisesource * NodeVolume)"),
):
devsim.node_model(
device=res1.device, region=res1.region, name=name, equation=equation
)
devsim.print_node_values(device=res1.device, region=res1.region, name=name)