aboutsummaryrefslogtreecommitdiffstats
path: root/passes/techmap
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2020-01-08 12:11:55 -0800
committerEddie Hung <eddie@fpgeh.com>2020-01-08 12:11:55 -0800
commit0696b7bc9e4bd86eadd0e0b92696392cc5dc6172 (patch)
tree115b26ce9d55182bb0b6c57fe6b1998eb044a5ac /passes/techmap
parent050f03f15b01855d9c3bd6e98c4c47ebab607d57 (diff)
downloadyosys-0696b7bc9e4bd86eadd0e0b92696392cc5dc6172.tar.gz
yosys-0696b7bc9e4bd86eadd0e0b92696392cc5dc6172.tar.bz2
yosys-0696b7bc9e4bd86eadd0e0b92696392cc5dc6172.zip
abc9: if -script value is a file, then source it, otherwise commands
Diffstat (limited to 'passes/techmap')
-rw-r--r--passes/techmap/abc9.cc27
1 files changed, 16 insertions, 11 deletions
diff --git a/passes/techmap/abc9.cc b/passes/techmap/abc9.cc
index 652ccafaf..5bcbb1611 100644
--- a/passes/techmap/abc9.cc
+++ b/passes/techmap/abc9.cc
@@ -267,16 +267,21 @@ void abc9_module(RTLIL::Design *design, RTLIL::Module *module, std::string scrip
abc9_script += stringf("&read %s/input.xaig; &ps; ", tempdir_name.c_str());
if (!script_file.empty()) {
- if (script_file[0] == '+') {
- for (size_t i = 1; i < script_file.size(); i++)
- if (script_file[i] == '\'')
- abc9_script += "'\\''";
- else if (script_file[i] == ',')
- abc9_script += " ";
- else
- abc9_script += script_file[i];
- } else
+ if (check_file_exists(script_file))
abc9_script += stringf("source %s", script_file.c_str());
+ else {
+ if (script_file[0] == '+') {
+ for (size_t i = 1; i < script_file.size(); i++)
+ if (script_file[i] == '\'')
+ abc9_script += "'\\''";
+ else if (script_file[i] == ',')
+ abc9_script += " ";
+ else
+ abc9_script += script_file[i];
+ }
+ else
+ abc9_script += script_file;
+ }
} else if (!lut_costs.empty() || !lut_file.empty()) {
abc9_script += fast_mode ? RTLIL::constpad.at("abc9.script.default.fast")
: RTLIL::constpad.at("abc9.script.default");
@@ -302,7 +307,7 @@ void abc9_module(RTLIL::Design *design, RTLIL::Module *module, std::string scrip
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; time", tempdir_name.c_str());
+ abc9_script += stringf("; &ps -l; &write -n %s/output.aig; time", tempdir_name.c_str());
abc9_script = add_echos_to_abc9_cmd(abc9_script);
for (size_t i = 0; i+1 < abc9_script.size(); i++)
@@ -924,7 +929,7 @@ struct Abc9Pass : public Pass {
extra_args(args, argidx, design);
rewrite_filename(script_file);
- if (!script_file.empty() && !is_absolute_path(script_file) && script_file[0] != '+')
+ if (!script_file.empty() && !is_absolute_path(script_file) && check_file_exists(script_file))
script_file = std::string(pwd) + "/" + script_file;
// handle -lut / -luts args