diff options
author | Tristan Gingold <tgingold@free.fr> | 2021-08-30 08:12:26 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2021-08-30 08:12:26 +0200 |
commit | 852f4310b717765360f5d3bf575d40af5769f70d (patch) | |
tree | d3ea3da1d6152b6a14ca71f24cc8f03139dc3101 /src/psl | |
parent | 7b0195b5e706502a1d564f31867b02bf2a8a27bb (diff) | |
download | ghdl-852f4310b717765360f5d3bf575d40af5769f70d.tar.gz ghdl-852f4310b717765360f5d3bf575d40af5769f70d.tar.bz2 ghdl-852f4310b717765360f5d3bf575d40af5769f70d.zip |
vhdl and psl: parse sync_abort and async_abort. For #1654
Diffstat (limited to 'src/psl')
-rw-r--r-- | src/psl/psl-nodes.adb | 4 | ||||
-rw-r--r-- | src/psl/psl-nodes.adb.in | 2 | ||||
-rw-r--r-- | src/psl/psl-nodes.ads | 4 | ||||
-rw-r--r-- | src/psl/psl-nodes_meta.adb | 80 | ||||
-rw-r--r-- | src/psl/psl-prints.adb | 22 | ||||
-rw-r--r-- | src/psl/psl-rewrites.adb | 4 | ||||
-rw-r--r-- | src/psl/psl-subsets.adb | 4 |
7 files changed, 82 insertions, 38 deletions
diff --git a/src/psl/psl-nodes.adb b/src/psl/psl-nodes.adb index 108dfe7b2..5eb9cd5f2 100644 --- a/src/psl/psl-nodes.adb +++ b/src/psl/psl-nodes.adb @@ -353,6 +353,8 @@ package body PSL.Nodes is | N_Before | N_Until | N_Abort + | N_Async_Abort + | N_Sync_Abort | N_Strong | N_Property_Parameter | N_Property_Instance => @@ -453,6 +455,8 @@ package body PSL.Nodes is | N_Next_Event_A | N_Next_Event_E | N_Abort + | N_Async_Abort + | N_Sync_Abort | N_Until | N_Before | N_Or_Prop diff --git a/src/psl/psl-nodes.adb.in b/src/psl/psl-nodes.adb.in index a644ebb71..8bbc8290f 100644 --- a/src/psl/psl-nodes.adb.in +++ b/src/psl/psl-nodes.adb.in @@ -353,6 +353,8 @@ package body PSL.Nodes is | N_Before | N_Until | N_Abort + | N_Async_Abort + | N_Sync_Abort | N_Strong | N_Property_Parameter | N_Property_Instance => diff --git a/src/psl/psl-nodes.ads b/src/psl/psl-nodes.ads index c92af81dc..378212349 100644 --- a/src/psl/psl-nodes.ads +++ b/src/psl/psl-nodes.ads @@ -62,6 +62,8 @@ package PSL.Nodes is N_Next_Event_A, N_Next_Event_E, N_Abort, + N_Async_Abort, + N_Sync_Abort, N_Until, N_Before, N_Or_Prop, @@ -380,6 +382,8 @@ package PSL.Nodes is -- Get/Set_Boolean (Field3) -- N_Abort (Short) + -- N_Async_Abort (Short) + -- N_Sync_Abort (Short) -- -- Get/Set_Property (Field4) -- diff --git a/src/psl/psl-nodes_meta.adb b/src/psl/psl-nodes_meta.adb index 92d18b735..b67498780 100644 --- a/src/psl/psl-nodes_meta.adb +++ b/src/psl/psl-nodes_meta.adb @@ -198,6 +198,10 @@ package body PSL.Nodes_Meta is return "next_event_e"; when N_Abort => return "abort"; + when N_Async_Abort => + return "async_abort"; + when N_Sync_Abort => + return "sync_abort"; when N_Until => return "until"; when N_Before => @@ -466,6 +470,12 @@ package body PSL.Nodes_Meta is -- N_Abort Field_Property, Field_Boolean, + -- N_Async_Abort + Field_Property, + Field_Boolean, + -- N_Sync_Abort + Field_Property, + Field_Boolean, -- N_Until Field_Strong_Flag, Field_Inclusive_Flag, @@ -616,38 +626,40 @@ package body PSL.Nodes_Meta is N_Next_Event_A => 86, N_Next_Event_E => 91, N_Abort => 93, - N_Until => 97, - N_Before => 101, - N_Or_Prop => 103, - N_And_Prop => 105, - N_Paren_Prop => 106, - N_Braced_SERE => 107, - N_Concat_SERE => 109, - N_Fusion_SERE => 111, - N_Within_SERE => 113, - N_Clocked_SERE => 115, - N_Match_And_Seq => 117, - N_And_Seq => 119, - N_Or_Seq => 121, - N_Star_Repeat_Seq => 124, - N_Goto_Repeat_Seq => 127, - N_Plus_Repeat_Seq => 128, - N_Equal_Repeat_Seq => 131, - N_Paren_Bool => 135, - N_Not_Bool => 139, - N_And_Bool => 144, - N_Or_Bool => 149, - N_Imp_Bool => 154, - N_Equiv_Bool => 159, - N_HDL_Expr => 161, - N_HDL_Bool => 166, - N_False => 166, - N_True => 166, - N_EOS => 169, - N_Name => 171, - N_Name_Decl => 173, - N_Inf => 173, - N_Number => 174 + N_Async_Abort => 95, + N_Sync_Abort => 97, + N_Until => 101, + N_Before => 105, + N_Or_Prop => 107, + N_And_Prop => 109, + N_Paren_Prop => 110, + N_Braced_SERE => 111, + N_Concat_SERE => 113, + N_Fusion_SERE => 115, + N_Within_SERE => 117, + N_Clocked_SERE => 119, + N_Match_And_Seq => 121, + N_And_Seq => 123, + N_Or_Seq => 125, + N_Star_Repeat_Seq => 128, + N_Goto_Repeat_Seq => 131, + N_Plus_Repeat_Seq => 132, + N_Equal_Repeat_Seq => 135, + N_Paren_Bool => 139, + N_Not_Bool => 143, + N_And_Bool => 148, + N_Or_Bool => 153, + N_Imp_Bool => 158, + N_Equiv_Bool => 163, + N_HDL_Expr => 165, + N_HDL_Bool => 170, + N_False => 170, + N_True => 170, + N_EOS => 173, + N_Name => 175, + N_Name_Decl => 177, + N_Inf => 177, + N_Number => 178 ); function Get_Fields (K : Nkind) return Fields_Array @@ -1053,6 +1065,8 @@ package body PSL.Nodes_Meta is | N_Next_Event_A | N_Next_Event_E | N_Abort + | N_Async_Abort + | N_Sync_Abort | N_Paren_Prop => return True; when others => @@ -1225,6 +1239,8 @@ package body PSL.Nodes_Meta is | N_Next_Event_A | N_Next_Event_E | N_Abort + | N_Async_Abort + | N_Sync_Abort | N_Clocked_SERE | N_Goto_Repeat_Seq | N_Equal_Repeat_Seq diff --git a/src/psl/psl-prints.adb b/src/psl/psl-prints.adb index e1beb27c2..6c2cffa48 100644 --- a/src/psl/psl-prints.adb +++ b/src/psl/psl-prints.adb @@ -51,7 +51,9 @@ package body PSL.Prints is when N_Until | N_Before => return Prio_FL_Bounding; - when N_Abort => + when N_Abort + | N_Sync_Abort + | N_Async_Abort => return Prio_FL_Abort; when N_Or_Prop => return Prio_Seq_Or; @@ -323,6 +325,16 @@ package body PSL.Prints is Put (")"); end Print_Boolean_Range_Property; + procedure Print_Abort_Property + (Tok : String; Prop : Node; Prio : Priority) is + begin + Print_Property (Get_Property (Prop), Prio); + Put (' '); + Put (Tok); + Put (' '); + Print_Expr (Get_Boolean (Prop)); + end Print_Abort_Property; + procedure Print_Property (Prop : Node; Parent_Prio : Priority := Prio_Lowest) is @@ -372,9 +384,11 @@ package body PSL.Prints is when N_Until => Print_Binary_Property_SI (" until", Prop, Prio); when N_Abort => - Print_Property (Get_Property (Prop), Prio); - Put (" abort "); - Print_Expr (Get_Boolean (Prop)); + Print_Abort_Property ("abort", Prop, Prio); + when N_Sync_Abort => + Print_Abort_Property ("sync_abort", Prop, Prio); + when N_Async_Abort => + Print_Abort_Property ("async_abort", Prop, Prio); when N_Before => Print_Binary_Property_SI (" before", Prop, Prio); when N_Or_Prop => diff --git a/src/psl/psl-rewrites.adb b/src/psl/psl-rewrites.adb index d8d9d5ecb..34404adec 100644 --- a/src/psl/psl-rewrites.adb +++ b/src/psl/psl-rewrites.adb @@ -589,7 +589,9 @@ package body PSL.Rewrites is when N_Or_Prop => return Rewrite_Or (Rewrite_Property (Get_Left (N)), Rewrite_Property (Get_Right (N))); - when N_Abort => + when N_Abort + | N_Async_Abort + | N_Sync_Abort => Set_Boolean (N, Rewrite_Boolean (Get_Boolean (N))); Set_Property (N, Rewrite_Property (Get_Property (N))); return N; diff --git a/src/psl/psl-subsets.adb b/src/psl/psl-subsets.adb index 303d01c1e..9ff16a6ff 100644 --- a/src/psl/psl-subsets.adb +++ b/src/psl/psl-subsets.adb @@ -168,7 +168,9 @@ package body PSL.Subsets is when N_Next_Event | N_Next_Event_A | N_Next_Event_E - | N_Abort => + | N_Abort + | N_Async_Abort + | N_Sync_Abort => Check_Simple (Get_Boolean (N)); Check_Simple (Get_Property (N)); when N_Not_Bool |