diff options
author | Clifford Wolf <clifford@clifford.at> | 2016-08-21 13:18:09 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2016-08-21 13:18:09 +0200 |
commit | dbdd8927e78622885bc85c429e783b89b2d3022d (patch) | |
tree | f70d92a29760e0293188dc52e7d6fd4b12e5f2a9 /frontends/ast/ast.cc | |
parent | a93fcec93fdd5da581ece4a593369978db9dd42c (diff) | |
download | yosys-dbdd8927e78622885bc85c429e783b89b2d3022d.tar.gz yosys-dbdd8927e78622885bc85c429e783b89b2d3022d.tar.bz2 yosys-dbdd8927e78622885bc85c429e783b89b2d3022d.zip |
Minor improvements to AstNode::dumpAst() and AstNode::dumpVlog()
Diffstat (limited to 'frontends/ast/ast.cc')
-rw-r--r-- | frontends/ast/ast.cc | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/frontends/ast/ast.cc b/frontends/ast/ast.cc index 29795590c..8e046f20a 100644 --- a/frontends/ast/ast.cc +++ b/frontends/ast/ast.cc @@ -309,6 +309,8 @@ void AstNode::dumpAst(FILE *f, std::string indent) for (size_t i = 0; i < children.size(); i++) children[i]->dumpAst(f, indent + " "); + + fflush(f); } // helper function for AstNode::dumpVlog() @@ -433,16 +435,15 @@ void AstNode::dumpVlog(FILE *f, std::string indent) break; case AST_ALWAYS: - fprintf(f, "%s" "always @(", indent.c_str()); + fprintf(f, "%s" "always @", indent.c_str()); for (auto child : children) { if (child->type != AST_POSEDGE && child->type != AST_NEGEDGE && child->type != AST_EDGE) continue; - if (!first) - fprintf(f, ", "); + fprintf(f, first ? "(" : ", "); child->dumpVlog(f, ""); first = false; } - fprintf(f, ")\n"); + fprintf(f, first ? "*\n" : ")\n"); for (auto child : children) { if (child->type != AST_POSEDGE && child->type != AST_NEGEDGE && child->type != AST_EDGE) child->dumpVlog(f, indent + " "); @@ -533,6 +534,14 @@ void AstNode::dumpVlog(FILE *f, std::string indent) } break; + case AST_ASSIGN: + fprintf(f, "%sassign ", indent.c_str()); + children[0]->dumpVlog(f, ""); + fprintf(f, " = "); + children[1]->dumpVlog(f, ""); + fprintf(f, ";\n"); + break; + case AST_ASSIGN_EQ: case AST_ASSIGN_LE: fprintf(f, "%s", indent.c_str()); @@ -621,6 +630,8 @@ void AstNode::dumpVlog(FILE *f, std::string indent) fprintf(f, "%s" "/** %s **/%s", indent.c_str(), type_name.c_str(), indent.empty() ? "" : "\n"); // dumpAst(f, indent, NULL); } + + fflush(f); } // check if two AST nodes are identical |