aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorMarcelina Koƛcielnicka <mwk@0x04.net>2020-04-08 17:36:12 +0200
committerMarcelina Koƛcielnicka <mwk@0x04.net>2020-04-09 18:05:06 +0200
commit516857f3ba662f467d56df562eeca9ed214ac702 (patch)
treee584ce2b09eab5dce19e941da9e48ac0def550ac /kernel
parent7f33d43e3b8c7d362203cdc2b10eb5f3caf5cdbe (diff)
downloadyosys-516857f3ba662f467d56df562eeca9ed214ac702.tar.gz
yosys-516857f3ba662f467d56df562eeca9ed214ac702.tar.bz2
yosys-516857f3ba662f467d56df562eeca9ed214ac702.zip
[NFCI] Deduplicate builtin FF cell types list
A few passes included the same list of FF cell types. Make it a global const instead. The zinit pass also seems to include a list like that, but given that it seems to be completely broken at the time (see #1568 discussion), I'm going to pretend I didn't see that.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/rtlil.cc47
-rw-r--r--kernel/rtlil.h2
2 files changed, 49 insertions, 0 deletions
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc
index 00c116115..6a7eba2fa 100644
--- a/kernel/rtlil.cc
+++ b/kernel/rtlil.cc
@@ -47,6 +47,53 @@ int RTLIL::IdString::last_created_idx_ptr_;
dict<std::string, std::string> RTLIL::constpad;
+const pool<IdString> &RTLIL::builtin_ff_cell_types() {
+ static const pool<IdString> res = {
+ ID($sr),
+ ID($ff),
+ ID($dff),
+ ID($dffe),
+ ID($dffsr),
+ ID($adff),
+ ID($dlatch),
+ ID($dlatchsr),
+ ID($_DFFE_NN_),
+ ID($_DFFE_NP_),
+ ID($_DFFE_PN_),
+ ID($_DFFE_PP_),
+ ID($_DFFSR_NNN_),
+ ID($_DFFSR_NNP_),
+ ID($_DFFSR_NPN_),
+ ID($_DFFSR_NPP_),
+ ID($_DFFSR_PNN_),
+ ID($_DFFSR_PNP_),
+ ID($_DFFSR_PPN_),
+ ID($_DFFSR_PPP_),
+ ID($_DFF_NN0_),
+ ID($_DFF_NN1_),
+ ID($_DFF_NP0_),
+ ID($_DFF_NP1_),
+ ID($_DFF_N_),
+ ID($_DFF_PN0_),
+ ID($_DFF_PN1_),
+ ID($_DFF_PP0_),
+ ID($_DFF_PP1_),
+ ID($_DFF_P_),
+ ID($_DLATCHSR_NNN_),
+ ID($_DLATCHSR_NNP_),
+ ID($_DLATCHSR_NPN_),
+ ID($_DLATCHSR_NPP_),
+ ID($_DLATCHSR_PNN_),
+ ID($_DLATCHSR_PNP_),
+ ID($_DLATCHSR_PPN_),
+ ID($_DLATCHSR_PPP_),
+ ID($_DLATCH_N_),
+ ID($_DLATCH_P_),
+ ID($_FF_),
+ };
+ return res;
+}
+
RTLIL::Const::Const()
{
flags = RTLIL::CONST_FLAG_NONE;
diff --git a/kernel/rtlil.h b/kernel/rtlil.h
index 7279835ea..fb65f7a03 100644
--- a/kernel/rtlil.h
+++ b/kernel/rtlil.h
@@ -383,6 +383,8 @@ namespace RTLIL
extern dict<std::string, std::string> constpad;
+ const pool<IdString> &builtin_ff_cell_types();
+
static inline std::string escape_id(const std::string &str) {
if (str.size() > 0 && str[0] != '\\' && str[0] != '$')
return "\\" + str;