mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-07 06:33:24 +00:00
Merge pull request #5149 from YosysHQ/lofty/abc_new-genlib
Add genlib support to abc_new
This commit is contained in:
commit
6d64e73fe7
2 changed files with 23 additions and 5 deletions
|
@ -168,7 +168,7 @@ void abc9_module(RTLIL::Design *design, std::string script_file, std::string exe
|
||||||
vector<int> lut_costs, bool dff_mode, std::string delay_target, std::string /*lutin_shared*/, bool fast_mode,
|
vector<int> lut_costs, bool dff_mode, std::string delay_target, std::string /*lutin_shared*/, bool fast_mode,
|
||||||
bool show_tempdir, std::string box_file, std::string lut_file,
|
bool show_tempdir, std::string box_file, std::string lut_file,
|
||||||
std::vector<std::string> liberty_files, std::string wire_delay, std::string tempdir_name,
|
std::vector<std::string> liberty_files, std::string wire_delay, std::string tempdir_name,
|
||||||
std::string constr_file, std::vector<std::string> dont_use_cells)
|
std::string constr_file, std::vector<std::string> dont_use_cells, std::vector<std::string> genlib_files)
|
||||||
{
|
{
|
||||||
std::string abc9_script;
|
std::string abc9_script;
|
||||||
|
|
||||||
|
@ -186,6 +186,10 @@ void abc9_module(RTLIL::Design *design, std::string script_file, std::string exe
|
||||||
}
|
}
|
||||||
if (!constr_file.empty())
|
if (!constr_file.empty())
|
||||||
abc9_script += stringf("read_constr -v \"%s\"; ", constr_file.c_str());
|
abc9_script += stringf("read_constr -v \"%s\"; ", constr_file.c_str());
|
||||||
|
} else if (!genlib_files.empty()) {
|
||||||
|
for (std::string genlib_file : genlib_files) {
|
||||||
|
abc9_script += stringf("read_genlib \"%s\"; ", genlib_file.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log_assert(!box_file.empty());
|
log_assert(!box_file.empty());
|
||||||
|
@ -384,9 +388,14 @@ struct Abc9ExePass : public Pass {
|
||||||
log(" read the given Liberty file as a description of the target cell library.\n");
|
log(" read the given Liberty file as a description of the target cell library.\n");
|
||||||
log(" this option can be used multiple times.\n");
|
log(" this option can be used multiple times.\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
|
log(" -genlib <file>\n");
|
||||||
|
log(" read the given genlib file as a description of the target cell library.\n");
|
||||||
|
log(" this option can be used multiple times.\n");
|
||||||
|
log("\n");
|
||||||
log(" -dont_use <cell_name>\n");
|
log(" -dont_use <cell_name>\n");
|
||||||
log(" avoid usage of the technology cell <cell_name> when mapping the design.\n");
|
log(" avoid usage of the technology cell <cell_name> when mapping the design.\n");
|
||||||
log(" this option can be used multiple times.\n");
|
log(" this option can be used multiple times. only supported with Liberty\n");
|
||||||
|
log(" cell libraries.\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
log(" -D <picoseconds>\n");
|
log(" -D <picoseconds>\n");
|
||||||
log(" set delay target. the string {D} in the default scripts above is\n");
|
log(" set delay target. the string {D} in the default scripts above is\n");
|
||||||
|
@ -441,7 +450,7 @@ struct Abc9ExePass : public Pass {
|
||||||
|
|
||||||
std::string exe_file = yosys_abc_executable;
|
std::string exe_file = yosys_abc_executable;
|
||||||
std::string script_file, clk_str, box_file, lut_file, constr_file;
|
std::string script_file, clk_str, box_file, lut_file, constr_file;
|
||||||
std::vector<std::string> liberty_files, dont_use_cells;
|
std::vector<std::string> liberty_files, genlib_files, dont_use_cells;
|
||||||
std::string delay_target, lutin_shared = "-S 1", wire_delay;
|
std::string delay_target, lutin_shared = "-S 1", wire_delay;
|
||||||
std::string tempdir_name;
|
std::string tempdir_name;
|
||||||
bool fast_mode = false, dff_mode = false;
|
bool fast_mode = false, dff_mode = false;
|
||||||
|
@ -530,9 +539,15 @@ struct Abc9ExePass : public Pass {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (arg == "-liberty" && argidx+1 < args.size()) {
|
if (arg == "-liberty" && argidx+1 < args.size()) {
|
||||||
|
rewrite_filename(args[argidx+1]);
|
||||||
liberty_files.push_back(args[++argidx]);
|
liberty_files.push_back(args[++argidx]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (arg == "-genlib" && argidx+1 < args.size()) {
|
||||||
|
rewrite_filename(args[argidx+1]);
|
||||||
|
genlib_files.push_back(args[++argidx]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (arg == "-dont_use" && argidx+1 < args.size()) {
|
if (arg == "-dont_use" && argidx+1 < args.size()) {
|
||||||
dont_use_cells.push_back(args[++argidx]);
|
dont_use_cells.push_back(args[++argidx]);
|
||||||
continue;
|
continue;
|
||||||
|
@ -601,11 +616,13 @@ struct Abc9ExePass : public Pass {
|
||||||
if (tempdir_name.empty())
|
if (tempdir_name.empty())
|
||||||
log_cmd_error("abc9_exe '-cwd' option is mandatory.\n");
|
log_cmd_error("abc9_exe '-cwd' option is mandatory.\n");
|
||||||
|
|
||||||
|
if (!genlib_files.empty() && !dont_use_cells.empty())
|
||||||
|
log_cmd_error("abc9_exe '-genlib' is incompatible with '-dont_use'.\n");
|
||||||
|
|
||||||
abc9_module(design, script_file, exe_file, lut_costs, dff_mode,
|
abc9_module(design, script_file, exe_file, lut_costs, dff_mode,
|
||||||
delay_target, lutin_shared, fast_mode, show_tempdir,
|
delay_target, lutin_shared, fast_mode, show_tempdir,
|
||||||
box_file, lut_file, liberty_files, wire_delay, tempdir_name,
|
box_file, lut_file, liberty_files, wire_delay, tempdir_name,
|
||||||
constr_file, dont_use_cells);
|
constr_file, dont_use_cells, genlib_files);
|
||||||
}
|
}
|
||||||
} Abc9ExePass;
|
} Abc9ExePass;
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ struct AbcNewPass : public ScriptPass {
|
||||||
log(" -constr <file>\n");
|
log(" -constr <file>\n");
|
||||||
log(" -dont_use <cell_name>\n");
|
log(" -dont_use <cell_name>\n");
|
||||||
log(" -liberty <file>\n");
|
log(" -liberty <file>\n");
|
||||||
|
log(" -genlib <file>\n");
|
||||||
log(" these options are passed on to the 'abc9_exe' command which invokes\n");
|
log(" these options are passed on to the 'abc9_exe' command which invokes\n");
|
||||||
log(" the ABC tool on individual modules of the design. please see\n");
|
log(" the ABC tool on individual modules of the design. please see\n");
|
||||||
log(" 'help abc9_exe' for more details\n");
|
log(" 'help abc9_exe' for more details\n");
|
||||||
|
@ -90,7 +91,7 @@ struct AbcNewPass : public ScriptPass {
|
||||||
if (args[argidx] == "-exe" || args[argidx] == "-script" ||
|
if (args[argidx] == "-exe" || args[argidx] == "-script" ||
|
||||||
args[argidx] == "-D" ||
|
args[argidx] == "-D" ||
|
||||||
args[argidx] == "-constr" || args[argidx] == "-dont_use" ||
|
args[argidx] == "-constr" || args[argidx] == "-dont_use" ||
|
||||||
args[argidx] == "-liberty") {
|
args[argidx] == "-liberty" || args[argidx] == "-genlib") {
|
||||||
abc_exe_options += " " + args[argidx] + " " + args[argidx + 1];
|
abc_exe_options += " " + args[argidx] + " " + args[argidx + 1];
|
||||||
argidx++;
|
argidx++;
|
||||||
} else if (args[argidx] == "-run" && argidx + 1 < args.size()) {
|
} else if (args[argidx] == "-run" && argidx + 1 < args.size()) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue