mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 04:28:18 +00:00
xilinx/ecp5: disable abc9's "&mfs" optimisation
Can sometimes fire an assertion, e.g. #1962
This commit is contained in:
parent
ae115fa3aa
commit
a998a4155d
|
@ -219,6 +219,10 @@ void abc9_module(RTLIL::Design *design, std::string script_file, std::string exe
|
||||||
for (size_t pos = abc9_script.find("{R}"); pos != std::string::npos; pos = abc9_script.find("{R}", pos))
|
for (size_t pos = abc9_script.find("{R}"); pos != std::string::npos; pos = abc9_script.find("{R}", pos))
|
||||||
abc9_script = abc9_script.substr(0, pos) + R + abc9_script.substr(pos+3);
|
abc9_script = abc9_script.substr(0, pos) + R + abc9_script.substr(pos+3);
|
||||||
|
|
||||||
|
if (design->scratchpad_get_bool("abc9.nomfs"))
|
||||||
|
for (size_t pos = abc9_script.find("&mfs"); pos != std::string::npos; pos = abc9_script.find("&mfs", pos))
|
||||||
|
abc9_script = abc9_script.erase(pos, strlen("&mfs"));
|
||||||
|
|
||||||
abc9_script += stringf("; &ps -l; &write -n %s/output.aig", tempdir_name.c_str());
|
abc9_script += stringf("; &ps -l; &write -n %s/output.aig", tempdir_name.c_str());
|
||||||
if (design->scratchpad_get_bool("abc9.verify")) {
|
if (design->scratchpad_get_bool("abc9.verify")) {
|
||||||
if (dff_mode)
|
if (dff_mode)
|
||||||
|
|
|
@ -324,6 +324,8 @@ struct SynthEcp5Pass : public ScriptPass
|
||||||
|
|
||||||
if (abc9) {
|
if (abc9) {
|
||||||
run("read_verilog -icells -lib -specify +/abc9_model.v +/ecp5/abc9_model.v");
|
run("read_verilog -icells -lib -specify +/abc9_model.v +/ecp5/abc9_model.v");
|
||||||
|
if (!help_mode && !active_design->scratchpad.count("abc9.nomfs"))
|
||||||
|
active_design->scratchpad_set_bool("abc9.nomfs", true);
|
||||||
if (nowidelut)
|
if (nowidelut)
|
||||||
run("abc9 -maxlut 4 -W 200");
|
run("abc9 -maxlut 4 -W 200");
|
||||||
else
|
else
|
||||||
|
|
|
@ -613,6 +613,8 @@ struct SynthXilinxPass : public ScriptPass
|
||||||
if (family != "xc7")
|
if (family != "xc7")
|
||||||
log_warning("'synth_xilinx -abc9' not currently supported for the '%s' family, "
|
log_warning("'synth_xilinx -abc9' not currently supported for the '%s' family, "
|
||||||
"will use timing for 'xc7' instead.\n", family.c_str());
|
"will use timing for 'xc7' instead.\n", family.c_str());
|
||||||
|
if (!help_mode && !active_design->scratchpad.count("abc9.nomfs"))
|
||||||
|
active_design->scratchpad_set_bool("abc9.nomfs", true);
|
||||||
std::string techmap_args = "-map +/xilinx/abc9_map.v -max_iter 1";
|
std::string techmap_args = "-map +/xilinx/abc9_map.v -max_iter 1";
|
||||||
if (dff_mode)
|
if (dff_mode)
|
||||||
techmap_args += " -D DFF_MODE";
|
techmap_args += " -D DFF_MODE";
|
||||||
|
|
Loading…
Reference in a new issue