Added Diode component with standard and verilog model (diode, led, zener)

This commit is contained in:
2026-06-30 17:24:07 +02:00
parent c0c3de344a
commit 51f17e5c2d
17 changed files with 1012 additions and 0 deletions
+286
View File
@@ -0,0 +1,286 @@
// (setq tab-width 4)
// kelle ez ? :: decl diode_va_ModelNetlistFmt = "%43?global %;model %t diode_va %b%r%8?%29?%:%30?%p %:%k%?[%1i]%;=%p %;%;%;%e%e";
create_item(
"mr_diode", // name
"PN junction diode", // label
"D", // prefix
0, // attributes
NULL, // priority
NULL, // icon
standard_dialog, // dialog name
"", // dialog data
CmpModelNetlistFmt, // netlist format
"Diode", // netlist data
ComponentAnnotFmt, // display format string
NULL, // symbol name (not used since 2011)
NULL, // artwork type (not used since 2011)
NULL, // artwork data (not used since 2011)
ITEM_PRIMITIVE_EX, // extra attributes
// ------------------------------------------------------------------------
// Model
// ------------------------------------------------------------------------
create_parm
(
"Model",
"Model instance name",
0,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","va_diode")
),
// ------------------------------------------------------------------------
// Area
// ------------------------------------------------------------------------
create_parm
(
"Area",
"Scaling factor",
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","1.0")
),
// ------------------------------------------------------------------------
// Is
// ------------------------------------------------------------------------
create_parm
(
"Is",
"Saturation current",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
CURRENT_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Tnom
// ------------------------------------------------------------------------
create_parm
(
"Tnom",
"Nominal temperature",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
TEMPERATURE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Rs
// ------------------------------------------------------------------------
create_parm
(
"Rs",
"Ohmic resistance",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
RESISTANCE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// N
// ------------------------------------------------------------------------
create_parm
(
"N",
"Emission coefficient, (default: 1.0)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Tt
// ------------------------------------------------------------------------
create_parm
(
"Tt",
"Transit time",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
TIME_UNIT,
prm("StdForm","0.0")
),
// ------------------------------------------------------------------------
// Cjo
// ------------------------------------------------------------------------
create_parm
(
"Cjo",
"Junction capacitance",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
CAPACITANCE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Vj
// ------------------------------------------------------------------------
create_parm
(
"Vj",
"Junction potential, (default: 1.0)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
VOLTAGE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// M
// ------------------------------------------------------------------------
create_parm
(
"M",
"Grading coefficient, (default: 0.5)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Eg
// ------------------------------------------------------------------------
create_parm
(
"Eg",
"Activation energy, (default: 1.1)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Xti
// ------------------------------------------------------------------------
create_parm
(
"Xti",
"Is temperature exponent (default: 3.3)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Af
// ------------------------------------------------------------------------
create_parm
(
"Af",
"Flicker noise exponent (default: 1.0)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Kf
// ------------------------------------------------------------------------
create_parm
(
"Kf",
"Flicker noise coefficient (default: 0.0)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Fc
// ------------------------------------------------------------------------
create_parm
(
"Fc",
"Forward bias junction parm (default: 0.5)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Bv
// ------------------------------------------------------------------------
create_parm
(
"Bv",
"Reverse breakdown voltage (default: 1e99)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
VOLTAGE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Ibv
// ------------------------------------------------------------------------
create_parm
(
"IBv",
"Reverse breakdown current (default: 1 mA)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
CURRENT_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// _M
// ------------------------------------------------------------------------
create_parm
(
"_M",
"Number of devices in parallel, (default: 1)",
PARM_NO_DISPLAY,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
)
);
+286
View File
@@ -0,0 +1,286 @@
// (setq tab-width 4)
// kelle ez ? :: decl diode_va_ModelNetlistFmt = "%43?global %;model %t diode_va %b%r%8?%29?%:%30?%p %:%k%?[%1i]%;=%p %;%;%;%e%e";
create_item(
"mr_diode_zener", // name
"Zener diode", // label
"D", // prefix
0, // attributes
NULL, // priority
NULL, // icon
standard_dialog, // dialog name
"", // dialog data
CmpModelNetlistFmt, // netlist format
"Diode", // netlist data
ComponentAnnotFmt, // display format string
NULL, // symbol name (not used since 2011)
NULL, // artwork type (not used since 2011)
NULL, // artwork data (not used since 2011)
ITEM_PRIMITIVE_EX, // extra attributes
// ------------------------------------------------------------------------
// Model
// ------------------------------------------------------------------------
create_parm
(
"Model",
"Model instance name",
0,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","va_diode")
),
// ------------------------------------------------------------------------
// Area
// ------------------------------------------------------------------------
create_parm
(
"Area",
"Scaling factor",
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","1.0")
),
// ------------------------------------------------------------------------
// Is
// ------------------------------------------------------------------------
create_parm
(
"Is",
"Saturation current",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
CURRENT_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Tnom
// ------------------------------------------------------------------------
create_parm
(
"Tnom",
"Nominal temperature",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
TEMPERATURE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Rs
// ------------------------------------------------------------------------
create_parm
(
"Rs",
"Ohmic resistance",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
RESISTANCE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// N
// ------------------------------------------------------------------------
create_parm
(
"N",
"Emission coefficient, (default: 1.0)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Tt
// ------------------------------------------------------------------------
create_parm
(
"Tt",
"Transit time",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
TIME_UNIT,
prm("StdForm","0.0")
),
// ------------------------------------------------------------------------
// Cjo
// ------------------------------------------------------------------------
create_parm
(
"Cjo",
"Junction capacitance",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
CAPACITANCE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Vj
// ------------------------------------------------------------------------
create_parm
(
"Vj",
"Junction potential, (default: 1.0)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
VOLTAGE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// M
// ------------------------------------------------------------------------
create_parm
(
"M",
"Grading coefficient, (default: 0.5)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Eg
// ------------------------------------------------------------------------
create_parm
(
"Eg",
"Activation energy, (default: 1.1)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Xti
// ------------------------------------------------------------------------
create_parm
(
"Xti",
"Is temperature exponent (default: 3.3)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Af
// ------------------------------------------------------------------------
create_parm
(
"Af",
"Flicker noise exponent (default: 1.0)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Kf
// ------------------------------------------------------------------------
create_parm
(
"Kf",
"Flicker noise coefficient (default: 0.0)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Fc
// ------------------------------------------------------------------------
create_parm
(
"Fc",
"Forward bias junction parm (default: 0.5)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Bv
// ------------------------------------------------------------------------
create_parm
(
"Bv",
"Reverse breakdown voltage (default: 1e99)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
VOLTAGE_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// Ibv
// ------------------------------------------------------------------------
create_parm
(
"IBv",
"Reverse breakdown current (default: 1 mA)",
PARM_NO_DISPLAY |
PARM_OPTIMIZABLE |
PARM_STATISTICAL,
"StdFileFormSet",
CURRENT_UNIT,
prm("StdForm","")
),
// ------------------------------------------------------------------------
// _M
// ------------------------------------------------------------------------
create_parm
(
"_M",
"Number of devices in parallel, (default: 1)",
PARM_NO_DISPLAY,
"StdFileFormSet",
UNITLESS_UNIT,
prm("StdForm","")
)
);
+15
View File
@@ -0,0 +1,15 @@
; 1N4148
;
model D1N4148 Diode \
Is = 2.682n \
N = 1.836 \
Rs = 0.5664 \
Xti = 3 \
Eg = 1.11 \
Cjo = 4p \
M = 0.3333 \
Vj = 0.5 \
Fc = 0.5 \
Bv = 100 \
Ibv = 100u
; Tt = 11.54n
+35
View File
@@ -0,0 +1,35 @@
;*====================
;*LED Pinout: 1=A, 2=K
;*====================
; ---------------------------------------------------------
; Typ INFRARED GaAs LED: Vf=1.2V Vr=5V If=40mA trr=3uS
; ---------------------------------------------------------
model DLED0 Diode \
IS = 93.5p RS = 84m N = 2.63 \
BV = 5 IBV = 10u CJO = 2.97p \
VJ = 0.75 M = 0.333 TT = 4.32u
; ---------------------------------------------------------
; Typ RED GaAs LED: Vf=1.7V Vr=4V If=40mA trr=3uS
; ---------------------------------------------------------
model DLED1 Diode \
IS = 93.2p RS = 42m N = 3.73 \
BV = 4 IBV = 10u CJO = 2.97p \
VJ = 0.75 M = 0.333 TT = 4.32u
; ---------------------------------------------------------
; Typ RED,GREEN,YELLOW,AMBER GaAs LED: Vf=2.1V Vr=4V If=40mA trr=3uS
; ---------------------------------------------------------
model DLED2 Diode \
IS = 93.1p RS = 42m N = 4.61 \
BV = 4 IBV = 10u CJO = 2.97p \
VJ = 0.75 M = 0.333 TT = 4.32u
; ---------------------------------------------------------
; Typ BLUE SiC LED: Vf=3.4V Vr=5V If=40mA trr=3uS
; ---------------------------------------------------------
model DLED3 Diode \
IS = 93.1p RS = 42m N = 7.47 \
BV = 5 IBV = 30u CJO = 2.97p \
VJ = 0.75 M = 0.333 TT = 4.32u
+18
View File
@@ -0,0 +1,18 @@
; Motorola MUR820 TO220AC
;
model MUR820_ON Diode \
IS = 3.30803e-08 \
RS = 0.01 \
N = 1.63481 \
EG = 1.00822 \
XTI = 4 \
BV = 200 \
IBV = 0.00005 \
CJO = 3.16981e-10 \
VJ = 0.437823 \
M = 0.40704 \
FC = 0.5 \
TT = 4.43935e-08 \
KF = 0 \
AF = 1
+17
View File
@@ -0,0 +1,17 @@
; Motorola MUR830 TO220AC
;
model MUR830 Diode \
Is = 1.026p \
Rs = 36.34m \
Ikf = 17.71m \
N = 1 \
Xti = 10 \
Eg = 1.11 \
Cjo = 367p \
M = 0.4068 \
Vj = 0.75 \
Fc = 0.5 \
Isr = 32.31n \
Nr = 2 \
Tt = 123.3n
+17
View File
@@ -0,0 +1,17 @@
; Motorola MUR840 TO220AC
;
model MUR840 Diode \
Is = 1.026p \
Rs = 36.34m \
Ikf = 17.71m \
N = 1 \
Xti = 10 \
Eg = 1.11 \
Cjo = 367p \
M = 0.4068 \
Vj = 0.75 \
Fc = 0.5 \
Isr = 132.1n \
Nr = 2 \
Tt = 123.3n
+17
View File
@@ -0,0 +1,17 @@
; Motorola MUR850 TO220AC
;
model MUR850 Diode \
Is = 853.7f \
Rs = 41.35m \
Ikf = 21.56m \
N = 1 \
Xti = 3 \
Eg = 1.11 \
Cjo = 367p \
M = 0.4068 \
Vj = 0.75 \
Fc = 0.5 \
Isr = 85.16n \
Nr = 2 \
Tt = 123.3n
+17
View File
@@ -0,0 +1,17 @@
; Motorola MUR860 TO220AC
;
model MUR860 Diode \
Is = 853.7f \
Rs = 41.35m \
Ikf = 21.56m \
N = 1 \
Xti = 3 \
Eg = 1.11 \
Cjo = 367p \
M = 0.4068 \
Vj = 0.75 \
Fc = 0.5 \
Isr = 217.5n \
Nr = 2 \
Tt = 123.3n
+20
View File
@@ -0,0 +1,20 @@
; Motorola MURS110
;
; src: onsemi
;
model MURS110 Diode \
IS = 1.0e-15 \
RS = 0.057964 \
N = 0.790242 \
EG = 1.04345 \
XTI = 0.5 \
BV = 100 \
IBV = 0.000002 \
CJO = 1.06518e-10 \
VJ = 0.4 \
M = 0.626202 \
FC = 0.5 \
TT = 4.43935e-08 \
KF = 0.0 \
AF = 1.0
+134
View File
@@ -0,0 +1,134 @@
; ===================================================
; Motorola Zener Diodes (OnSemi)
; 1=A
; 2=K
; ===================================================
; ---------------------------------------------------
; 1N746
; Motorola 3.3V 500mW Si Zener pkg:DO-13 1,2
; Bv = 3.025
; ---------------------------------------------------
model D1N746 Diode \
IS = 1E-11 RS = 13.65 N = 1.27 \
TT = 5E-8 CJO = 5.826E-10 VJ = 0.75 \
M = 0.33 BV = 3.027 IBV = 0.01
; ---------------------------------------------------
; 1N747
; Motorola 3.6V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N747 Diode \
IS = 1E-11 RS = 12.8 N = 1.27 \
TT = 5E-8 CJO = 5.422E-10 VJ = 0.75 \
M = 0.33 BV = 3.344 IBV = 0.01
; ---------------------------------------------------
; 1N748
; Motorola 3.9V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N748 Diode \
IS = 1E-11 RS = 11.84 N = 1.27 \
TT = 5E-8 CJO = 5.076E-10 VJ = 0.75 \
M = 0.33 BV = 3.663 IBV = 0.01
; ---------------------------------------------------
; 1N749
; Motorola 4.3V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N749 Diode \
IS = 1E-11 RS = 10.47 N = 1.27 \
TT = 5E-8 CJO = 4.683E-10 VJ = 0.75 \
M = 0.33 BV = 4.091 IBV = 0.01
; ---------------------------------------------------
; 1N750
; Motorola 4.7V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N750 Diode \
IS = 1E-11 RS = 9.066 N = 1.27 \
TT = 5E-8 CJO = 4.351E-10 VJ =0.75 \
M = 0.33 BV = 4.519 IBV=0.01
; ---------------------------------------------------
; 1N751
; Motorola 5.1V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N751 Diode \
IS = 1E-11 RS = 7.708 N = 1.27 \
TT = 5E-8 CJO = 4.068E-10 VJ = 0.75 \
M = 0.33 BV = 4.946 IBV = 0.01
; ---------------------------------------------------
; 1N752
; Motorola 5.6V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N752 Diode \
IS = 1E-11 RS = 6.168 N = 1.27 \
TT = 5E-8 CJO = 3.766E-10 VJ = 0.75 \
M = 0.33 BV = 5.477 IBV = 0.01
; ---------------------------------------------------
; 1N753
; Motorola 6.2V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N753 Diode \
IS = 1E-11 RS = 4.685 N = 1.27 \
TT = 5E-8 CJO = 3.463E-10 VJ = 0.75 \
M = 0.33 BV = 6.106 IBV = 0.01
; ---------------------------------------------------
; 1N754
; Motorola 6.8V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N754 Diode \
IS = 1E-11 RS = 3.721 N = 1.27 \
TT = 5E-8 CJO = 3.209E-10 VJ = 0.75 \
M = 0.33 BV = 6.726 IBV=0.01
; ---------------------------------------------------
; 1N755
; Motorola 7.5V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N755 Diode \
IS = 1E-11 RS = 3.359 N = 1.27 \
TT = 5E-8 CJO = 2.959E-10 VJ = 0.75 \
M = 0.33 BV = 7.433 IBV = 0.01
; ---------------------------------------------------
; 1N756
; Motorola 8.2V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N756 Diode \
IS = 1E-11 RS = 3.858 N = 1.27 \
TT = 5E-8 CJO = 2.749E-10 VJ = 0.75 \
M = 0.33 BV = 8.123 IBV = 0.01
; ---------------------------------------------------
; 1N757
; Motorola 9.1V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N757 Diode \
IS = 1E-11 RS = 5.672 N = 1.27 \
TT = 5E-8 CJO = 2.523E-10 VJ = 0.75 \
M = 0.33 BV = 8.987 IBV = 0.01
; ---------------------------------------------------
; 1N758
; Motorola 10V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N758 Diode \
IS = 1E-11 RS = 8.483 N = 1.27 \
TT = 5E-8 CJO = 2.334E-10 VJ = 0.75 \
M = 0.33 BV = 9.83 IBV = 0.01
; ---------------------------------------------------
; 1N759
; Motorola 12V 500mW Si Zener pkg:DO-35 1,2
; ---------------------------------------------------
model D1N759 Diode \
IS = 1E-11 RS = 14.95 N = 1.27 \
TT = 5E-8 CJO = 2.008E-10 VJ = 0.75 \
M = 0.33 BV = 11.7 IBV = 0.01
+1
View File
@@ -44,6 +44,7 @@ load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mrmodels_include"));
load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_capacitor" )); load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_capacitor" ));
load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_inductor" )); load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_inductor" ));
load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_resistor" )); load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_resistor" ));
load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_diode" ));
load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_bjt" )); load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_bjt" ));
load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_jfet" )); load( strcat( MRMODELS_DIR_CIRCUIT_AEL, "mr/mr_jfet" ));
+2
View File
@@ -0,0 +1,2 @@
-- Master.tag File, Rev:1.0
symbol.oa
Binary file not shown.
@@ -0,0 +1,2 @@
-- Master.tag File, Rev:1.0
symbol.oa
Binary file not shown.
+145
View File
@@ -0,0 +1,145 @@
/*
Copyright 2002-2005 Tiburon Design Automation, Inc. All rights reserved.
This software has been provided pursuant to a License Agreement
containing restrictions on its use. This software contains
valuable trade secrets and proprietary information of
Tiburon Design Automation, Inc. and is protected by law. It may
not be copied or distributed in any form or medium, disclosed
to third parties, reverse engineered or used in any manner not
provided for in said License Agreement except with the prior
written authorization from Tiburon Design Automation, Inc.
Verilog-A definition of diode
Note that GMIN is not picked up from Options card
$RCSfile: diode.va,v $ $Revision: 1.8 $ $Date: 2012/07/09 19:37:45 $
*/
`include "constants.vams"
`include "disciplines.vams"
`define SPICE_GMIN 1.0e-12
`define LARGE_REAL 1.0e99
`define DEFAULT_TNOM 27
`define MAX_EXPL 2.688117142e+43
`define MIN_EXPL 3.720075976e-44
`define EXPL_THRESHOLD 100.0
`define DEXP(A,B) \
if (A > `EXPL_THRESHOLD) begin \
B = `MAX_EXPL*(1.0+(A)-`EXPL_THRESHOLD); \
end else if (A < -`EXPL_THRESHOLD) begin \
B = `MIN_EXPL; \
end else begin \
B = exp(A); \
end
module va_diode(anode,cathode);
// %%DEVICE_CLASS=DIODE%%
inout anode, cathode;
electrical anode, cathode, internal;
parameter real Area = 1.0 from (0:inf]; //Area scaling factor
parameter real Is = 1e-14 from [0:inf]; //Saturation current [A]
parameter real Tnom = `DEFAULT_TNOM from (-`P_CELSIUS0:inf); //Measurement temperature [C]
parameter real Rs = 0.0 from [0:inf]; //Ohmic res [Ohm]
parameter real N = 1.0 from [0:inf]; //Emission coef
parameter real Tt = 0.0 from [0:inf]; //Transit time [s]
parameter real Cjo = 0.0 from [0:inf]; //Junction capacitance [F]
parameter real Vj = 1.0 exclude 0; //Junction potential [v]
parameter real M = 0.5 from [0:inf]; //Grading coef
parameter real Eg = 1.11 from (0:inf]; //Activation energy [eV]
parameter real Xti = 3.0 from [0:inf]; //IS temp exp.
parameter real Kf = 0.0; //Flicker noise coef
parameter real Af = 1.0 from (0:inf); //Flicker noise exponent
parameter real Fc = 0.5 from [0:1]; //Forward bias junct parm
parameter real Bv = `LARGE_REAL from [0:inf]; //Reverse breakdown voltage [v]
parameter real Ibv = 0.001 from [0:inf]; //Current at BV [A]
real Vd, Id, Qd;
real f1, f2, f3, Fcp;
real Ibv_calc, Vth;
real Is_temp, Vth_nom, T_nom, T;
real exponent;
analog begin
Vth = $vt;
T = $temperature;
f1 = (Vj/(1 - M))*(1 - pow((1 - Fc), 1 - M));
f2 = pow((1 - Fc), (1 + M));
f3 = 1 - Fc * (1 + M);
Fcp = Fc * Vj;
if (Ibv !=0)
Ibv_calc = Ibv;
else
Ibv_calc = Is * Bv / Vth;
Vd = V(anode, internal);
// Temperature dependence
T_nom = Tnom + `P_CELSIUS0;
Vth_nom = $vt(T_nom);
`DEXP((Eg / Vth_nom - Eg / Vth),exponent);
Is_temp = Is * pow(T/T_nom, Xti / N) * exponent;
// Intrinsic diode
// BV is not adjusted to match Ibv if I(BV) <> Ibv
if (Vd < 0) begin
if (Vd < -Bv) // Past breakdown
begin
`DEXP(-(Bv + Vd) / Vth,exponent);
Id = -Area * Is_temp * (exponent + Bv / Vth);
end
else if (Vd == -Bv) // At breakdown
Id = -Area * Ibv_calc;
else if (Vd <= -5 * N * Vth) // -Bv < Vd < -5 nKT/q
Id = -Area * Is_temp + Vd * `SPICE_GMIN;
else // -5 nKT/q <= Vd < 0
begin
`DEXP(Vd / Vth,exponent);
Id = Area * Is_temp * (exponent - 1) + Vd * `SPICE_GMIN;
end
end
else // Fwd bias:
begin
`DEXP(Vd / (N*Vth),exponent);
Id = Area * Is_temp * (exponent - 1) +
Vd * `SPICE_GMIN;
end
// Capacitance (junction and diffusion)
if (Vd <= Fcp)
Qd = Tt * Id + Area * Cjo * Vj
* (1 - pow((1 - Vd / Vj), (1 - M)))/(1 - M);
else
Qd = Tt * Id + Area * Cjo
* (f1 + (1 / f2) * (f3 * (Vd - Fcp) + (0.5 * M / Vj)
* (Vd * Vd - Fcp * Fcp)));
I(anode, internal) <+ Id;
I(anode, internal) <+ ddt(Qd);
if (Rs > 0.0) begin
I(internal, cathode) <+ V(internal, cathode) / (Rs / Area);
I(internal, cathode) <+ white_noise(4 * `P_K * T / (Rs / Area),
"Rs");
end
else
V(internal, cathode) <+ 0.0;
I(anode, internal) <+ white_noise(2 * `P_Q * abs(Id), "shot");
I(anode, internal) <+ flicker_noise(Kf * pow(abs(Id), Af), 1.0, "flicker");
end
endmodule