diff options
author | Miodrag Milanović <mmicko@gmail.com> | 2019-09-30 17:49:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-30 17:49:23 +0200 |
commit | 0d27ffd4e6d53349d80d6f29f9e6b2f1c4b03cb7 (patch) | |
tree | bd4c25fab759a4dc4a7354a9f6fc72205e97dfda | |
parent | 7ed13297b104c200f6d15cf1265417e823c8d308 (diff) | |
parent | 9e55b234b47b01dc396e793b7f31236c9e87c185 (diff) | |
download | yosys-0d27ffd4e6d53349d80d6f29f9e6b2f1c4b03cb7.tar.gz yosys-0d27ffd4e6d53349d80d6f29f9e6b2f1c4b03cb7.tar.bz2 yosys-0d27ffd4e6d53349d80d6f29f9e6b2f1c4b03cb7.zip |
Merge pull request #1416 from YosysHQ/mmicko/frontend_binary_in
Open aig frontend as binary file
-rw-r--r-- | frontends/aiger/aigerparse.cc | 8 | ||||
-rw-r--r-- | kernel/register.cc | 4 | ||||
-rw-r--r-- | kernel/register.h | 2 | ||||
-rw-r--r-- | passes/techmap/abc9.cc | 2 |
4 files changed, 10 insertions, 6 deletions
diff --git a/frontends/aiger/aigerparse.cc b/frontends/aiger/aigerparse.cc index 986d34fb3..5a1da4db1 100644 --- a/frontends/aiger/aigerparse.cc +++ b/frontends/aiger/aigerparse.cc @@ -285,6 +285,8 @@ end_of_header: } else if (c == 'c') { f.ignore(1); + if (f.peek() == '\r') + f.ignore(1); if (f.peek() == '\n') break; // Else constraint (TODO) @@ -1056,13 +1058,15 @@ struct AigerFrontend : public Frontend { } break; } - extra_args(f, filename, args, argidx); + extra_args(f, filename, args, argidx, true); if (module_name.empty()) { #ifdef _WIN32 char fname[_MAX_FNAME]; _splitpath(filename.c_str(), NULL /* drive */, NULL /* dir */, fname, NULL /* ext */); - module_name = fname; + char* bn = strdup(fname); + module_name = RTLIL::escape_id(bn); + free(bn); #else char* bn = strdup(filename.c_str()); module_name = RTLIL::escape_id(bn); diff --git a/kernel/register.cc b/kernel/register.cc index 3033ee710..37f2e5e1b 100644 --- a/kernel/register.cc +++ b/kernel/register.cc @@ -439,7 +439,7 @@ void Frontend::execute(std::vector<std::string> args, RTLIL::Design *design) FILE *Frontend::current_script_file = NULL; std::string Frontend::last_here_document; -void Frontend::extra_args(std::istream *&f, std::string &filename, std::vector<std::string> args, size_t argidx) +void Frontend::extra_args(std::istream *&f, std::string &filename, std::vector<std::string> args, size_t argidx, bool bin_input) { bool called_with_fp = f != NULL; @@ -489,7 +489,7 @@ void Frontend::extra_args(std::istream *&f, std::string &filename, std::vector<s next_args.insert(next_args.end(), filenames.begin()+1, filenames.end()); } std::ifstream *ff = new std::ifstream; - ff->open(filename.c_str()); + ff->open(filename.c_str(), bin_input ? std::ifstream::binary : std::ifstream::in); yosys_input_files.insert(filename); if (ff->fail()) delete ff; diff --git a/kernel/register.h b/kernel/register.h index be836013f..85d552f0d 100644 --- a/kernel/register.h +++ b/kernel/register.h @@ -94,7 +94,7 @@ struct Frontend : Pass virtual void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *design) = 0; static std::vector<std::string> next_args; - void extra_args(std::istream *&f, std::string &filename, std::vector<std::string> args, size_t argidx); + void extra_args(std::istream *&f, std::string &filename, std::vector<std::string> args, size_t argidx, bool bin_input = false); static void frontend_call(RTLIL::Design *design, std::istream *f, std::string filename, std::string command); static void frontend_call(RTLIL::Design *design, std::istream *f, std::string filename, std::vector<std::string> args); diff --git a/passes/techmap/abc9.cc b/passes/techmap/abc9.cc index aa473e67d..09d6e9670 100644 --- a/passes/techmap/abc9.cc +++ b/passes/techmap/abc9.cc @@ -471,7 +471,7 @@ void abc9_module(RTLIL::Design *design, RTLIL::Module *current_module, std::stri log_error("ABC: execution of command \"%s\" failed: return code %d.\n", buffer.c_str(), ret); buffer = stringf("%s/%s", tempdir_name.c_str(), "output.aig"); - ifs.open(buffer); + ifs.open(buffer, std::ifstream::binary); if (ifs.fail()) log_error("Can't open ABC output file `%s'.\n", buffer.c_str()); |