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
|
// license:GPL-2.0+
// copyright-holders:Couriersud
#include "netlist/devices/net_lib.h"
/*
* Run with
* ./nltool -t 1 -f nl_examples/2N6027.cpp -l PUT.A -l PUT.K -l PUT.G -v
*/
/* ----------------------------------------------------------------------------
* Library section header START
* ---------------------------------------------------------------------------*/
#ifndef __PLIB_PREPROCESSOR__
#define PUT_2N6027(_name) \
NET_REGISTER_DEV(G501534_DIP, _name)
//NETLIST_EXTERNAL(ex2N6027)
NETLIST_EXTERNAL(loc_lib)
#endif
/* ----------------------------------------------------------------------------
* Library section header END
* ---------------------------------------------------------------------------*/
NETLIST_START(ex2N6027)
/* This is a circuit pushing the solvers to the limits
* 50,000 maximum NR loops.
*/
SOLVER(Solver, 48000)
PARAM(Solver.ACCURACY, 1e-5)
PARAM(Solver.DYNAMIC_TS, 1)
PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 1e-9)
PARAM(Solver.NR_LOOPS, 50000)
PARAM(Solver.METHOD, "MAT_CR")
LOCAL_SOURCE(loc_lib)
INCLUDE(loc_lib)
ANALOG_INPUT(VB, 10)
PUT_2N6027(PUT)
// Figure 3 from datasheet
RES(R1, RES_K(510))
RES(R2, RES_K(16))
RES(R3, RES_K(27))
RES(R4, 20)
CAP(C, CAP_U(0.1))
NET_C(VB, R1.1, R2.1)
NET_C(R1.2, C.1, PUT.A)
NET_C(PUT.K, R4.1)
NET_C(PUT.G, R2.2, R3.1)
NET_C(GND, C.2, R4.2, R3.2)
NETLIST_END()
NETLIST_START(PUT_2N6027)
NET_MODEL("2N6027_NPN NPN(IS=5E-15 VAF=100 IKF=0.3 ISE=1.85E-12 NE=1.45 RE=0.15 RC=0.15 CJE=7E-10 TF=0.6E-8 CJC=2.2E-10 TR=4.76E-8 XTB=3)")
NET_MODEL("2N6027_PNP PNP(IS=2E-15 VAF=100 IKF=0.3 ISE=1.90E-12 NE=1.5 RE=0.15 RC=0.15 CJE=7E-10 TF=1.6E-8 CJC=2.2E-10 TR=5.1E-8 XTB=3)")
QBJT_EB(Q1, "2N6027_NPN")
QBJT_EB(Q2, "2N6027_PNP")
/* The netlist transistor model currently doesn't support
* BE and BC capacitances.
* Adding those here significantly reduces NR loops.
* FIXME: Needs to be removed when added to the
* transistor EB model.
*/
#if 1
CAP(CJE1, CAP_N(1))
CAP(CJE2, CAP_N(1))
NET_C(CJE1.1, Q1.B)
NET_C(CJE1.2, Q1.E)
NET_C(CJE2.1, Q2.B)
NET_C(CJE2.2, Q2.E)
#endif
NET_C(Q1.C, Q2.B)
NET_C(Q1.B, Q2.C)
ALIAS(G, Q2.B)
ALIAS(A, Q2.E)
ALIAS(K, Q1.E)
NETLIST_END()
NETLIST_START(loc_lib)
LOCAL_LIB_ENTRY(PUT_2N6027)
NETLIST_END()
|