Revert "Add support for non-power-of-two mem chunks in verific importer"
authorClaire Wolf <claire@symbioticeda.com>
Sun, 17 May 2020 09:31:11 +0000 (11:31 +0200)
committerClaire Wolf <claire@symbioticeda.com>
Sun, 17 May 2020 09:31:11 +0000 (11:31 +0200)
This reverts commit 173aa27ca5ef6e7c0a9277e8da7765adcd63bfe9.

frontends/verific/verific.cc

index 5f8a78e483949304ebde081778cd6507b8c6891d..fe4bda68e00bb06071ea4305eb7edb4359b41826 100644 (file)
@@ -1265,7 +1265,7 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::se
                        int numchunks = int(inst->OutputSize()) / memory->width;
                        int chunksbits = ceil_log2(numchunks);
 
-                       if ((numchunks * memory->width) != int(inst->OutputSize()))
+                       if ((numchunks * memory->width) != int(inst->OutputSize()) || (numchunks & (numchunks - 1)) != 0)
                                log_error("Import of asymmetric memories of this type is not supported yet: %s %s\n", inst->Name(), inst->GetInput()->Name());
 
                        for (int i = 0; i < numchunks; i++)
@@ -1273,11 +1273,6 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::se
                                RTLIL::SigSpec addr = {operatorInput1(inst), RTLIL::Const(i, chunksbits)};
                                RTLIL::SigSpec data = operatorOutput(inst).extract(i * memory->width, memory->width);
 
-                               if ((numchunks & (numchunks - 1)) != 0) {
-                                       addr = module->Mul(NEW_ID, operatorInput1(inst), RTLIL::Const(numchunks));
-                                       addr = module->Add(NEW_ID, addr, RTLIL::Const(i));
-                               }
-
                                RTLIL::Cell *cell = module->addCell(numchunks == 1 ? inst_name :
                                                RTLIL::IdString(stringf("%s_%d", inst_name.c_str(), i)), ID($memrd));
                                cell->parameters[ID::MEMID] = memory->name.str();
@@ -1300,7 +1295,7 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::se
                        int numchunks = int(inst->Input2Size()) / memory->width;
                        int chunksbits = ceil_log2(numchunks);
 
-                       if ((numchunks * memory->width) != int(inst->Input2Size()))
+                       if ((numchunks * memory->width) != int(inst->Input2Size()) || (numchunks & (numchunks - 1)) != 0)
                                log_error("Import of asymmetric memories of this type is not supported yet: %s %s\n", inst->Name(), inst->GetOutput()->Name());
 
                        for (int i = 0; i < numchunks; i++)
@@ -1308,11 +1303,6 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::se
                                RTLIL::SigSpec addr = {operatorInput1(inst), RTLIL::Const(i, chunksbits)};
                                RTLIL::SigSpec data = operatorInput2(inst).extract(i * memory->width, memory->width);
 
-                               if ((numchunks & (numchunks - 1)) != 0) {
-                                       addr = module->Mul(NEW_ID, operatorInput1(inst), RTLIL::Const(numchunks));
-                                       addr = module->Add(NEW_ID, addr, RTLIL::Const(i));
-                               }
-
                                RTLIL::Cell *cell = module->addCell(numchunks == 1 ? inst_name :
                                                RTLIL::IdString(stringf("%s_%d", inst_name.c_str(), i)), ID($memwr));
                                cell->parameters[ID::MEMID] = memory->name.str();