diff options
author | Eddie Hung <eddie@fpgeh.com> | 2020-04-20 10:30:10 -0700 |
---|---|---|
committer | Eddie Hung <eddie@fpgeh.com> | 2020-04-20 10:30:10 -0700 |
commit | a998a4155d0e8a109bae80c3be24ed8465378b46 (patch) | |
tree | c5082758b19d007a83ff16df53163c37c4aad887 /passes/techmap | |
parent | ae115fa3aac9acf7534b3f7c08afaa1b86bfc4ad (diff) | |
download | yosys-a998a4155d0e8a109bae80c3be24ed8465378b46.tar.gz yosys-a998a4155d0e8a109bae80c3be24ed8465378b46.tar.bz2 yosys-a998a4155d0e8a109bae80c3be24ed8465378b46.zip |
xilinx/ecp5: disable abc9's "&mfs" optimisation
Can sometimes fire an assertion, e.g. #1962
Diffstat (limited to 'passes/techmap')
-rw-r--r-- | passes/techmap/abc9_exe.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/passes/techmap/abc9_exe.cc b/passes/techmap/abc9_exe.cc index 18618ff91..1aabbd396 100644 --- a/passes/techmap/abc9_exe.cc +++ b/passes/techmap/abc9_exe.cc @@ -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)) 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()); if (design->scratchpad_get_bool("abc9.verify")) { if (dff_mode) |