Skip to content

Commit f637736

Browse files
committed
Verilog: package imports
1 parent fbfde77 commit f637736

File tree

8 files changed

+50
-5
lines changed

8 files changed

+50
-5
lines changed

regression/verilog/package/package1.sv renamed to regression/verilog/packages/package1.sv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ package my_pkg;
33
endpackage
44

55
module main;
6+
import my_pkg::*;
67
endmodule

src/hw_cbmc_irep_ids.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,10 @@ IREP_ID_ONE(iff)
139139
IREP_ID_ONE(offset)
140140
IREP_ID_ONE(xnor)
141141
IREP_ID_ONE(specify)
142-
IREP_ID_ONE(verilog_module)
143142
IREP_ID_ONE(verilog_empty_item)
143+
IREP_ID_ONE(verilog_import_item)
144+
IREP_ID_ONE(verilog_module)
145+
IREP_ID_ONE(verilog_package_import)
144146
IREP_ID_ONE(module_source)
145147
IREP_ID_ONE(module_items)
146148
IREP_ID_ONE(parameter_port_list)

src/verilog/parser.y

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -662,31 +662,33 @@ module_nonansi_header:
662662
attribute_instance_brace
663663
module_keyword
664664
module_identifier_with_scope
665+
package_import_declaration_brace
665666
parameter_port_list_opt
666667
list_of_ports_opt ';'
667668
{
668669
init($$); stack_expr($$).operands().resize(5);
669670
stack_expr($$).operands()[0].swap(stack_expr($1));
670671
stack_expr($$).operands()[1].swap(stack_expr($2));
671672
stack_expr($$).operands()[2].swap(stack_expr($3));
672-
stack_expr($$).operands()[3].swap(stack_expr($4));
673-
stack_expr($$).operands()[4].swap(stack_expr($5));
673+
stack_expr($$).operands()[3].swap(stack_expr($5));
674+
stack_expr($$).operands()[4].swap(stack_expr($6));
674675
}
675676
;
676677

677678
module_ansi_header:
678679
attribute_instance_brace
679680
module_keyword
680681
module_identifier_with_scope
682+
package_import_declaration_brace
681683
parameter_port_list_opt
682684
list_of_port_declarations ';'
683685
{
684686
init($$); stack_expr($$).operands().resize(5);
685687
stack_expr($$).operands()[0].swap(stack_expr($1));
686688
stack_expr($$).operands()[1].swap(stack_expr($2));
687689
stack_expr($$).operands()[2].swap(stack_expr($3));
688-
stack_expr($$).operands()[3].swap(stack_expr($4));
689-
stack_expr($$).operands()[4].swap(stack_expr($5));
690+
stack_expr($$).operands()[3].swap(stack_expr($5));
691+
stack_expr($$).operands()[4].swap(stack_expr($6));
690692
}
691693
;
692694

@@ -1165,6 +1167,33 @@ data_declaration:
11651167
addswap($$, ID_type, $2);
11661168
swapop($$, $3); }
11671169
| type_declaration
1170+
| package_import_declaration
1171+
;
1172+
1173+
package_import_declaration_brace:
1174+
/* Optional */
1175+
{ init($$); }
1176+
| package_import_declaration_brace package_import_declaration
1177+
{ $$ = $1; mts($$, $2); }
1178+
;
1179+
1180+
package_import_declaration:
1181+
TOK_IMPORT package_import_item_brace ';'
1182+
{ init($$, ID_verilog_package_import); swapop($$, $2); }
1183+
;
1184+
1185+
package_import_item_brace:
1186+
package_import_item
1187+
{ init($$); mts($$, $1); }
1188+
| package_import_item_brace ',' package_import_item
1189+
{ $$ = $1; mts($$, $3); }
1190+
;
1191+
1192+
package_import_item:
1193+
package_identifier "::" identifier
1194+
{ init($$, ID_verilog_import_item); mto($$, $1); mto($$, $3); }
1195+
| package_identifier "::" "*"
1196+
{ init($$, ID_verilog_import_item); mto($$, $1); }
11681197
;
11691198

11701199
genvar_declaration:

src/verilog/verilog_elaborate.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -778,6 +778,9 @@ void verilog_typecheckt::collect_symbols(
778778
else if(module_item.id() == ID_verilog_empty_item)
779779
{
780780
}
781+
else if(module_item.id() == ID_verilog_package_import)
782+
{
783+
}
781784
else
782785
DATA_INVARIANT(false, "unexpected module item: " + module_item.id_string());
783786
}

src/verilog/verilog_interfaces.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,9 @@ void verilog_typecheckt::interface_module_item(
284284
else if(module_item.id() == ID_verilog_empty_item)
285285
{
286286
}
287+
else if(module_item.id() == ID_verilog_package_import)
288+
{
289+
}
287290
else
288291
{
289292
DATA_INVARIANT(false, "unexpected module item: " + module_item.id_string());

src/verilog/verilog_synthesis.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2684,6 +2684,10 @@ void verilog_synthesist::synth_module_item(
26842684
else if(module_item.id() == ID_verilog_empty_item)
26852685
{
26862686
}
2687+
else if(module_item.id() == ID_verilog_package_import)
2688+
{
2689+
// done already
2690+
}
26872691
else
26882692
{
26892693
throw errort().with_location(module_item.source_location())

src/verilog/verilog_typecheck.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1642,6 +1642,9 @@ void verilog_typecheckt::convert_module_item(
16421642
else if(module_item.id() == ID_verilog_empty_item)
16431643
{
16441644
}
1645+
else if(module_item.id() == ID_verilog_package_import)
1646+
{
1647+
}
16451648
else
16461649
{
16471650
throw errort().with_location(module_item.source_location())

0 commit comments

Comments
 (0)