aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-nodes_meta.adb
diff options
context:
space:
mode:
authorT. Meissner <programming@goodcleanfun.de>2021-02-09 07:31:00 +0100
committerGitHub <noreply@github.com>2021-02-09 07:31:00 +0100
commit7d5bfac5526528e32f5f44b9bea0bbdfee21a589 (patch)
treea3d749912cca5d83f8cb1da304b90a62713d2d59 /src/vhdl/vhdl-nodes_meta.adb
parenta75c135b5bb3c817ff0d9605c5cfabbfa721c13b (diff)
downloadghdl-7d5bfac5526528e32f5f44b9bea0bbdfee21a589.tar.gz
ghdl-7d5bfac5526528e32f5f44b9bea0bbdfee21a589.tar.bz2
ghdl-7d5bfac5526528e32f5f44b9bea0bbdfee21a589.zip
Add support for PSL onehot/onehot0 functions (#1633)
* vhdl: parse PSL onehot/onehot0 builtin calls. For #662 * update pyGHDL bindings * Synthesis of PSL built-in onehot/onehot0 function. * testsuite/synth: add tests of PSL built-in functions onehot()/onehot0() for #662 * doc: add info about PSL built-in functions onehot()/onehot0() for #662 * synth: refactor synthesis of onehot/onehot0 functions Co-authored-by: eine <eine@users.noreply.github.com>
Diffstat (limited to 'src/vhdl/vhdl-nodes_meta.adb')
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb252
1 files changed, 136 insertions, 116 deletions
diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb
index 703af8a58..5b4ad1569 100644
--- a/src/vhdl/vhdl-nodes_meta.adb
+++ b/src/vhdl/vhdl-nodes_meta.adb
@@ -1541,6 +1541,10 @@ package body Vhdl.Nodes_Meta is
return "psl_rose";
when Iir_Kind_Psl_Fell =>
return "psl_fell";
+ when Iir_Kind_Psl_Onehot =>
+ return "psl_onehot";
+ when Iir_Kind_Psl_Onehot0 =>
+ return "psl_onehot0";
when Iir_Kind_Psl_Expression =>
return "psl_expression";
when Iir_Kind_Sensitized_Process_Statement =>
@@ -4240,6 +4244,14 @@ package body Vhdl.Nodes_Meta is
Field_Expression,
Field_Clock_Expression,
Field_Default_Clock,
+ -- Iir_Kind_Psl_Onehot
+ Field_Expr_Staticness,
+ Field_Type,
+ Field_Expression,
+ -- Iir_Kind_Psl_Onehot0
+ Field_Expr_Staticness,
+ Field_Type,
+ Field_Expression,
-- Iir_Kind_Psl_Expression
Field_Psl_Expression,
Field_Type,
@@ -5415,122 +5427,124 @@ package body Vhdl.Nodes_Meta is
Iir_Kind_Psl_Stable => 1506,
Iir_Kind_Psl_Rose => 1511,
Iir_Kind_Psl_Fell => 1516,
- Iir_Kind_Psl_Expression => 1518,
- Iir_Kind_Sensitized_Process_Statement => 1539,
- Iir_Kind_Process_Statement => 1559,
- Iir_Kind_Concurrent_Simple_Signal_Assignment => 1572,
- Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1585,
- Iir_Kind_Concurrent_Selected_Signal_Assignment => 1599,
- Iir_Kind_Concurrent_Assertion_Statement => 1607,
- Iir_Kind_Concurrent_Procedure_Call_Statement => 1614,
- Iir_Kind_Concurrent_Break_Statement => 1622,
- Iir_Kind_Psl_Assert_Directive => 1635,
- Iir_Kind_Psl_Assume_Directive => 1646,
- Iir_Kind_Psl_Cover_Directive => 1658,
- Iir_Kind_Psl_Restrict_Directive => 1669,
- Iir_Kind_Block_Statement => 1683,
- Iir_Kind_If_Generate_Statement => 1694,
- Iir_Kind_Case_Generate_Statement => 1703,
- Iir_Kind_For_Generate_Statement => 1712,
- Iir_Kind_Component_Instantiation_Statement => 1723,
- Iir_Kind_Psl_Default_Clock => 1727,
- Iir_Kind_Generate_Statement_Body => 1738,
- Iir_Kind_If_Generate_Else_Clause => 1744,
- Iir_Kind_Simple_Simultaneous_Statement => 1751,
- Iir_Kind_Simultaneous_Null_Statement => 1755,
- Iir_Kind_Simultaneous_Procedural_Statement => 1766,
- Iir_Kind_Simultaneous_Case_Statement => 1775,
- Iir_Kind_Simultaneous_If_Statement => 1784,
- Iir_Kind_Simultaneous_Elsif => 1790,
- Iir_Kind_Simple_Signal_Assignment_Statement => 1801,
- Iir_Kind_Conditional_Signal_Assignment_Statement => 1812,
- Iir_Kind_Selected_Waveform_Assignment_Statement => 1824,
- Iir_Kind_Signal_Force_Assignment_Statement => 1834,
- Iir_Kind_Signal_Release_Assignment_Statement => 1843,
- Iir_Kind_Null_Statement => 1847,
- Iir_Kind_Assertion_Statement => 1854,
- Iir_Kind_Report_Statement => 1860,
- Iir_Kind_Wait_Statement => 1868,
- Iir_Kind_Variable_Assignment_Statement => 1875,
- Iir_Kind_Conditional_Variable_Assignment_Statement => 1882,
- Iir_Kind_Return_Statement => 1888,
- Iir_Kind_For_Loop_Statement => 1899,
- Iir_Kind_While_Loop_Statement => 1910,
- Iir_Kind_Next_Statement => 1917,
- Iir_Kind_Exit_Statement => 1924,
- Iir_Kind_Case_Statement => 1932,
- Iir_Kind_Procedure_Call_Statement => 1938,
- Iir_Kind_Break_Statement => 1945,
- Iir_Kind_If_Statement => 1955,
- Iir_Kind_Elsif => 1961,
- Iir_Kind_Character_Literal => 1969,
- Iir_Kind_Simple_Name => 1977,
- Iir_Kind_Selected_Name => 1986,
- Iir_Kind_Operator_Symbol => 1992,
- Iir_Kind_Reference_Name => 1997,
- Iir_Kind_External_Constant_Name => 2006,
- Iir_Kind_External_Signal_Name => 2015,
- Iir_Kind_External_Variable_Name => 2025,
- Iir_Kind_Selected_By_All_Name => 2031,
- Iir_Kind_Parenthesis_Name => 2036,
- Iir_Kind_Package_Pathname => 2040,
- Iir_Kind_Absolute_Pathname => 2041,
- Iir_Kind_Relative_Pathname => 2042,
- Iir_Kind_Pathname_Element => 2047,
- Iir_Kind_Base_Attribute => 2049,
- Iir_Kind_Subtype_Attribute => 2054,
- Iir_Kind_Element_Attribute => 2059,
- Iir_Kind_Across_Attribute => 2064,
- Iir_Kind_Through_Attribute => 2069,
- Iir_Kind_Nature_Reference_Attribute => 2073,
- Iir_Kind_Left_Type_Attribute => 2078,
- Iir_Kind_Right_Type_Attribute => 2083,
- Iir_Kind_High_Type_Attribute => 2088,
- Iir_Kind_Low_Type_Attribute => 2093,
- Iir_Kind_Ascending_Type_Attribute => 2098,
- Iir_Kind_Image_Attribute => 2104,
- Iir_Kind_Value_Attribute => 2110,
- Iir_Kind_Pos_Attribute => 2116,
- Iir_Kind_Val_Attribute => 2122,
- Iir_Kind_Succ_Attribute => 2128,
- Iir_Kind_Pred_Attribute => 2134,
- Iir_Kind_Leftof_Attribute => 2140,
- Iir_Kind_Rightof_Attribute => 2146,
- Iir_Kind_Signal_Slew_Attribute => 2154,
- Iir_Kind_Quantity_Slew_Attribute => 2162,
- Iir_Kind_Ramp_Attribute => 2170,
- Iir_Kind_Zoh_Attribute => 2178,
- Iir_Kind_Ltf_Attribute => 2186,
- Iir_Kind_Ztf_Attribute => 2196,
- Iir_Kind_Dot_Attribute => 2203,
- Iir_Kind_Integ_Attribute => 2210,
- Iir_Kind_Above_Attribute => 2218,
- Iir_Kind_Quantity_Delayed_Attribute => 2226,
- Iir_Kind_Delayed_Attribute => 2235,
- Iir_Kind_Stable_Attribute => 2244,
- Iir_Kind_Quiet_Attribute => 2253,
- Iir_Kind_Transaction_Attribute => 2262,
- Iir_Kind_Event_Attribute => 2266,
- Iir_Kind_Active_Attribute => 2270,
- Iir_Kind_Last_Event_Attribute => 2274,
- Iir_Kind_Last_Active_Attribute => 2278,
- Iir_Kind_Last_Value_Attribute => 2282,
- Iir_Kind_Driving_Attribute => 2286,
- Iir_Kind_Driving_Value_Attribute => 2290,
- Iir_Kind_Behavior_Attribute => 2290,
- Iir_Kind_Structure_Attribute => 2290,
- Iir_Kind_Simple_Name_Attribute => 2297,
- Iir_Kind_Instance_Name_Attribute => 2302,
- Iir_Kind_Path_Name_Attribute => 2307,
- Iir_Kind_Left_Array_Attribute => 2314,
- Iir_Kind_Right_Array_Attribute => 2321,
- Iir_Kind_High_Array_Attribute => 2328,
- Iir_Kind_Low_Array_Attribute => 2335,
- Iir_Kind_Length_Array_Attribute => 2342,
- Iir_Kind_Ascending_Array_Attribute => 2349,
- Iir_Kind_Range_Array_Attribute => 2356,
- Iir_Kind_Reverse_Range_Array_Attribute => 2363,
- Iir_Kind_Attribute_Name => 2372
+ Iir_Kind_Psl_Onehot => 1519,
+ Iir_Kind_Psl_Onehot0 => 1522,
+ Iir_Kind_Psl_Expression => 1524,
+ Iir_Kind_Sensitized_Process_Statement => 1545,
+ Iir_Kind_Process_Statement => 1565,
+ Iir_Kind_Concurrent_Simple_Signal_Assignment => 1578,
+ Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1591,
+ Iir_Kind_Concurrent_Selected_Signal_Assignment => 1605,
+ Iir_Kind_Concurrent_Assertion_Statement => 1613,
+ Iir_Kind_Concurrent_Procedure_Call_Statement => 1620,
+ Iir_Kind_Concurrent_Break_Statement => 1628,
+ Iir_Kind_Psl_Assert_Directive => 1641,
+ Iir_Kind_Psl_Assume_Directive => 1652,
+ Iir_Kind_Psl_Cover_Directive => 1664,
+ Iir_Kind_Psl_Restrict_Directive => 1675,
+ Iir_Kind_Block_Statement => 1689,
+ Iir_Kind_If_Generate_Statement => 1700,
+ Iir_Kind_Case_Generate_Statement => 1709,
+ Iir_Kind_For_Generate_Statement => 1718,
+ Iir_Kind_Component_Instantiation_Statement => 1729,
+ Iir_Kind_Psl_Default_Clock => 1733,
+ Iir_Kind_Generate_Statement_Body => 1744,
+ Iir_Kind_If_Generate_Else_Clause => 1750,
+ Iir_Kind_Simple_Simultaneous_Statement => 1757,
+ Iir_Kind_Simultaneous_Null_Statement => 1761,
+ Iir_Kind_Simultaneous_Procedural_Statement => 1772,
+ Iir_Kind_Simultaneous_Case_Statement => 1781,
+ Iir_Kind_Simultaneous_If_Statement => 1790,
+ Iir_Kind_Simultaneous_Elsif => 1796,
+ Iir_Kind_Simple_Signal_Assignment_Statement => 1807,
+ Iir_Kind_Conditional_Signal_Assignment_Statement => 1818,
+ Iir_Kind_Selected_Waveform_Assignment_Statement => 1830,
+ Iir_Kind_Signal_Force_Assignment_Statement => 1840,
+ Iir_Kind_Signal_Release_Assignment_Statement => 1849,
+ Iir_Kind_Null_Statement => 1853,
+ Iir_Kind_Assertion_Statement => 1860,
+ Iir_Kind_Report_Statement => 1866,
+ Iir_Kind_Wait_Statement => 1874,
+ Iir_Kind_Variable_Assignment_Statement => 1881,
+ Iir_Kind_Conditional_Variable_Assignment_Statement => 1888,
+ Iir_Kind_Return_Statement => 1894,
+ Iir_Kind_For_Loop_Statement => 1905,
+ Iir_Kind_While_Loop_Statement => 1916,
+ Iir_Kind_Next_Statement => 1923,
+ Iir_Kind_Exit_Statement => 1930,
+ Iir_Kind_Case_Statement => 1938,
+ Iir_Kind_Procedure_Call_Statement => 1944,
+ Iir_Kind_Break_Statement => 1951,
+ Iir_Kind_If_Statement => 1961,
+ Iir_Kind_Elsif => 1967,
+ Iir_Kind_Character_Literal => 1975,
+ Iir_Kind_Simple_Name => 1983,
+ Iir_Kind_Selected_Name => 1992,
+ Iir_Kind_Operator_Symbol => 1998,
+ Iir_Kind_Reference_Name => 2003,
+ Iir_Kind_External_Constant_Name => 2012,
+ Iir_Kind_External_Signal_Name => 2021,
+ Iir_Kind_External_Variable_Name => 2031,
+ Iir_Kind_Selected_By_All_Name => 2037,
+ Iir_Kind_Parenthesis_Name => 2042,
+ Iir_Kind_Package_Pathname => 2046,
+ Iir_Kind_Absolute_Pathname => 2047,
+ Iir_Kind_Relative_Pathname => 2048,
+ Iir_Kind_Pathname_Element => 2053,
+ Iir_Kind_Base_Attribute => 2055,
+ Iir_Kind_Subtype_Attribute => 2060,
+ Iir_Kind_Element_Attribute => 2065,
+ Iir_Kind_Across_Attribute => 2070,
+ Iir_Kind_Through_Attribute => 2075,
+ Iir_Kind_Nature_Reference_Attribute => 2079,
+ Iir_Kind_Left_Type_Attribute => 2084,
+ Iir_Kind_Right_Type_Attribute => 2089,
+ Iir_Kind_High_Type_Attribute => 2094,
+ Iir_Kind_Low_Type_Attribute => 2099,
+ Iir_Kind_Ascending_Type_Attribute => 2104,
+ Iir_Kind_Image_Attribute => 2110,
+ Iir_Kind_Value_Attribute => 2116,
+ Iir_Kind_Pos_Attribute => 2122,
+ Iir_Kind_Val_Attribute => 2128,
+ Iir_Kind_Succ_Attribute => 2134,
+ Iir_Kind_Pred_Attribute => 2140,
+ Iir_Kind_Leftof_Attribute => 2146,
+ Iir_Kind_Rightof_Attribute => 2152,
+ Iir_Kind_Signal_Slew_Attribute => 2160,
+ Iir_Kind_Quantity_Slew_Attribute => 2168,
+ Iir_Kind_Ramp_Attribute => 2176,
+ Iir_Kind_Zoh_Attribute => 2184,
+ Iir_Kind_Ltf_Attribute => 2192,
+ Iir_Kind_Ztf_Attribute => 2202,
+ Iir_Kind_Dot_Attribute => 2209,
+ Iir_Kind_Integ_Attribute => 2216,
+ Iir_Kind_Above_Attribute => 2224,
+ Iir_Kind_Quantity_Delayed_Attribute => 2232,
+ Iir_Kind_Delayed_Attribute => 2241,
+ Iir_Kind_Stable_Attribute => 2250,
+ Iir_Kind_Quiet_Attribute => 2259,
+ Iir_Kind_Transaction_Attribute => 2268,
+ Iir_Kind_Event_Attribute => 2272,
+ Iir_Kind_Active_Attribute => 2276,
+ Iir_Kind_Last_Event_Attribute => 2280,
+ Iir_Kind_Last_Active_Attribute => 2284,
+ Iir_Kind_Last_Value_Attribute => 2288,
+ Iir_Kind_Driving_Attribute => 2292,
+ Iir_Kind_Driving_Value_Attribute => 2296,
+ Iir_Kind_Behavior_Attribute => 2296,
+ Iir_Kind_Structure_Attribute => 2296,
+ Iir_Kind_Simple_Name_Attribute => 2303,
+ Iir_Kind_Instance_Name_Attribute => 2308,
+ Iir_Kind_Path_Name_Attribute => 2313,
+ Iir_Kind_Left_Array_Attribute => 2320,
+ Iir_Kind_Right_Array_Attribute => 2327,
+ Iir_Kind_High_Array_Attribute => 2334,
+ Iir_Kind_Low_Array_Attribute => 2341,
+ Iir_Kind_Length_Array_Attribute => 2348,
+ Iir_Kind_Ascending_Array_Attribute => 2355,
+ Iir_Kind_Range_Array_Attribute => 2362,
+ Iir_Kind_Reverse_Range_Array_Attribute => 2369,
+ Iir_Kind_Attribute_Name => 2378
);
function Get_Fields_First (K : Iir_Kind) return Fields_Index is
@@ -8687,6 +8701,8 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Psl_Stable
| Iir_Kind_Psl_Rose
| Iir_Kind_Psl_Fell
+ | Iir_Kind_Psl_Onehot
+ | Iir_Kind_Psl_Onehot0
| Iir_Kind_Psl_Expression
| Iir_Kind_Return_Statement
| Iir_Kind_Character_Literal
@@ -10628,6 +10644,8 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Psl_Stable
| Iir_Kind_Psl_Rose
| Iir_Kind_Psl_Fell
+ | Iir_Kind_Psl_Onehot
+ | Iir_Kind_Psl_Onehot0
| Iir_Kind_Concurrent_Selected_Signal_Assignment
| Iir_Kind_Case_Generate_Statement
| Iir_Kind_Simultaneous_Case_Statement
@@ -11175,6 +11193,8 @@ package body Vhdl.Nodes_Meta is
| Iir_Kind_Psl_Stable
| Iir_Kind_Psl_Rose
| Iir_Kind_Psl_Fell
+ | Iir_Kind_Psl_Onehot
+ | Iir_Kind_Psl_Onehot0
| Iir_Kind_Character_Literal
| Iir_Kind_Simple_Name
| Iir_Kind_Selected_Name