summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/macro
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/macro')
-rw-r--r--src/lib/netlist/macro/nlm_base.cpp4
-rw-r--r--src/lib/netlist/macro/nlm_cd4xxx.cpp49
-rw-r--r--src/lib/netlist/macro/nlm_cd4xxx.h6
-rw-r--r--src/lib/netlist/macro/nlm_opamp.cpp41
-rw-r--r--src/lib/netlist/macro/nlm_opamp.h18
-rw-r--r--src/lib/netlist/macro/nlm_other.cpp2
-rw-r--r--src/lib/netlist/macro/nlm_ttl74xx.cpp2
7 files changed, 104 insertions, 18 deletions
diff --git a/src/lib/netlist/macro/nlm_base.cpp b/src/lib/netlist/macro/nlm_base.cpp
index 79a6a358fa7..e04d98e59ad 100644
--- a/src/lib/netlist/macro/nlm_base.cpp
+++ b/src/lib/netlist/macro/nlm_base.cpp
@@ -75,11 +75,11 @@ NETLIST_END()
* ---------------------------------------------------------------------------*/
static NETLIST_START(family_models)
- NET_MODEL("FAMILY _(TYPE=CUSTOM FV=5 IVL=0.16 IVH=0.4 OVL=0.1 OVH=1.0 ORL=1.0 ORH=130.0)")
+ NET_MODEL("FAMILY _(TYPE=CUSTOM IVL=0.16 IVH=0.4 OVL=0.1 OVH=1.0 ORL=1.0 ORH=130.0)")
NET_MODEL("OPAMP _()")
NET_MODEL("SCHMITT_TRIGGER _()")
- NET_MODEL("74XXOC FAMILY(FV=5 IVL=0.16 IVH=0.4 OVL=0.1 OVH=0.05 ORL=10.0 ORH=1.0e8)")
+ NET_MODEL("74XXOC FAMILY(IVL=0.16 IVH=0.4 OVL=0.1 OVH=0.05 ORL=10.0 ORH=1.0e8)")
NET_MODEL("74XX FAMILY(TYPE=TTL)")
NET_MODEL("CD4XXX FAMILY(TYPE=CD4XXX)")
NETLIST_END()
diff --git a/src/lib/netlist/macro/nlm_cd4xxx.cpp b/src/lib/netlist/macro/nlm_cd4xxx.cpp
index 8844b3f8154..595045f66da 100644
--- a/src/lib/netlist/macro/nlm_cd4xxx.cpp
+++ b/src/lib/netlist/macro/nlm_cd4xxx.cpp
@@ -152,6 +152,45 @@ static NETLIST_START(CD4016_DIP)
)
NETLIST_END()
+/*
+ * DM7486: Quad 2-Input Exclusive-OR Gates
+ *
+ * Y = A+B
+ * +---+---++---+
+ * | A | B || Y |
+ * +===+===++===+
+ * | 0 | 0 || 0 |
+ * | 0 | 1 || 1 |
+ * | 1 | 0 || 1 |
+ * | 1 | 1 || 0 |
+ * +---+---++---+
+ *
+ * Naming conventions follow National Semiconductor datasheet
+ *
+ */
+
+static NETLIST_START(CD4070_DIP)
+ CD4070_GATE(A)
+ CD4070_GATE(B)
+ CD4070_GATE(C)
+ CD4070_GATE(D)
+
+ NET_C(A.VCC, B.VCC, C.VCC, D.VCC)
+ NET_C(A.GND, B.GND, C.GND, D.GND)
+
+ DIPPINS( /* +--------------+ */
+ A.A, /* A1 |1 ++ 14| VCC */ A.VCC,
+ A.B, /* B1 |2 13| B4 */ D.B,
+ A.Q, /* Y1 |3 12| A4 */ D.A,
+ B.Q, /* Y2 |4 7486 11| Y4 */ D.Q,
+ B.A, /* A2 |5 10| Y3 */ C.Q,
+ B.B, /* B2 |6 9| B3 */ C.B,
+ A.GND,/* GND |7 8| A3 */ C.A
+ /* +--------------+ */
+ )
+NETLIST_END()
+
+
static NETLIST_START(CD4316_DIP)
CD4316_GATE(A)
CD4316_GATE(B)
@@ -191,7 +230,17 @@ NETLIST_START(CD4XXX_lib)
TT_FAMILY("CD4XXX")
TRUTHTABLE_END()
+ TRUTHTABLE_START(CD4070_GATE, 2, 1, "")
+ TT_HEAD("A,B|Q ")
+ TT_LINE("0,0|0|15")
+ TT_LINE("0,1|1|22")
+ TT_LINE("1,0|1|22")
+ TT_LINE("1,1|0|15")
+ TT_FAMILY("CD4XXX")
+ TRUTHTABLE_END()
+
LOCAL_LIB_ENTRY(CD4001_DIP)
+ LOCAL_LIB_ENTRY(CD4070_DIP)
/* DIP ONLY */
LOCAL_LIB_ENTRY(CD4020_DIP)
diff --git a/src/lib/netlist/macro/nlm_cd4xxx.h b/src/lib/netlist/macro/nlm_cd4xxx.h
index afb78706ea6..efa7f33d586 100644
--- a/src/lib/netlist/macro/nlm_cd4xxx.h
+++ b/src/lib/netlist/macro/nlm_cd4xxx.h
@@ -33,6 +33,12 @@
#define CD4001_DIP(name) \
NET_REGISTER_DEV(CD4001_DIP, name)
+#define CD4070_GATE(name) \
+ NET_REGISTER_DEV(CD4070_GATE, name)
+
+#define CD4070_DIP(name) \
+ NET_REGISTER_DEV(CD4070_DIP, name)
+
/* ----------------------------------------------------------------------------
* DIP only macros
* ---------------------------------------------------------------------------*/
diff --git a/src/lib/netlist/macro/nlm_opamp.cpp b/src/lib/netlist/macro/nlm_opamp.cpp
index 31a52f74a96..e06be8a5e00 100644
--- a/src/lib/netlist/macro/nlm_opamp.cpp
+++ b/src/lib/netlist/macro/nlm_opamp.cpp
@@ -69,21 +69,17 @@ NETLIST_END()
/*
* Generic layout with 1 opamp, VCC+ on pin 7, VCC- on pin 4 and compensation
+ * // FIXME: Offset inputs are not supported!
*/
static NETLIST_START(opamp_layout_1_7_4)
- DIPPINS( /* +--------------+ */
- OFFSET.N1, /* |1 ++ 8| */ NC,
- MINUS, /* |2 7| */ VCC.PLUS,
- PLUS, /* |3 6| */ OUT,
- VCC.MINUS, /* |4 5| */ OFFSET.N2
- /* +--------------+ */
+ DIPPINS( /* +--------------+ */
+ NC /* OFFSET */, /* |1 ++ 8| */ NC,
+ A.MINUS, /* |2 7| */ A.VCC,
+ A.PLUS, /* |3 6| */ A.OUT,
+ A.GND, /* |4 5| */ NC /* OFFSET */
+ /* +--------------+ */
)
- NET_C(A.GND, VCC.MINUS)
- NET_C(A.VCC, VCC.PLUS)
- NET_C(A.MINUS, MINUS)
- NET_C(A.PLUS, PLUS)
- NET_C(A.OUT, OUT)
NETLIST_END()
/*
@@ -138,6 +134,16 @@ static NETLIST_START(MB3614_DIP)
NETLIST_END()
+static NETLIST_START(TL084_DIP)
+ OPAMP(A, "TL084")
+ OPAMP(B, "TL084")
+ OPAMP(C, "TL084")
+ OPAMP(D, "TL084")
+
+ INCLUDE(opamp_layout_4_4_11)
+
+NETLIST_END()
+
static NETLIST_START(LM324_DIP)
OPAMP(A, "LM324")
OPAMP(B, "LM324")
@@ -219,9 +225,10 @@ static NETLIST_START(LM3900)
ALIAS(MINUS, R2.1) // Negative input
ALIAS(OUT, G1.OP) // Opamp output ...
ALIAS(GND, G1.ON) // V- terminal
- ALIAS(VCC, DUMMY.I) // V+ terminal
+ ALIAS(VCC, DUMMY.1) // V+ terminal
- DUMMY_INPUT(DUMMY)
+ RES(DUMMY, RES_K(1))
+ NET_C(DUMMY.2, GND)
/* The opamp model */
@@ -347,13 +354,18 @@ NETLIST_START(OPAMP_lib)
LOCAL_LIB_ENTRY(opamp_layout_1_8_5)
LOCAL_LIB_ENTRY(opamp_layout_1_11_6)
+ // FIXME: JFET Opamp may need better model
+ // VLL and VHH for +-6V RI=10^12 (for numerical stability 10^9 is used below
+ // RO from data sheet
+ NET_MODEL("TL084 OPAMP(TYPE=3 VLH=0.75 VLL=0.75 FPF=10 UGF=3000k SLEW=13M RI=1000M RO=192 DAB=0.0014)")
+
NET_MODEL("LM324 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.00075)")
NET_MODEL("LM358 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.001)")
NET_MODEL("MB3614 OPAMP(TYPE=3 VLH=1.4 VLL=0.02 FPF=10 UGF=1000k SLEW=0.6M RI=1000k RO=50 DAB=0.002)")
NET_MODEL("UA741 OPAMP(TYPE=3 VLH=1.0 VLL=1.0 FPF=5 UGF=1000k SLEW=0.5M RI=2000k RO=75 DAB=0.0017)")
NET_MODEL("LM747 OPAMP(TYPE=3 VLH=1.0 VLL=1.0 FPF=5 UGF=1000k SLEW=0.5M RI=2000k RO=50 DAB=0.0017)")
NET_MODEL("LM747A OPAMP(TYPE=3 VLH=2.0 VLL=2.0 FPF=5 UGF=1000k SLEW=0.7M RI=6000k RO=50 DAB=0.0015)")
- // TI and Motorola Datasheets differ - below are Motorola values values SLEW is average of LH and HL
+ // TI and Motorola Datasheets differ - below are Motorola values, SLEW is average of LH and HL
NET_MODEL("LM3900 OPAMP(TYPE=3 VLH=1.0 VLL=0.03 FPF=2k UGF=4M SLEW=10M RI=10M RO=2k DAB=0.0015)")
#if USE_LM3900_MODEL == 1
@@ -361,6 +373,7 @@ NETLIST_START(OPAMP_lib)
NET_MODEL("LM3900_PNP1 PNP(IS=1E-14 BF=40 TF=1E-7 CJC=1E-12 CJE=1E-12 VAF=150 RB=100 RE=5)")
#endif
LOCAL_LIB_ENTRY(MB3614_DIP)
+ LOCAL_LIB_ENTRY(TL084_DIP)
LOCAL_LIB_ENTRY(LM324_DIP)
LOCAL_LIB_ENTRY(LM358_DIP)
LOCAL_LIB_ENTRY(LM2902_DIP)
diff --git a/src/lib/netlist/macro/nlm_opamp.h b/src/lib/netlist/macro/nlm_opamp.h
index a7a001a710d..c0a1486aa2f 100644
--- a/src/lib/netlist/macro/nlm_opamp.h
+++ b/src/lib/netlist/macro/nlm_opamp.h
@@ -24,6 +24,9 @@
#define LM324_DIP(name) \
NET_REGISTER_DEV(LM324_DIP, name)
+#define TL084_DIP(name) \
+ NET_REGISTER_DEV(TL084_DIP, name)
+
#define LM2902_DIP(name) \
NET_REGISTER_DEV(LM2902_DIP, name)
@@ -33,6 +36,21 @@
#define LM3900(name) \
NET_REGISTER_DEV(LM3900, name)
+#define UA741_DIP8(name) \
+ NET_REGISTER_DEV(UA741_DIP8, name)
+
+#define UA741_DIP10(name) \
+ NET_REGISTER_DEV(UA741_DIP10, name)
+
+#define UA741_DIP14(name) \
+ NET_REGISTER_DEV(UA741_DIP14, name)
+
+#define LM747_DIP(name) \
+ NET_REGISTER_DEV(LM747_DIP, name)
+
+#define LM747A_DIP(name) \
+ NET_REGISTER_DEV(LM747A_DIP, name)
+
#endif // NL_AUTO_DEVICES
/* ----------------------------------------------------------------------------
diff --git a/src/lib/netlist/macro/nlm_other.cpp b/src/lib/netlist/macro/nlm_other.cpp
index befbc99a364..873f3ad84c5 100644
--- a/src/lib/netlist/macro/nlm_other.cpp
+++ b/src/lib/netlist/macro/nlm_other.cpp
@@ -48,7 +48,7 @@ NETLIST_START(otheric_lib)
TT_LINE(" 0 | 1 |100")
TT_LINE(" 1 | 0 |100")
// 2.1V negative going and 2.7V positive going at 5V
- TT_FAMILY("FAMILY(FV=0 IVL=0.42 IVH=0.54 OVL=0.05 OVH=0.05 ORL=10.0 ORH=10.0)")
+ TT_FAMILY("FAMILY(IVL=0.42 IVH=0.54 OVL=0.05 OVH=0.05 ORL=10.0 ORH=10.0)")
TRUTHTABLE_END()
LOCAL_LIB_ENTRY(MC14584B_DIP)
diff --git a/src/lib/netlist/macro/nlm_ttl74xx.cpp b/src/lib/netlist/macro/nlm_ttl74xx.cpp
index 9e0fa15c582..e96c32f66cf 100644
--- a/src/lib/netlist/macro/nlm_ttl74xx.cpp
+++ b/src/lib/netlist/macro/nlm_ttl74xx.cpp
@@ -897,7 +897,7 @@ NETLIST_START(TTL74XX_lib)
NET_MODEL("DM7414 SCHMITT_TRIGGER(VTP=1.7 VTM=0.9 VI=4.35 RI=6.15k VOH=3.5 ROH=120 VOL=0.1 ROL=37.5 TPLH=15 TPHL=15)")
NET_MODEL("TTL_7414_GATE SCHMITT_TRIGGER(VTP=1.7 VTM=0.9 VI=4.35 RI=6.15k VOH=3.5 ROH=120 VOL=0.1 ROL=37.5 TPLH=15 TPHL=15)")
NET_MODEL("DM74LS14 SCHMITT_TRIGGER(VTP=1.6 VTM=0.8 VI=4.4 RI=19.3k VOH=3.45 ROH=130 VOL=0.1 ROL=31.2 TPLH=15 TPHL=15)")
- //NET_MODEL("DM7414 FAMILY(FV=5 IVL=0.16 IVH=0.4 OVL=0.1 OVH=0.05 ORL=10.0 ORH=1.0e8)")
+ //NET_MODEL("DM7414 FAMILY(IVL=0.16 IVH=0.4 OVL=0.1 OVH=0.05 ORL=10.0 ORH=1.0e8)")
TRUTHTABLE_START(TTL_7400_GATE, 2, 1, "")