aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/driver.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/driver.cc')
-rw-r--r--kernel/driver.cc23
1 files changed, 17 insertions, 6 deletions
diff --git a/kernel/driver.cc b/kernel/driver.cc
index 0844eaa2e..45cdd461d 100644
--- a/kernel/driver.cc
+++ b/kernel/driver.cc
@@ -216,6 +216,7 @@ int main(int argc, char **argv)
printf(" -D <header_id>[:<filename>]\n");
printf(" dump the design when printing the specified log header to a file.\n");
printf(" yosys_dump_<header_id>.il is used as filename if none is specified.\n");
+ printf(" Use 'ALL' as <header_id> to dump at every header.\n");
printf("\n");
printf(" -V\n");
printf(" print version information and exit\n");
@@ -322,13 +323,23 @@ int main(int argc, char **argv)
case 'D':
{
auto args = split_tokens(optarg, ":");
- if (GetSize(args) == 1)
- args.push_back("yosys_dump_" + args[0] + ".il");
- if (GetSize(args) != 2) {
- fprintf(stderr, "Invalid number of tokens in -D.\n");
- exit(1);
+ if (!args.empty() && args[0] == "ALL") {
+ if (GetSize(args) != 1) {
+ fprintf(stderr, "Invalid number of tokens in -D ALL.\n");
+ exit(1);
+ }
+ log_hdump_all = true;
+ } else {
+ if (!args.empty() && !args[0].empty() && args[0].back() == '.')
+ args[0].pop_back();
+ if (GetSize(args) == 1)
+ args.push_back("yosys_dump_" + args[0] + ".il");
+ if (GetSize(args) != 2) {
+ fprintf(stderr, "Invalid number of tokens in -D.\n");
+ exit(1);
+ }
+ log_hdump[args[0]].insert(args[1]);
}
- log_hdump[args[0]].insert(args[1]);
}
break;
default: