@@ -1639,6 +1639,10 @@ void verilog_typecheckt::convert_module_item(
1639
1639
else if (module_item.id () == ID_verilog_covergroup)
1640
1640
{
1641
1641
}
1642
+ else if (module_item.id () == ID_verilog_property_declaration)
1643
+ {
1644
+ convert_property_declaration (to_verilog_property_declaration (module_item));
1645
+ }
1642
1646
else
1643
1647
{
1644
1648
throw errort ().with_location (module_item.source_location ())
@@ -1648,6 +1652,41 @@ void verilog_typecheckt::convert_module_item(
1648
1652
1649
1653
/* ******************************************************************\
1650
1654
1655
+ Function: verilog_typecheckt::convert_property_declaration
1656
+
1657
+ Inputs:
1658
+
1659
+ Outputs:
1660
+
1661
+ Purpose:
1662
+
1663
+ \*******************************************************************/
1664
+
1665
+ void verilog_typecheckt::convert_property_declaration (
1666
+ verilog_property_declarationt &declaration)
1667
+ {
1668
+ auto base_name = declaration.base_name ();
1669
+ auto full_identifier = hierarchical_identifier (base_name);
1670
+
1671
+ convert_expr (declaration.cond ());
1672
+ make_boolean (declaration.cond ());
1673
+
1674
+ auto type = bool_typet{};
1675
+ type.set (ID_C_verilog_type, ID_verilog_property_declaration);
1676
+ symbolt symbol{full_identifier, type, mode};
1677
+
1678
+ symbol.module = module_identifier;
1679
+ symbol.base_name = base_name;
1680
+ symbol.pretty_name = strip_verilog_prefix (symbol.name );
1681
+ symbol.is_macro = true ;
1682
+ symbol.value = declaration.cond ();
1683
+ symbol.location = declaration.source_location ();
1684
+
1685
+ add_symbol (std::move (symbol));
1686
+ }
1687
+
1688
+ /* ******************************************************************\
1689
+
1651
1690
Function: verilog_typecheckt::convert_statements
1652
1691
1653
1692
Inputs:
0 commit comments