diff options
author | Tristan Gingold <tgingold@free.fr> | 2022-09-26 07:53:37 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2022-09-26 07:53:37 +0200 |
commit | 0253646671c6000da87d12bebb2166284273ae04 (patch) | |
tree | 45bfefa0b44858efa7378d8567650d97e3ea8153 /src/synth | |
parent | 476236deae896de421daab68890e2e2473caf13d (diff) | |
download | ghdl-0253646671c6000da87d12bebb2166284273ae04.tar.gz ghdl-0253646671c6000da87d12bebb2166284273ae04.tar.bz2 ghdl-0253646671c6000da87d12bebb2166284273ae04.zip |
synth: handle attributes in configurations
Diffstat (limited to 'src/synth')
-rw-r--r-- | src/synth/elab-vhdl_insts.adb | 12 | ||||
-rw-r--r-- | src/synth/synth-vhdl_stmts.adb | 1 |
2 files changed, 12 insertions, 1 deletions
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 |