aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-nodes_meta.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-07-04 18:20:07 +0200
committerTristan Gingold <tgingold@free.fr>2019-07-04 18:20:07 +0200
commite669bf61068a516e54e6547490164a54728d81aa (patch)
tree51b0d6cede6892102cb2b77aeca5160d2e46fa45 /src/vhdl/vhdl-nodes_meta.adb
parent76482ce0e7ce6e03bc5e17e217ac6d8b6f075846 (diff)
downloadghdl-e669bf61068a516e54e6547490164a54728d81aa.tar.gz
ghdl-e669bf61068a516e54e6547490164a54728d81aa.tar.bz2
ghdl-e669bf61068a516e54e6547490164a54728d81aa.zip
vhdl: parse and analyze restrict directive.
Diffstat (limited to 'src/vhdl/vhdl-nodes_meta.adb')
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb210
1 files changed, 121 insertions, 89 deletions
diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb
index eea011a3f..712d0fa81 100644
--- a/src/vhdl/vhdl-nodes_meta.adb
+++ b/src/vhdl/vhdl-nodes_meta.adb
@@ -1392,6 +1392,8 @@ package body Vhdl.Nodes_Meta is
return "psl_assert_statement";
when Iir_Kind_Psl_Cover_Statement =>
return "psl_cover_statement";
+ when Iir_Kind_Psl_Restrict_Directive =>
+ return "psl_restrict_directive";
when Iir_Kind_Block_Statement =>
return "block_statement";
when Iir_Kind_If_Generate_Statement =>
@@ -3821,6 +3823,18 @@ package body Vhdl.Nodes_Meta is
Field_Severity_Expression,
Field_Report_Expression,
Field_PSL_Clock_Sensitivity,
+ -- Iir_Kind_Psl_Restrict_Directive
+ Field_Psl_Sequence,
+ Field_Label,
+ Field_PSL_Clock,
+ Field_PSL_NFA,
+ Field_PSL_Nbr_States,
+ Field_PSL_EOS_Flag,
+ Field_Postponed_Flag,
+ Field_Visible_Flag,
+ Field_Parent,
+ Field_Chain,
+ Field_PSL_Clock_Sensitivity,
-- Iir_Kind_Block_Statement
Field_Label,
Field_Visible_Flag,
@@ -4628,88 +4642,89 @@ package body Vhdl.Nodes_Meta is
Iir_Kind_Concurrent_Procedure_Call_Statement => 1385,
Iir_Kind_Psl_Assert_Statement => 1398,
Iir_Kind_Psl_Cover_Statement => 1411,
- Iir_Kind_Block_Statement => 1425,
- Iir_Kind_If_Generate_Statement => 1436,
- Iir_Kind_Case_Generate_Statement => 1445,
- Iir_Kind_For_Generate_Statement => 1454,
- Iir_Kind_Component_Instantiation_Statement => 1465,
- Iir_Kind_Psl_Default_Clock => 1469,
- Iir_Kind_Simple_Simultaneous_Statement => 1476,
- Iir_Kind_Generate_Statement_Body => 1487,
- Iir_Kind_If_Generate_Else_Clause => 1493,
- Iir_Kind_Simple_Signal_Assignment_Statement => 1503,
- Iir_Kind_Conditional_Signal_Assignment_Statement => 1513,
- Iir_Kind_Selected_Waveform_Assignment_Statement => 1524,
- Iir_Kind_Null_Statement => 1528,
- Iir_Kind_Assertion_Statement => 1535,
- Iir_Kind_Report_Statement => 1541,
- Iir_Kind_Wait_Statement => 1549,
- Iir_Kind_Variable_Assignment_Statement => 1556,
- Iir_Kind_Conditional_Variable_Assignment_Statement => 1563,
- Iir_Kind_Return_Statement => 1569,
- Iir_Kind_For_Loop_Statement => 1578,
- Iir_Kind_While_Loop_Statement => 1587,
- Iir_Kind_Next_Statement => 1594,
- Iir_Kind_Exit_Statement => 1601,
- Iir_Kind_Case_Statement => 1609,
- Iir_Kind_Procedure_Call_Statement => 1615,
- Iir_Kind_If_Statement => 1625,
- Iir_Kind_Elsif => 1631,
- Iir_Kind_Character_Literal => 1639,
- Iir_Kind_Simple_Name => 1647,
- Iir_Kind_Selected_Name => 1656,
- Iir_Kind_Operator_Symbol => 1662,
- Iir_Kind_Reference_Name => 1666,
- Iir_Kind_External_Constant_Name => 1674,
- Iir_Kind_External_Signal_Name => 1682,
- Iir_Kind_External_Variable_Name => 1691,
- Iir_Kind_Selected_By_All_Name => 1697,
- Iir_Kind_Parenthesis_Name => 1702,
- Iir_Kind_Package_Pathname => 1706,
- Iir_Kind_Absolute_Pathname => 1707,
- Iir_Kind_Relative_Pathname => 1708,
- Iir_Kind_Pathname_Element => 1713,
- Iir_Kind_Base_Attribute => 1715,
- Iir_Kind_Subtype_Attribute => 1720,
- Iir_Kind_Element_Attribute => 1725,
- Iir_Kind_Left_Type_Attribute => 1730,
- Iir_Kind_Right_Type_Attribute => 1735,
- Iir_Kind_High_Type_Attribute => 1740,
- Iir_Kind_Low_Type_Attribute => 1745,
- Iir_Kind_Ascending_Type_Attribute => 1750,
- Iir_Kind_Image_Attribute => 1756,
- Iir_Kind_Value_Attribute => 1762,
- Iir_Kind_Pos_Attribute => 1768,
- Iir_Kind_Val_Attribute => 1774,
- Iir_Kind_Succ_Attribute => 1780,
- Iir_Kind_Pred_Attribute => 1786,
- Iir_Kind_Leftof_Attribute => 1792,
- Iir_Kind_Rightof_Attribute => 1798,
- Iir_Kind_Delayed_Attribute => 1807,
- Iir_Kind_Stable_Attribute => 1816,
- Iir_Kind_Quiet_Attribute => 1825,
- Iir_Kind_Transaction_Attribute => 1834,
- Iir_Kind_Event_Attribute => 1838,
- Iir_Kind_Active_Attribute => 1842,
- Iir_Kind_Last_Event_Attribute => 1846,
- Iir_Kind_Last_Active_Attribute => 1850,
- Iir_Kind_Last_Value_Attribute => 1854,
- Iir_Kind_Driving_Attribute => 1858,
- Iir_Kind_Driving_Value_Attribute => 1862,
- Iir_Kind_Behavior_Attribute => 1862,
- Iir_Kind_Structure_Attribute => 1862,
- Iir_Kind_Simple_Name_Attribute => 1869,
- Iir_Kind_Instance_Name_Attribute => 1874,
- Iir_Kind_Path_Name_Attribute => 1879,
- Iir_Kind_Left_Array_Attribute => 1886,
- Iir_Kind_Right_Array_Attribute => 1893,
- Iir_Kind_High_Array_Attribute => 1900,
- Iir_Kind_Low_Array_Attribute => 1907,
- Iir_Kind_Length_Array_Attribute => 1914,
- Iir_Kind_Ascending_Array_Attribute => 1921,
- Iir_Kind_Range_Array_Attribute => 1928,
- Iir_Kind_Reverse_Range_Array_Attribute => 1935,
- Iir_Kind_Attribute_Name => 1944
+ Iir_Kind_Psl_Restrict_Directive => 1422,
+ Iir_Kind_Block_Statement => 1436,
+ Iir_Kind_If_Generate_Statement => 1447,
+ Iir_Kind_Case_Generate_Statement => 1456,
+ Iir_Kind_For_Generate_Statement => 1465,
+ Iir_Kind_Component_Instantiation_Statement => 1476,
+ Iir_Kind_Psl_Default_Clock => 1480,
+ Iir_Kind_Simple_Simultaneous_Statement => 1487,
+ Iir_Kind_Generate_Statement_Body => 1498,
+ Iir_Kind_If_Generate_Else_Clause => 1504,
+ Iir_Kind_Simple_Signal_Assignment_Statement => 1514,
+ Iir_Kind_Conditional_Signal_Assignment_Statement => 1524,
+ Iir_Kind_Selected_Waveform_Assignment_Statement => 1535,
+ Iir_Kind_Null_Statement => 1539,
+ Iir_Kind_Assertion_Statement => 1546,
+ Iir_Kind_Report_Statement => 1552,
+ Iir_Kind_Wait_Statement => 1560,
+ Iir_Kind_Variable_Assignment_Statement => 1567,
+ Iir_Kind_Conditional_Variable_Assignment_Statement => 1574,
+ Iir_Kind_Return_Statement => 1580,
+ Iir_Kind_For_Loop_Statement => 1589,
+ Iir_Kind_While_Loop_Statement => 1598,
+ Iir_Kind_Next_Statement => 1605,
+ Iir_Kind_Exit_Statement => 1612,
+ Iir_Kind_Case_Statement => 1620,
+ Iir_Kind_Procedure_Call_Statement => 1626,
+ Iir_Kind_If_Statement => 1636,
+ Iir_Kind_Elsif => 1642,
+ Iir_Kind_Character_Literal => 1650,
+ Iir_Kind_Simple_Name => 1658,
+ Iir_Kind_Selected_Name => 1667,
+ Iir_Kind_Operator_Symbol => 1673,
+ Iir_Kind_Reference_Name => 1677,
+ Iir_Kind_External_Constant_Name => 1685,
+ Iir_Kind_External_Signal_Name => 1693,
+ Iir_Kind_External_Variable_Name => 1702,
+ Iir_Kind_Selected_By_All_Name => 1708,
+ Iir_Kind_Parenthesis_Name => 1713,
+ Iir_Kind_Package_Pathname => 1717,
+ Iir_Kind_Absolute_Pathname => 1718,
+ Iir_Kind_Relative_Pathname => 1719,
+ Iir_Kind_Pathname_Element => 1724,
+ Iir_Kind_Base_Attribute => 1726,
+ Iir_Kind_Subtype_Attribute => 1731,
+ Iir_Kind_Element_Attribute => 1736,
+ Iir_Kind_Left_Type_Attribute => 1741,
+ Iir_Kind_Right_Type_Attribute => 1746,
+ Iir_Kind_High_Type_Attribute => 1751,
+ Iir_Kind_Low_Type_Attribute => 1756,
+ Iir_Kind_Ascending_Type_Attribute => 1761,
+ Iir_Kind_Image_Attribute => 1767,
+ Iir_Kind_Value_Attribute => 1773,
+ Iir_Kind_Pos_Attribute => 1779,
+ Iir_Kind_Val_Attribute => 1785,
+ Iir_Kind_Succ_Attribute => 1791,
+ Iir_Kind_Pred_Attribute => 1797,
+ Iir_Kind_Leftof_Attribute => 1803,
+ Iir_Kind_Rightof_Attribute => 1809,
+ Iir_Kind_Delayed_Attribute => 1818,
+ Iir_Kind_Stable_Attribute => 1827,
+ Iir_Kind_Quiet_Attribute => 1836,
+ Iir_Kind_Transaction_Attribute => 1845,
+ Iir_Kind_Event_Attribute => 1849,
+ Iir_Kind_Active_Attribute => 1853,
+ Iir_Kind_Last_Event_Attribute => 1857,
+ Iir_Kind_Last_Active_Attribute => 1861,
+ Iir_Kind_Last_Value_Attribute => 1865,
+ Iir_Kind_Driving_Attribute => 1869,
+ Iir_Kind_Driving_Value_Attribute => 1873,
+ Iir_Kind_Behavior_Attribute => 1873,
+ Iir_Kind_Structure_Attribute => 1873,
+ Iir_Kind_Simple_Name_Attribute => 1880,
+ Iir_Kind_Instance_Name_Attribute => 1885,
+ Iir_Kind_Path_Name_Attribute => 1890,
+ Iir_Kind_Left_Array_Attribute => 1897,
+ Iir_Kind_Right_Array_Attribute => 1904,
+ Iir_Kind_High_Array_Attribute => 1911,
+ Iir_Kind_Low_Array_Attribute => 1918,
+ Iir_Kind_Length_Array_Attribute => 1925,
+ Iir_Kind_Ascending_Array_Attribute => 1932,
+ Iir_Kind_Range_Array_Attribute => 1939,
+ Iir_Kind_Reverse_Range_Array_Attribute => 1946,
+ Iir_Kind_Attribute_Name => 1955
);
function Get_Fields_First (K : Iir_Kind) return Fields_Index is
@@ -7380,6 +7395,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Concurrent_Procedure_Call_Statement
| Iir_Kind_Psl_Assert_Statement
| Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive
| Iir_Kind_Block_Statement
| Iir_Kind_If_Generate_Statement
| Iir_Kind_Case_Generate_Statement
@@ -8158,6 +8174,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Concurrent_Procedure_Call_Statement
| Iir_Kind_Psl_Assert_Statement
| Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive
| Iir_Kind_Block_Statement
| Iir_Kind_If_Generate_Statement
| Iir_Kind_Case_Generate_Statement
@@ -8208,6 +8225,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Concurrent_Procedure_Call_Statement
| Iir_Kind_Psl_Assert_Statement
| Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive
| Iir_Kind_Block_Statement
| Iir_Kind_If_Generate_Statement
| Iir_Kind_Case_Generate_Statement
@@ -8293,6 +8311,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Concurrent_Procedure_Call_Statement
| Iir_Kind_Psl_Assert_Statement
| Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive
| Iir_Kind_Block_Statement
| Iir_Kind_If_Generate_Statement
| Iir_Kind_Case_Generate_Statement
@@ -8759,7 +8778,8 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Concurrent_Assertion_Statement
| Iir_Kind_Concurrent_Procedure_Call_Statement
| Iir_Kind_Psl_Assert_Statement
- | Iir_Kind_Psl_Cover_Statement =>
+ | Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive =>
return True;
when others =>
return False;
@@ -9375,6 +9395,7 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Concurrent_Procedure_Call_Statement
| Iir_Kind_Psl_Assert_Statement
| Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive
| Iir_Kind_Block_Statement
| Iir_Kind_If_Generate_Statement
| Iir_Kind_Case_Generate_Statement
@@ -10731,7 +10752,13 @@ package body Vhdl.Nodes_Meta is
function Has_Psl_Sequence (K : Iir_Kind) return Boolean is
begin
- return K = Iir_Kind_Psl_Cover_Statement;
+ case K is
+ when Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive =>
+ return True;
+ when others =>
+ return False;
+ end case;
end Has_Psl_Sequence;
function Has_Psl_Declaration (K : Iir_Kind) return Boolean is
@@ -10761,7 +10788,8 @@ package body Vhdl.Nodes_Meta is
when Iir_Kind_Psl_Declaration
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Psl_Assert_Statement
- | Iir_Kind_Psl_Cover_Statement =>
+ | Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive =>
return True;
when others =>
return False;
@@ -10774,7 +10802,8 @@ package body Vhdl.Nodes_Meta is
when Iir_Kind_Psl_Declaration
| Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Psl_Assert_Statement
- | Iir_Kind_Psl_Cover_Statement =>
+ | Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive =>
return True;
when others =>
return False;
@@ -10786,7 +10815,8 @@ package body Vhdl.Nodes_Meta is
case K is
when Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Psl_Assert_Statement
- | Iir_Kind_Psl_Cover_Statement =>
+ | Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive =>
return True;
when others =>
return False;
@@ -10798,7 +10828,8 @@ package body Vhdl.Nodes_Meta is
case K is
when Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Psl_Assert_Statement
- | Iir_Kind_Psl_Cover_Statement =>
+ | Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive =>
return True;
when others =>
return False;
@@ -10810,7 +10841,8 @@ package body Vhdl.Nodes_Meta is
case K is
when Iir_Kind_Psl_Endpoint_Declaration
| Iir_Kind_Psl_Assert_Statement
- | Iir_Kind_Psl_Cover_Statement =>
+ | Iir_Kind_Psl_Cover_Statement
+ | Iir_Kind_Psl_Restrict_Directive =>
return True;
when others =>
return False;