read_liberty: Start an `-ignore_busses` option

This commit is contained in:
Martin Povišer 2024-10-21 19:38:17 +02:00
parent 0e96e477a2
commit 28aa7b00ee
1 changed files with 14 additions and 0 deletions

View File

@ -462,6 +462,9 @@ struct LibertyFrontend : public Frontend {
log(" -ignore_miss_data_latch\n"); log(" -ignore_miss_data_latch\n");
log(" ignore latches with missing data and/or enable pins\n"); log(" ignore latches with missing data and/or enable pins\n");
log("\n"); log("\n");
log(" -ignore_busses\n");
log(" ignore cells with bus interfaces (wide ports)\n");
log("\n");
log(" -setattr <attribute_name>\n"); log(" -setattr <attribute_name>\n");
log(" set the specified attribute (to the value 1) on all loaded modules\n"); log(" set the specified attribute (to the value 1) on all loaded modules\n");
log("\n"); log("\n");
@ -478,6 +481,7 @@ struct LibertyFrontend : public Frontend {
bool flag_ignore_miss_func = false; bool flag_ignore_miss_func = false;
bool flag_ignore_miss_dir = false; bool flag_ignore_miss_dir = false;
bool flag_ignore_miss_data_latch = false; bool flag_ignore_miss_data_latch = false;
bool flag_ignore_busses = false;
bool flag_unit_delay = false; bool flag_unit_delay = false;
std::vector<std::string> attributes; std::vector<std::string> attributes;
@ -514,6 +518,10 @@ struct LibertyFrontend : public Frontend {
flag_ignore_miss_data_latch = true; flag_ignore_miss_data_latch = true;
continue; continue;
} }
if (arg == "-ignore_busses") {
flag_ignore_busses = true;
continue;
}
if (arg == "-setattr" && argidx+1 < args.size()) { if (arg == "-setattr" && argidx+1 < args.size()) {
attributes.push_back(RTLIL::escape_id(args[++argidx])); attributes.push_back(RTLIL::escape_id(args[++argidx]));
continue; continue;
@ -585,6 +593,12 @@ struct LibertyFrontend : public Frontend {
if (node->id == "bus" && node->args.size() == 1) if (node->id == "bus" && node->args.size() == 1)
{ {
if (flag_ignore_busses) {
log("Ignoring cell %s with a bus interface %s.\n", log_id(module->name), node->args.at(0).c_str());
delete module;
goto skip_cell;
}
if (!flag_lib) if (!flag_lib)
log_error("Error in cell %s: bus interfaces are only supported in -lib mode.\n", log_id(cell_name)); log_error("Error in cell %s: bus interfaces are only supported in -lib mode.\n", log_id(cell_name));