kernel/mem: Commit new values of attributes in emit.
authorMarcelina Kościelnicka <mwk@0x04.net>
Mon, 12 Jul 2021 04:26:13 +0000 (06:26 +0200)
committerMarcelina Kościelnicka <mwk@0x04.net>
Mon, 12 Jul 2021 11:39:31 +0000 (13:39 +0200)
kernel/mem.cc

index 82942d9be8602961209b246e9e794785238a2a43..8d77c36431ec52cd9dfa6b18165a5a2667cc54b3 100644 (file)
@@ -210,6 +210,7 @@ void Mem::emit() {
                mem->width = width;
                mem->start_offset = start_offset;
                mem->size = size;
+               mem->attributes = attributes;
                for (auto &port : rd_ports) {
                        // TODO: remove
                        log_assert(port.arst == State::S0);
@@ -217,6 +218,7 @@ void Mem::emit() {
                        log_assert(port.init_value == Const(State::Sx, width << port.wide_log2));
                        if (!port.cell)
                                port.cell = module->addCell(NEW_ID, ID($memrd));
+                       port.cell->attributes = port.attributes;
                        port.cell->parameters[ID::MEMID] = memid.str();
                        port.cell->parameters[ID::ABITS] = GetSize(port.addr);
                        port.cell->parameters[ID::WIDTH] = width << port.wide_log2;
@@ -232,6 +234,7 @@ void Mem::emit() {
                for (auto &port : wr_ports) {
                        if (!port.cell)
                                port.cell = module->addCell(NEW_ID, ID($memwr));
+                       port.cell->attributes = port.attributes;
                        port.cell->parameters[ID::MEMID] = memid.str();
                        port.cell->parameters[ID::ABITS] = GetSize(port.addr);
                        port.cell->parameters[ID::WIDTH] = width << port.wide_log2;
@@ -247,6 +250,7 @@ void Mem::emit() {
                for (auto &init : inits) {
                        if (!init.cell)
                                init.cell = module->addCell(NEW_ID, ID($meminit));
+                       init.cell->attributes = init.attributes;
                        init.cell->parameters[ID::MEMID] = memid.str();
                        init.cell->parameters[ID::ABITS] = GetSize(init.addr);
                        init.cell->parameters[ID::WIDTH] = width;