systemverilog-plugin: Rename plugin's simplify to simplify_sv Signed-off-by: Magdalena Andrys <mandrys@antmicro.com>
diff --git a/systemverilog-plugin/UhdmAst.cc b/systemverilog-plugin/UhdmAst.cc index e52d75d..e2f173d 100644 --- a/systemverilog-plugin/UhdmAst.cc +++ b/systemverilog-plugin/UhdmAst.cc
@@ -137,7 +137,7 @@ node->children.clear(); } -static void simplify(AST::AstNode *current_node, AST::AstNode *parent_node); +static void simplify_sv(AST::AstNode *current_node, AST::AstNode *parent_node); static void sanitize_symbol_name(std::string &name) { @@ -276,22 +276,22 @@ if (ranges[i]->children.size() == 1) { ranges[i]->children.push_back(ranges[i]->children[0]->clone()); } - simplify(ranges[i], wire_node); - while (ranges[i]->simplify(true, false, false, 1, -1, false, false)) { + simplify_sv(ranges[i], wire_node); + while (simplify(ranges[i], true, false, false, 1, -1, false, false)) { } // this workaround case, where yosys doesn't follow id2ast and simplifies it to resolve constant if (ranges[i]->children[0]->id2ast) { - simplify(ranges[i]->children[0]->id2ast, ranges[i]->children[0]); - while (ranges[i]->children[0]->id2ast->simplify(true, false, false, 1, -1, false, false)) { + simplify_sv(ranges[i]->children[0]->id2ast, ranges[i]->children[0]); + while (simplify(ranges[i]->children[0]->id2ast, true, false, false, 1, -1, false, false)) { } } if (ranges[i]->children[1]->id2ast) { - simplify(ranges[i]->children[1]->id2ast, ranges[i]->children[1]); - while (ranges[i]->children[1]->id2ast->simplify(true, false, false, 1, -1, false, false)) { + simplify_sv(ranges[i]->children[1]->id2ast, ranges[i]->children[1]); + while (simplify(ranges[i]->children[1]->id2ast, true, false, false, 1, -1, false, false)) { } } - simplify(ranges[i], wire_node); - while (ranges[i]->simplify(true, false, false, 1, -1, false, false)) { + simplify_sv(ranges[i], wire_node); + while (simplify(ranges[i], true, false, false, 1, -1, false, false)) { } log_assert(ranges[i]->children[0]->type == AST::AST_CONSTANT); log_assert(ranges[i]->children[1]->type == AST::AST_CONSTANT); @@ -1064,7 +1064,10 @@ current_node->children[0] = AST::AstNode::mkconst_str(preformatted_string); } -static void simplify(AST::AstNode *current_node, AST::AstNode *parent_node) +// A wrapper for Yosys simplify function. +// Simplifies AST constructs specific to this plugin to a form understandable by Yosys' simplify and then calls the latter if necessary. +// Since simplify from Yosys has been forked to this codebase, all new code should be added there instead. +static void simplify_sv(AST::AstNode *current_node, AST::AstNode *parent_node) { auto dot_it = std::find_if(current_node->children.begin(), current_node->children.end(), [](auto c) { return c->type == static_cast<int>(AST::Extended::AST_DOT); }); @@ -1084,7 +1087,7 @@ log_error("Multirange in AST_DOT is currently unsupported\n"); dot->type = AST::AST_IDENTIFIER; - simplify(dot, nullptr); + simplify_sv(dot, nullptr); AST::AstNode *range_const = parent_node->children[0]->children[0]; prefix_node = new AST::AstNode(AST::AST_PREFIX, range_const->clone(), dot->clone()); break; @@ -1107,7 +1110,7 @@ } else { auto wire_node = AST_INTERNAL::current_scope[current_node->str]; // make sure wire_node is already simplified - simplify(wire_node, nullptr); + simplify_sv(wire_node, nullptr); expanded = convert_dot(wire_node, current_node, dot); } } @@ -1120,7 +1123,7 @@ } // First simplify children for (size_t i = 0; i < current_node->children.size(); i++) { - simplify(current_node->children[i], current_node); + simplify_sv(current_node->children[i], current_node); } switch (current_node->type) { case AST::AST_TYPEDEF: @@ -1147,7 +1150,7 @@ // if a wire is simplified multiple times, its ranges may be added multiple times and be redundant as a result if (!wire_node->attributes.count(UhdmAst::is_simplified_wire())) { - simplify(wire_node, nullptr); + simplify_sv(wire_node, nullptr); } const int packed_ranges_size = wire_node->attributes.count(UhdmAst::packed_ranges()) ? wire_node->attributes[UhdmAst::packed_ranges()]->children.size() : 0; @@ -1860,7 +1863,7 @@ if (pair.second->type == AST::AST_PACKAGE) { check_memories(pair.second); setup_current_scope(shared.top_nodes, pair.second); - simplify(pair.second, nullptr); + simplify_sv(pair.second, nullptr); clear_current_scope(); } } @@ -1875,7 +1878,7 @@ else { check_memories(pair.second); setup_current_scope(shared.top_nodes, pair.second); - simplify(pair.second, nullptr); + simplify_sv(pair.second, nullptr); clear_current_scope(); current_node->children.push_back(pair.second); } @@ -1907,28 +1910,28 @@ }); } // first apply custom simplification step if needed - simplify(parameter, module_node); + simplify_sv(parameter, module_node); // workaround for yosys sometimes not simplifying parameters children // parameters can have 2 children: // first child should be parameter value // second child should be parameter range (optional) log_assert(!parameter->children.empty()); - simplify(parameter->children[0], parameter); - while (parameter->children[0]->simplify(true, false, false, 1, -1, false, false)) { + simplify_sv(parameter->children[0], parameter); + while (simplify(parameter->children[0], true, false, false, 1, -1, false, false)) { } // follow id2ast as yosys doesn't do it by default if (parameter->children[0]->id2ast) { - simplify(parameter->children[0]->id2ast, parameter); - while (parameter->children[0]->id2ast->simplify(true, false, false, 1, -1, false, false)) { + simplify_sv(parameter->children[0]->id2ast, parameter); + while (simplify(parameter->children[0]->id2ast, true, false, false, 1, -1, false, false)) { } } if (parameter->children.size() > 1) { - simplify(parameter->children[1], parameter); - while (parameter->children[1]->simplify(true, false, false, 1, -1, false, false)) { + simplify_sv(parameter->children[1], parameter); + while (simplify(parameter->children[1], true, false, false, 1, -1, false, false)) { } if (parameter->children[1]->id2ast) { - simplify(parameter->children[1]->id2ast, parameter); - while (parameter->children[1]->id2ast->simplify(true, false, false, 1, -1, false, false)) { + simplify_sv(parameter->children[1]->id2ast, parameter); + while (simplify(parameter->children[1]->id2ast, true, false, false, 1, -1, false, false)) { } } }