Skip to content

Commit

Permalink
techmap: Add -dont_map for selective disabling of rules
Browse files Browse the repository at this point in the history
  • Loading branch information
povik committed Nov 27, 2024
1 parent 4b3c03d commit 2962f8f
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions passes/techmap/techmap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1028,6 +1028,10 @@ struct TechmapPass : public Pass {
log(" map file. Note that the Verilog frontend is also called with the\n");
log(" '-nooverwrite' option set.\n");
log("\n");
log(" -dont_map <celltype>\n");
log(" ignore any mapping rules for the given cell type, that is leave it\n");
log(" unmapped.\n");
log("\n");
log("When a module in the map file has the 'techmap_celltype' attribute set, it will\n");
log("match cells with a type that match the text value of this attribute. Otherwise\n");
log("the module name will be used to match the cell. Multiple space-separated cell\n");
Expand Down Expand Up @@ -1159,6 +1163,7 @@ struct TechmapPass : public Pass {
simplemap_get_mappers(worker.simplemap_mappers);

std::vector<std::string> map_files;
std::vector<RTLIL::IdString> dont_map;
std::string verilog_frontend = "verilog -nooverwrite -noblackbox";
int max_iter = -1;

Expand Down Expand Up @@ -1200,6 +1205,10 @@ struct TechmapPass : public Pass {
worker.ignore_wb = true;
continue;
}
if (args[argidx] == "-dont_map" && argidx+1 < args.size()) {
dont_map.push_back(RTLIL::escape_id(args[++argidx]));
continue;
}
break;
}
extra_args(args, argidx, design);
Expand Down Expand Up @@ -1256,6 +1265,11 @@ struct TechmapPass : public Pass {
celltypeMap[module_name].insert(module->name);
}
}

// Erase any rules disabled with a -dont_map argument
for (auto type : dont_map)
celltypeMap.erase(type);

log_debug("Cell type mappings to use:\n");
for (auto &i : celltypeMap) {
i.second.sort(RTLIL::sort_by_id_str());
Expand Down

0 comments on commit 2962f8f

Please sign in to comment.