Skip to content

Commit 9f06f69

Browse files
authored
Merge pull request #416 from diffblue/verilog-package-import
Verilog: package imports
2 parents 17d3351 + abbf450 commit 9f06f69

File tree

8 files changed

+50
-5
lines changed

8 files changed

+50
-5
lines changed
File renamed without changes.

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
@@ -151,8 +151,10 @@ IREP_ID_ONE(iff)
151151
IREP_ID_ONE(offset)
152152
IREP_ID_ONE(xnor)
153153
IREP_ID_ONE(specify)
154-
IREP_ID_ONE(verilog_module)
155154
IREP_ID_ONE(verilog_empty_item)
155+
IREP_ID_ONE(verilog_import_item)
156+
IREP_ID_ONE(verilog_module)
157+
IREP_ID_ONE(verilog_package_import)
156158
IREP_ID_ONE(module_source)
157159
IREP_ID_ONE(module_items)
158160
IREP_ID_ONE(parameter_port_list)

src/verilog/parser.y

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -606,31 +606,33 @@ module_nonansi_header:
606606
attribute_instance_brace
607607
module_keyword
608608
module_identifier_with_scope
609+
package_import_declaration_brace
609610
parameter_port_list_opt
610611
list_of_ports_opt ';'
611612
{
612613
init($$); stack_expr($$).operands().resize(5);
613614
stack_expr($$).operands()[0].swap(stack_expr($1));
614615
stack_expr($$).operands()[1].swap(stack_expr($2));
615616
stack_expr($$).operands()[2].swap(stack_expr($3));
616-
stack_expr($$).operands()[3].swap(stack_expr($4));
617-
stack_expr($$).operands()[4].swap(stack_expr($5));
617+
stack_expr($$).operands()[3].swap(stack_expr($5));
618+
stack_expr($$).operands()[4].swap(stack_expr($6));
618619
}
619620
;
620621

621622
module_ansi_header:
622623
attribute_instance_brace
623624
module_keyword
624625
module_identifier_with_scope
626+
package_import_declaration_brace
625627
parameter_port_list_opt
626628
list_of_port_declarations ';'
627629
{
628630
init($$); stack_expr($$).operands().resize(5);
629631
stack_expr($$).operands()[0].swap(stack_expr($1));
630632
stack_expr($$).operands()[1].swap(stack_expr($2));
631633
stack_expr($$).operands()[2].swap(stack_expr($3));
632-
stack_expr($$).operands()[3].swap(stack_expr($4));
633-
stack_expr($$).operands()[4].swap(stack_expr($5));
634+
stack_expr($$).operands()[3].swap(stack_expr($5));
635+
stack_expr($$).operands()[4].swap(stack_expr($6));
634636
}
635637
;
636638

@@ -1117,6 +1119,33 @@ data_declaration:
11171119
addswap($$, ID_type, $2);
11181120
swapop($$, $3); }
11191121
| type_declaration
1122+
| package_import_declaration
1123+
;
1124+
1125+
package_import_declaration_brace:
1126+
/* Optional */
1127+
{ init($$); }
1128+
| package_import_declaration_brace package_import_declaration
1129+
{ $$ = $1; mts($$, $2); }
1130+
;
1131+
1132+
package_import_declaration:
1133+
TOK_IMPORT package_import_item_brace ';'
1134+
{ init($$, ID_verilog_package_import); swapop($$, $2); }
1135+
;
1136+
1137+
package_import_item_brace:
1138+
package_import_item
1139+
{ init($$); mts($$, $1); }
1140+
| package_import_item_brace ',' package_import_item
1141+
{ $$ = $1; mts($$, $3); }
1142+
;
1143+
1144+
package_import_item:
1145+
package_identifier "::" identifier
1146+
{ init($$, ID_verilog_import_item); mto($$, $1); mto($$, $3); }
1147+
| package_identifier "::" "*"
1148+
{ init($$, ID_verilog_import_item); mto($$, $1); }
11201149
;
11211150

11221151
genvar_declaration:

src/verilog/verilog_elaborate.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,6 +769,9 @@ void verilog_typecheckt::collect_symbols(
769769
else if(module_item.id() == ID_verilog_smv_assume)
770770
{
771771
}
772+
else if(module_item.id() == ID_verilog_package_import)
773+
{
774+
}
772775
else
773776
DATA_INVARIANT(false, "unexpected module item: " + module_item.id_string());
774777
}

src/verilog/verilog_interfaces.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,9 @@ void verilog_typecheckt::interface_module_item(
293293
else if(module_item.id() == ID_verilog_smv_assume)
294294
{
295295
}
296+
else if(module_item.id() == ID_verilog_package_import)
297+
{
298+
}
296299
else
297300
{
298301
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
@@ -2740,6 +2740,10 @@ void verilog_synthesist::synth_module_item(
27402740
else if(module_item.id() == ID_verilog_empty_item)
27412741
{
27422742
}
2743+
else if(module_item.id() == ID_verilog_package_import)
2744+
{
2745+
// done already
2746+
}
27432747
else
27442748
{
27452749
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
@@ -1584,6 +1584,9 @@ void verilog_typecheckt::convert_module_item(
15841584
else if(module_item.id() == ID_verilog_smv_assume)
15851585
{
15861586
}
1587+
else if(module_item.id() == ID_verilog_package_import)
1588+
{
1589+
}
15871590
else
15881591
{
15891592
throw errort().with_location(module_item.source_location())

0 commit comments

Comments
 (0)