Merge pull request #236 from antmicro/dump_options
Add handling of dump options
diff --git a/uhdm-plugin/uhdmcommonfrontend.cc b/uhdm-plugin/uhdmcommonfrontend.cc
index b340797..a1536d4 100644
--- a/uhdm-plugin/uhdmcommonfrontend.cc
+++ b/uhdm-plugin/uhdmcommonfrontend.cc
@@ -35,7 +35,28 @@
log(" ignore assert() statements");
log("\n");
log(" -debug\n");
- log(" print debug info to stdout");
+ log(" alias for -dump_ast1 -dump_ast2 -dump_vlog1 -dump_vlog2 -yydebug\n");
+ log("\n");
+ log(" -dump_ast1\n");
+ log(" dump abstract syntax tree (before simplification)\n");
+ log("\n");
+ log(" -dump_ast2\n");
+ log(" dump abstract syntax tree (after simplification)\n");
+ log("\n");
+ log(" -no_dump_ptr\n");
+ log(" do not include hex memory addresses in dump (easier to diff dumps)\n");
+ log("\n");
+ log(" -dump_vlog1\n");
+ log(" dump ast as Verilog code (before simplification)\n");
+ log("\n");
+ log(" -dump_vlog2\n");
+ log(" dump ast as Verilog code (after simplification)\n");
+ log("\n");
+ log(" -dump_rtlil\n");
+ log(" dump generated RTLIL netlist\n");
+ log("\n");
+ log(" -yydebug\n");
+ log(" enable parser debug output\n");
log("\n");
log(" -report [directory]\n");
log(" write a coverage report for the UHDM file\n");
@@ -53,8 +74,19 @@
this->args = args;
bool defer = false;
+ bool dump_ast1 = false;
+ bool dump_ast2 = false;
+ bool dump_vlog1 = false;
+ bool dump_vlog2 = false;
+ bool no_dump_ptr = false;
+ bool dump_rtlil = false;
+
for (size_t i = 1; i < args.size(); i++) {
if (args[i] == "-debug") {
+ dump_ast1 = true;
+ dump_ast2 = true;
+ dump_vlog1 = true;
+ dump_vlog2 = true;
this->shared.debug_flag = true;
} else if (args[i] == "-report" && ++i < args.size()) {
this->report_directory = args[i];
@@ -63,6 +95,20 @@
this->shared.no_assert = true;
} else if (args[i] == "-defer") {
defer = true;
+ } else if (args[i] == "-dump_ast1") {
+ dump_ast1 = true;
+ } else if (args[i] == "-dump_ast2") {
+ dump_ast2 = true;
+ } else if (args[i] == "-dump_vlog1") {
+ dump_vlog1 = true;
+ } else if (args[i] == "-dump_vlog2") {
+ dump_vlog2 = true;
+ } else if (args[i] == "-no_dump_ptr") {
+ no_dump_ptr = true;
+ } else if (args[i] == "-dump_rtlil") {
+ dump_rtlil = true;
+ } else if (args[i] == "-yydebug") {
+ this->shared.debug_flag = true;
}
}
extra_args(f, filename, args, args.size() - 1);
@@ -71,15 +117,13 @@
AST::set_line_num = &set_line_num;
AST::get_line_num = &get_line_num;
- bool dump_ast1 = this->shared.debug_flag;
- bool dump_ast2 = this->shared.debug_flag;
bool dont_redefine = false;
bool default_nettype_wire = true;
AST::AstNode *current_ast = parse(filename);
- AST::process(design, current_ast, dump_ast1, dump_ast2, false, false, false, false, false, false, false, false, false, false, false, false, false,
- false, dont_redefine, false, defer, default_nettype_wire);
+ AST::process(design, current_ast, dump_ast1, dump_ast2, no_dump_ptr, dump_vlog1, dump_vlog2, dump_rtlil, false, false, false, false, false, false,
+ false, false, false, false, dont_redefine, false, defer, default_nettype_wire);
delete current_ast;
}