From 179d03ac96d5caa5f91229fbdc87bad151c50ec6 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Tue, 28 Jul 2020 20:43:41 +0200 Subject: [PATCH] netlist: Convert CD4013 DIP to macro. --- src/lib/netlist/devices/nld_4013.cpp | 34 ----------------------- src/lib/netlist/devices/nld_4013.h | 3 --- src/lib/netlist/devices/nld_devinc.h | 4 +++ src/lib/netlist/macro/nlm_cd4xxx.cpp | 40 ++++++++++++++++++++++++++-- src/lib/netlist/macro/nlm_cd4xxx.h | 4 +++ 5 files changed, 46 insertions(+), 39 deletions(-) diff --git a/src/lib/netlist/devices/nld_4013.cpp b/src/lib/netlist/devices/nld_4013.cpp index 42c2eb71350..455a4926d1f 100644 --- a/src/lib/netlist/devices/nld_4013.cpp +++ b/src/lib/netlist/devices/nld_4013.cpp @@ -86,41 +86,7 @@ namespace netlist } }; - NETLIB_OBJECT(CD4013_dip) - { - NETLIB_CONSTRUCTOR(CD4013_dip) - , m_A(*this, "A") - , m_B(*this, "B") - { - register_subalias("1", "A.Q"); - register_subalias("2", "A.QQ"); - register_subalias("3", "A.CLOCK"); - register_subalias("4", "A.RESET"); - register_subalias("5", "A.DATA"); - register_subalias("6", "A.SET"); - register_subalias("7", "A.VSS"); - - register_subalias("8", "B.SET"); - register_subalias("9", "B.DATA"); - register_subalias("10", "B.RESET"); - register_subalias("11", "B.CLOCK"); - register_subalias("12", "B.QQ"); - register_subalias("13", "B.Q"); - register_subalias("14", "A.VDD"); - - connect("A.VSS", "B.VSS"); - connect("A.VDD", "B.VDD"); - } - //NETLIB_UPDATEI(); - //NETLIB_RESETI(); - - private: - NETLIB_SUB(CD4013) m_A; - NETLIB_SUB(CD4013) m_B; - }; - NETLIB_DEVICE_IMPL(CD4013, "CD4013", "+CLOCK,+DATA,+RESET,+SET,@VDD,@VSS") - NETLIB_DEVICE_IMPL(CD4013_dip, "CD4013_DIP", "") } //namespace devices } // namespace netlist diff --git a/src/lib/netlist/devices/nld_4013.h b/src/lib/netlist/devices/nld_4013.h index 3d77a45b70b..bb47796a553 100644 --- a/src/lib/netlist/devices/nld_4013.h +++ b/src/lib/netlist/devices/nld_4013.h @@ -48,7 +48,4 @@ #define CD4013(...) \ NET_REGISTER_DEVEXT(CD4013, __VA_ARGS__) -#define CD4013_DIP(name) \ - NET_REGISTER_DEV(CD4013_DIP, name) - #endif /* NLD_4013_H_ */ diff --git a/src/lib/netlist/devices/nld_devinc.h b/src/lib/netlist/devices/nld_devinc.h index 5c5ced89c64..7b27d60608d 100644 --- a/src/lib/netlist/devices/nld_devinc.h +++ b/src/lib/netlist/devices/nld_devinc.h @@ -1275,6 +1275,10 @@ #define CD4070_DIP(...) \ NET_REGISTER_DEVEXT(CD4070_DIP, __VA_ARGS__) +// usage : CD4013_DIP(name) +#define CD4013_DIP(...) \ + NET_REGISTER_DEVEXT(CD4013_DIP, __VA_ARGS__) + // usage : CD4020_DIP(name) #define CD4020_DIP(...) \ NET_REGISTER_DEVEXT(CD4020_DIP, __VA_ARGS__) diff --git a/src/lib/netlist/macro/nlm_cd4xxx.cpp b/src/lib/netlist/macro/nlm_cd4xxx.cpp index eab6968d487..3da618b866c 100644 --- a/src/lib/netlist/macro/nlm_cd4xxx.cpp +++ b/src/lib/netlist/macro/nlm_cd4xxx.cpp @@ -78,6 +78,41 @@ static NETLIST_START(CD4011_DIP) ) NETLIST_END() +/* CD4013: Dual Positive-Edge-Triggered D Flip-Flops + * with Set, Reset and Complementary Outputs + * + * +--------------+ + * Q1 |1 ++ 14| VDD + * Q1Q |2 13| Q2 + * CLOCK1 |3 12| Q2Q + * RESET1 |4 4013 11| CLOCK2 + * DATA1 |5 10| RESET2 + * SET1 |6 9| DATA2 + * VSS |7 8| SET2 + * +--------------+ + * + * Naming conventions follow National Semiconductor datasheet + */ + +static NETLIST_START(CD4013_DIP) + CD4013(A) + CD4013(B) + + NET_C(A.VDD, B.VDD) + NET_C(A.VSS, B.VSS) + + DIPPINS( /* +--------------+ */ + A.Q, /* Q1 |1 ++ 14| VDD */ A.VDD, + A.QQ, /* Q1Q |2 13| Q2 */ B.Q, + A.CLOCK, /* CLOCK1 |3 12| Q2Q */ B.QQ, + A.RESET, /* RESET1 |4 4013 11| CLOCK2 */ B.CLOCK, + A.DATA, /* DATA1 |5 10| RESET2 */ B.RESET, + A.SET, /* SET1 |6 9| DATA2 */ B.DATA, + A.VSS, /* VSS |7 8| SET2 */ B.SET + /* +--------------+ */ + ) +NETLIST_END() + /* CD4020: 14-Stage Ripple Carry Binary Counters * * +--------------+ @@ -109,7 +144,7 @@ static NETLIST_START(CD4020_DIP) s1.Q7, /* Q7 |6 11| RESET */ s1.RESET, s1.Q4, /* Q4 |7 10| IP */ s1.IP, s1.VSS, /* VSS |8 9| Q1 */ s1.Q1 - /* +--------------+ */ + /* +--------------+ */ ) /* * IP = (Input pulses) @@ -472,11 +507,12 @@ NETLIST_START(CD4XXX_lib) LOCAL_LIB_ENTRY(CD4070_DIP) /* DIP ONLY */ + LOCAL_LIB_ENTRY(CD4013_DIP) LOCAL_LIB_ENTRY(CD4020_DIP) LOCAL_LIB_ENTRY(CD4024_DIP) - LOCAL_LIB_ENTRY(CD4016_DIP) LOCAL_LIB_ENTRY(CD4053_DIP) LOCAL_LIB_ENTRY(CD4066_DIP) + LOCAL_LIB_ENTRY(CD4016_DIP) LOCAL_LIB_ENTRY(CD4316_DIP) LOCAL_LIB_ENTRY(CD4538_DIP) diff --git a/src/lib/netlist/macro/nlm_cd4xxx.h b/src/lib/netlist/macro/nlm_cd4xxx.h index 6a8d2f946f0..7e56a515923 100644 --- a/src/lib/netlist/macro/nlm_cd4xxx.h +++ b/src/lib/netlist/macro/nlm_cd4xxx.h @@ -13,6 +13,7 @@ * * CD4001_NOR : single gate * CD4001_DIP : dip package + * CD4013_DIP : dip package (device model in core) * CD4020_DIP : dip package (device model in core) * CD4024_DIP : dip package (device model in core) * CD4016_DIP : dip package (device model in core) @@ -57,6 +58,9 @@ * DIP only macros * ---------------------------------------------------------------------------*/ +#define CD4013_DIP(name) \ + NET_REGISTER_DEV(CD4013_DIP, name) + #define CD4020_DIP(name) \ NET_REGISTER_DEV(CD4020_DIP, name)