RTLIL: factor out RTLIL::Module::addMemory. NFC.
authorwhitequark <whitequark@whitequark.org>
Wed, 3 Jun 2020 14:35:27 +0000 (14:35 +0000)
committerwhitequark <whitequark@whitequark.org>
Thu, 4 Jun 2020 00:02:12 +0000 (00:02 +0000)
kernel/rtlil.cc
kernel/rtlil.h
passes/techmap/flatten.cc
passes/techmap/techmap.cc

index ca4201b532b0eace12b6a4608e61dbe298679c29..dc1add0ff0055c5fe7720f449bbf9654df9ccf55 100644 (file)
@@ -1884,6 +1884,18 @@ RTLIL::Cell *RTLIL::Module::addCell(RTLIL::IdString name, const RTLIL::Cell *oth
        return cell;
 }
 
+RTLIL::Memory *RTLIL::Module::addMemory(RTLIL::IdString name, const RTLIL::Memory *other)
+{
+       RTLIL::Memory *mem = new RTLIL::Memory;
+       mem->name = name;
+       mem->width = other->width;
+       mem->start_offset = other->start_offset;
+       mem->size = other->size;
+       mem->attributes = other->attributes;
+       memories[mem->name] = mem;
+       return mem;
+}
+
 #define DEF_METHOD(_func, _y_size, _type) \
        RTLIL::Cell* RTLIL::Module::add ## _func(RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed, const std::string &src) { \
                RTLIL::Cell *cell = addCell(name, _type);           \
index 8228523d5905c8059d409a42f66f394153bd9833..8d2e42b422ce71ceba54290a7d30bb867dc2756b 100644 (file)
@@ -1170,6 +1170,8 @@ public:
        RTLIL::Cell *addCell(RTLIL::IdString name, RTLIL::IdString type);
        RTLIL::Cell *addCell(RTLIL::IdString name, const RTLIL::Cell *other);
 
+       RTLIL::Memory *addMemory(RTLIL::IdString name, const RTLIL::Memory *other);
+
        // The add* methods create a cell and return the created cell. All signals must exist in advance.
 
        RTLIL::Cell* addNot (RTLIL::IdString name, const RTLIL::SigSpec &sig_a, const RTLIL::SigSpec &sig_y, bool is_signed = false, const std::string &src = "");
index 605759bec019c21d86856e5d74c5df01e357ae96..dbea12dca118ba825d15a7730d9db90861a55563 100644 (file)
@@ -79,15 +79,9 @@ struct FlattenWorker
                for (auto &it : tpl->memories) {
                        IdString m_name = it.first;
                        apply_prefix(cell->name, m_name);
-                       RTLIL::Memory *m = new RTLIL::Memory;
-                       m->name = m_name;
-                       m->width = it.second->width;
-                       m->start_offset = it.second->start_offset;
-                       m->size = it.second->size;
-                       m->attributes = it.second->attributes;
+                       RTLIL::Memory *m = module->addMemory(m_name, it.second);
                        if (m->attributes.count(ID::src))
                                m->add_strpool_attribute(ID::src, extra_src_attrs);
-                       module->memories[m->name] = m;
                        memory_renames[it.first] = m->name;
                        design->select(module, m);
                }
index 9c0402e0f3a3b2aaa991773e4460a039a5ecbebb..535db9465bfcec9020ac274d1f96a84fed44e9a1 100644 (file)
@@ -174,15 +174,9 @@ struct TechmapWorker
                for (auto &it : tpl->memories) {
                        IdString m_name = it.first;
                        apply_prefix(cell->name, m_name);
-                       RTLIL::Memory *m = new RTLIL::Memory;
-                       m->name = m_name;
-                       m->width = it.second->width;
-                       m->start_offset = it.second->start_offset;
-                       m->size = it.second->size;
-                       m->attributes = it.second->attributes;
+                       RTLIL::Memory *m = module->addMemory(m_name, it.second);
                        if (m->attributes.count(ID::src))
                                m->add_strpool_attribute(ID::src, extra_src_attrs);
-                       module->memories[m->name] = m;
                        memory_renames[it.first] = m->name;
                        design->select(module, m);
                }