diff options
| author | Miodrag Milanović <mmicko@gmail.com> | 2022-12-05 17:00:16 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-05 17:00:16 +0100 |
| commit | b60baad6629788063774b38d8e0ff483b0779b01 (patch) | |
| tree | 3b0f4e72cc0a436309c8c9ffe436448ccfb3a94a /passes | |
| parent | 9362fdb4c67f09bfaf3841364bd01e4d10ce5608 (diff) | |
| parent | 6589accfa9e858cc93b87d09cf6644aeea5151a4 (diff) | |
| download | yosys-b60baad6629788063774b38d8e0ff483b0779b01.tar.gz yosys-b60baad6629788063774b38d8e0ff483b0779b01.tar.bz2 yosys-b60baad6629788063774b38d8e0ff483b0779b01.zip | |
Merge pull request #3572 from jix/tcl-recover
tcl: Don't exit repl on recoverable command errors
Diffstat (limited to 'passes')
| -rw-r--r-- | passes/cmds/stat.cc | 4 | ||||
| -rw-r--r-- | passes/cmds/tee.cc | 13 |
2 files changed, 15 insertions, 2 deletions
diff --git a/passes/cmds/stat.cc b/passes/cmds/stat.cc index a998ab8e7..10e98952e 100644 --- a/passes/cmds/stat.cc +++ b/passes/cmds/stat.cc @@ -452,7 +452,7 @@ struct StatPass : public Pass { if (json_mode) { log("\n"); - log(" },\n"); + log(top_mod == nullptr ? " }\n" : " },\n"); } if (top_mod != nullptr) @@ -466,7 +466,7 @@ struct StatPass : public Pass { statdata_t data = hierarchy_worker(mod_stat, top_mod->name, 0, /*quiet=*/json_mode); - if (json_mode) + if (json_mode) data.log_data_json("design", true); else if (GetSize(mod_stat) > 1) { log("\n"); diff --git a/passes/cmds/tee.cc b/passes/cmds/tee.cc index 7a1f4a36b..39ed4a7a8 100644 --- a/passes/cmds/tee.cc +++ b/passes/cmds/tee.cc @@ -45,6 +45,9 @@ struct TeePass : public Pass { log(" -a logfile\n"); log(" Write output to this file, append if exists.\n"); log("\n"); + log(" -s scratchpad\n"); + log(" Write output to this scratchpad value, truncate if it exists.\n"); + log("\n"); log(" +INT, -INT\n"); log(" Add/subtract INT from the -v setting for this command.\n"); log("\n"); @@ -53,9 +56,11 @@ struct TeePass : public Pass { { std::vector<FILE*> backup_log_files, files_to_close; std::vector<std::ostream*> backup_log_streams; + std::vector<std::string> backup_log_scratchpads; int backup_log_verbose_level = log_verbose_level; backup_log_streams = log_streams; backup_log_files = log_files; + backup_log_scratchpads = log_scratchpads; size_t argidx; for (argidx = 1; argidx < args.size(); argidx++) @@ -78,6 +83,12 @@ struct TeePass : public Pass { files_to_close.push_back(f); continue; } + if (args[argidx] == "-s" && argidx+1 < args.size()) { + auto name = args[++argidx]; + design->scratchpad[name] = ""; + log_scratchpads.push_back(name); + continue; + } if (GetSize(args[argidx]) >= 2 && (args[argidx][0] == '-' || args[argidx][0] == '+') && args[argidx][1] >= '0' && args[argidx][1] <= '9') { log_verbose_level += atoi(args[argidx].c_str()); continue; @@ -93,6 +104,7 @@ struct TeePass : public Pass { fclose(cf); log_files = backup_log_files; log_streams = backup_log_streams; + log_scratchpads = backup_log_scratchpads; throw; } @@ -102,6 +114,7 @@ struct TeePass : public Pass { log_verbose_level = backup_log_verbose_level; log_files = backup_log_files; log_streams = backup_log_streams; + log_scratchpads = backup_log_scratchpads; } } TeePass; |
