diff options
Diffstat (limited to 'src/lib/netlist/macro')
-rw-r--r-- | src/lib/netlist/macro/nlm_base.cpp | 4 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_cd4xxx.cpp | 49 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_cd4xxx.h | 6 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_opamp.cpp | 41 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_opamp.h | 18 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_other.cpp | 2 | ||||
-rw-r--r-- | src/lib/netlist/macro/nlm_ttl74xx.cpp | 2 |
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, "") |