Support `longint` typespec
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
diff --git a/systemverilog-plugin/UhdmAst.cc b/systemverilog-plugin/UhdmAst.cc
index 9ed5156..62f7d67 100644
--- a/systemverilog-plugin/UhdmAst.cc
+++ b/systemverilog-plugin/UhdmAst.cc
@@ -3427,6 +3427,16 @@
current_node->is_signed = true;
}
+void UhdmAst::process_longint_typespec()
+{
+ std::vector<AST::AstNode *> packed_ranges; // comes before wire name
+ std::vector<AST::AstNode *> unpacked_ranges; // comes after wire name
+ current_node = make_ast_node(AST::AST_WIRE);
+ packed_ranges.push_back(make_range(63, 0));
+ add_multirange_wire(current_node, packed_ranges, unpacked_ranges);
+ current_node->is_signed = true;
+}
+
void UhdmAst::process_byte_typespec()
{
std::vector<AST::AstNode *> packed_ranges; // comes before wire name
@@ -3616,6 +3626,7 @@
case vpiUnionVar:
case vpiEnumVar:
case vpiShortIntVar:
+ case vpiLongIntVar:
case vpiIntVar:
case vpiIntegerVar:
break;
@@ -4098,6 +4109,9 @@
case vpiShortIntTypespec:
process_shortint_typespec();
break;
+ case vpiLongIntTypespec:
+ process_longint_typespec();
+ break;
case vpiTimeTypespec:
process_time_typespec();
break;
diff --git a/systemverilog-plugin/UhdmAst.h b/systemverilog-plugin/UhdmAst.h
index cc84979..af0b808 100644
--- a/systemverilog-plugin/UhdmAst.h
+++ b/systemverilog-plugin/UhdmAst.h
@@ -127,6 +127,7 @@
void process_logic_typespec();
void process_int_typespec();
void process_shortint_typespec();
+ void process_longint_typespec();
void process_time_typespec();
void process_bit_typespec();
void process_string_var();