Add byte typespec handling Signed-off-by: Rafal Kapuscik <rkapuscik@antmicro.com>
diff --git a/systemverilog-plugin/UhdmAst.cc b/systemverilog-plugin/UhdmAst.cc index ae9ab9c..70dea66 100644 --- a/systemverilog-plugin/UhdmAst.cc +++ b/systemverilog-plugin/UhdmAst.cc
@@ -1717,6 +1717,18 @@ shared.report.mark_handled(typespec_h); break; } + case vpiByteTypespec: { + current_node->is_signed = true; + packed_ranges.push_back(make_range(7, 0)); + shared.report.mark_handled(typespec_h); + break; + } + case vpiShortIntTypespec: { + current_node->is_signed = true; + packed_ranges.push_back(make_range(15, 0)); + shared.report.mark_handled(typespec_h); + break; + } case vpiIntTypespec: case vpiIntegerTypespec: { current_node->is_signed = true; @@ -3393,6 +3405,13 @@ std::vector<AST::AstNode *> unpacked_ranges; // comes after wire name current_node = make_ast_node(AST::AST_WIRE); packed_ranges.push_back(make_range(16, 0)); + +void UhdmAst::process_byte_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(7, 0)); add_multirange_wire(current_node, packed_ranges, unpacked_ranges); current_node->is_signed = true; } @@ -3669,6 +3688,11 @@ shared.report.mark_handled(typespec_h); break; } + case vpiByteTypespec: { + packed_ranges.push_back(make_range(7, 0)); + shared.report.mark_handled(typespec_h); + break; + } case vpiEnumTypespec: case vpiRealTypespec: case vpiStringTypespec: { @@ -3695,6 +3719,7 @@ }); break; } + case vpiPackedArrayTypespec: case vpiArrayTypespec: { shared.report.mark_handled(typespec_h); visit_one_to_one({vpiElemTypespec}, typespec_h, [&](AST::AstNode *node) { @@ -4049,6 +4074,9 @@ case vpiBitTypespec: process_bit_typespec(); break; + case vpiByteTypespec: + process_byte_typespec(); + break; case vpiStringVar: process_string_var(); break;
diff --git a/systemverilog-plugin/UhdmAst.h b/systemverilog-plugin/UhdmAst.h index 2add851..0314369 100644 --- a/systemverilog-plugin/UhdmAst.h +++ b/systemverilog-plugin/UhdmAst.h
@@ -133,6 +133,7 @@ void process_string_typespec(); void process_repeat(); void process_byte_var(); + void process_byte_typespec(); void process_long_int_var(); void process_immediate_cover(); void process_immediate_assume();