aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/simul/simul-vhdl_elab.adb4
-rw-r--r--src/simul/simul-vhdl_simul.adb2
-rw-r--r--src/synth/elab-vhdl_insts.adb12
-rw-r--r--src/synth/synth-vhdl_stmts.adb1
4 files changed, 16 insertions, 3 deletions
diff --git a/src/simul/simul-vhdl_elab.adb b/src/simul/simul-vhdl_elab.adb
index 0fd99b551..ac2bc25c1 100644
--- a/src/simul/simul-vhdl_elab.adb
+++ b/src/simul/simul-vhdl_elab.adb
@@ -912,8 +912,10 @@ package body Simul.Vhdl_Elab is
when Iir_Kind_Package_Declaration =>
Gather_Processes_Decls
(Inst, Get_Declaration_Chain (N));
+ when Iir_Kind_Configuration_Declaration =>
+ null;
when others =>
- Vhdl.Errors.Error_Kind ("gater_processes_1", N);
+ Vhdl.Errors.Error_Kind ("gather_processes_1", N);
end case;
pragma Assert (Areapools.Is_Empty (Expr_Pool));
diff --git a/src/simul/simul-vhdl_simul.adb b/src/simul/simul-vhdl_simul.adb
index f7a51b822..e5ca86a53 100644
--- a/src/simul/simul-vhdl_simul.adb
+++ b/src/simul/simul-vhdl_simul.adb
@@ -2581,8 +2581,8 @@ package body Simul.Vhdl_Simul is
Grt.Errors.Fatal_Error;
end if;
- pragma Assert (Dst_Val.Typ.Wkind = Wkind_Sim);
Convert_Type_Width (Dst_Val.Typ);
+ pragma Assert (Dst_Val.Typ.Wkind = Wkind_Sim);
Dst := Synth.Vhdl_Expr.Get_Value_Memtyp (Dst_Val);
case Conv.Mode is
diff --git a/src/synth/elab-vhdl_insts.adb b/src/synth/elab-vhdl_insts.adb
index 8e23b9ff7..772c45fc1 100644
--- a/src/synth/elab-vhdl_insts.adb
+++ b/src/synth/elab-vhdl_insts.adb
@@ -255,6 +255,15 @@ package body Elab.Vhdl_Insts is
end if;
end Elab_Package_Instantiation;
+ procedure Elab_Configuration_Declaration (Parent_Inst : Synth_Instance_Acc;
+ Conf : Node)
+ is
+ Syn_Inst : Synth_Instance_Acc;
+ begin
+ Syn_Inst := Create_Package_Instance (Parent_Inst, Conf);
+ Elab_Declarations (Syn_Inst, Get_Declaration_Chain (Conf));
+ end Elab_Configuration_Declaration;
+
procedure Elab_Dependencies (Parent_Inst : Synth_Instance_Acc; Unit : Node)
is
Dep_List : constant Node_List := Get_Dependence_List (Unit);
@@ -275,7 +284,7 @@ package body Elab.Vhdl_Insts is
when Iir_Kind_Entity_Declaration =>
null;
when Iir_Kind_Configuration_Declaration =>
- null;
+ Elab_Configuration_Declaration (Parent_Inst, Dep_Unit);
when Iir_Kind_Context_Declaration =>
null;
when Iir_Kind_Package_Declaration =>
@@ -885,6 +894,7 @@ package body Elab.Vhdl_Insts is
Elab_Dependencies (Root_Instance, Get_Design_Unit (Entity));
Elab_Dependencies (Root_Instance, Get_Design_Unit (Arch));
+ Elab_Configuration_Declaration (Root_Instance, Config);
pragma Assert (Is_Expr_Pool_Empty);
diff --git a/src/synth/synth-vhdl_stmts.adb b/src/synth/synth-vhdl_stmts.adb
index 141ea05ff..df8f9994d 100644
--- a/src/synth/synth-vhdl_stmts.adb
+++ b/src/synth/synth-vhdl_stmts.adb
@@ -393,6 +393,7 @@ package body Synth.Vhdl_Stmts is
(Syn_Inst, Target),
Aggr => Target);
when Iir_Kind_Simple_Name
+ | Iir_Kind_Selected_Name
| Iir_Kind_Selected_Element
| Iir_Kind_Interface_Signal_Declaration
| Iir_Kind_Signal_Declaration