aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/simulate/elaboration.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/simulate/elaboration.adb')
-rw-r--r--src/vhdl/simulate/elaboration.adb30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/vhdl/simulate/elaboration.adb b/src/vhdl/simulate/elaboration.adb
index bc3fe1896..e96f92b3f 100644
--- a/src/vhdl/simulate/elaboration.adb
+++ b/src/vhdl/simulate/elaboration.adb
@@ -2530,14 +2530,28 @@ package body Elaboration is
when Iir_Kind_Use_Clause =>
null;
- when Iir_Kind_Delayed_Attribute =>
- Elaborate_Delayed_Signal (Instance, Decl);
- when Iir_Kind_Stable_Attribute =>
- Elaborate_Implicit_Signal (Instance, Decl, Mode_Stable);
- when Iir_Kind_Quiet_Attribute =>
- Elaborate_Implicit_Signal (Instance, Decl, Mode_Quiet);
- when Iir_Kind_Transaction_Attribute =>
- Elaborate_Implicit_Signal (Instance, Decl, Mode_Transaction);
+ when Iir_Kind_Signal_Attribute_Declaration =>
+ declare
+ Attr : Iir;
+ begin
+ Attr := Get_Signal_Attribute_Chain (Decl);
+ while Is_Valid (Attr) loop
+ case Iir_Kinds_Signal_Attribute (Get_Kind (Attr)) is
+ when Iir_Kind_Delayed_Attribute =>
+ Elaborate_Delayed_Signal (Instance, Attr);
+ when Iir_Kind_Stable_Attribute =>
+ Elaborate_Implicit_Signal
+ (Instance, Attr, Mode_Stable);
+ when Iir_Kind_Quiet_Attribute =>
+ Elaborate_Implicit_Signal
+ (Instance, Attr, Mode_Quiet);
+ when Iir_Kind_Transaction_Attribute =>
+ Elaborate_Implicit_Signal
+ (Instance, Attr, Mode_Transaction);
+ end case;
+ Attr := Get_Attr_Chain (Attr);
+ end loop;
+ end;
when Iir_Kind_Non_Object_Alias_Declaration =>
null;