aboutsummaryrefslogtreecommitdiffstats
path: root/src/psl
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2021-08-30 08:12:26 +0200
committerTristan Gingold <tgingold@free.fr>2021-08-30 08:12:26 +0200
commit852f4310b717765360f5d3bf575d40af5769f70d (patch)
treed3ea3da1d6152b6a14ca71f24cc8f03139dc3101 /src/psl
parent7b0195b5e706502a1d564f31867b02bf2a8a27bb (diff)
downloadghdl-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.adb4
-rw-r--r--src/psl/psl-nodes.adb.in2
-rw-r--r--src/psl/psl-nodes.ads4
-rw-r--r--src/psl/psl-nodes_meta.adb80
-rw-r--r--src/psl/psl-prints.adb22
-rw-r--r--src/psl/psl-rewrites.adb4
-rw-r--r--src/psl/psl-subsets.adb4
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