diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/simul/simul-vhdl_elab.adb | 4 | ||||
-rw-r--r-- | src/simul/simul-vhdl_simul.adb | 2 | ||||
-rw-r--r-- | src/synth/elab-vhdl_insts.adb | 12 | ||||
-rw-r--r-- | src/synth/synth-vhdl_stmts.adb | 1 |
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 |