Add 'final' to unsupported statements
diff --git a/systemverilog-plugin/UhdmAst.cc b/systemverilog-plugin/UhdmAst.cc index 54a2524..0838ca1 100644 --- a/systemverilog-plugin/UhdmAst.cc +++ b/systemverilog-plugin/UhdmAst.cc
@@ -4259,10 +4259,11 @@ visit_one_to_one({vpiExpr}, obj_h, [&](AST::AstNode *node) { current_node->children.push_back(node); }); } -void UhdmAst::process_unsupported_stmt(const UHDM::BaseClass *object) +void UhdmAst::process_unsupported_stmt(const UHDM::BaseClass *object, bool is_error) { - log_error("%.*s:%d: Currently not supported object of type '%s'\n", (int)object->VpiFile().length(), object->VpiFile().data(), - object->VpiLineNo(), UHDM::VpiTypeName(obj_h).c_str()); + const auto log_func = is_error ? log_error : log_warning; + std::string prefix = object->VpiLineNo() ? (std::string(object->VpiFile()) + ":" + std::to_string(object->VpiLineNo()) + ": ") : ""; + log_func("%sCurrently not supported object of type '%s'\n", prefix.c_str(), UHDM::VpiTypeName(obj_h).c_str()); } AST::AstNode *UhdmAst::process_object(vpiHandle obj_handle) @@ -4384,6 +4385,9 @@ case vpiInitial: process_initial(); break; + case vpiFinal: + process_unsupported_stmt(object, false); + break; case vpiNamedBegin: process_begin(true); break;
diff --git a/systemverilog-plugin/UhdmAst.h b/systemverilog-plugin/UhdmAst.h index 6d6a8f6..bbd0460 100644 --- a/systemverilog-plugin/UhdmAst.h +++ b/systemverilog-plugin/UhdmAst.h
@@ -151,7 +151,7 @@ void process_gate(); void process_primterm(); void simplify_parameter(::Yosys::AST::AstNode *parameter, ::Yosys::AST::AstNode *module_node = nullptr); - void process_unsupported_stmt(const UHDM::BaseClass *object); + void process_unsupported_stmt(const UHDM::BaseClass *object, bool is_error = true); UhdmAst(UhdmAst *p, UhdmAstShared &s, const std::string &i) : parent(p), shared(s), indent(i) {