From cdf30c5a375bf3dd9bb8882407370f75a2c26aab Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 18 Feb 2020 18:43:01 +0100 Subject: synth-expr: handle anonymous signal declarations. --- src/synth/synth-expr.adb | 8 ++++++-- src/synth/synth-insts.adb | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/synth/synth-expr.adb b/src/synth/synth-expr.adb index 22f49daa8..c1fe74d81 100644 --- a/src/synth/synth-expr.adb +++ b/src/synth/synth-expr.adb @@ -1042,7 +1042,6 @@ package body Synth.Expr is | Iir_Kind_Variable_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Signal_Declaration - | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration @@ -1843,7 +1842,12 @@ package body Synth.Expr is | Iir_Kind_Signal_Declaration => -- For PSL. return Synth_Name (Syn_Inst, Expr); when Iir_Kind_Reference_Name => - return Synth_Name (Syn_Inst, Get_Named_Entity (Expr)); + -- Only used for anonymous signals in internal association. + return Synth_Expression_With_Type + (Syn_Inst, Get_Named_Entity (Expr), Expr_Type); + when Iir_Kind_Anonymous_Signal_Declaration => + return Synth_Expression_With_Type + (Syn_Inst, Get_Expression (Expr), Expr_Type); when Iir_Kind_Indexed_Name | Iir_Kind_Slice_Name => declare diff --git a/src/synth/synth-insts.adb b/src/synth/synth-insts.adb index 3e2fd6b3d..953caf5ab 100644 --- a/src/synth/synth-insts.adb +++ b/src/synth/synth-insts.adb @@ -564,6 +564,7 @@ package body Synth.Insts is Actual : Node; Formal_Typ : Type_Acc; Act_Inst : Synth_Instance_Acc; + Act : Value_Acc; begin case Iir_Kinds_Association_Element_Parameters (Get_Kind (Assoc)) is when Iir_Kind_Association_Element_Open => @@ -587,9 +588,8 @@ package body Synth.Insts is Formal_Typ := Get_Value_Type (Inter_Inst, Get_Type (Inter)); - Connect (Inp, - Get_Net (Synth_Expression_With_Type - (Act_Inst, Actual, Formal_Typ))); + Act := Synth_Expression_With_Type (Act_Inst, Actual, Formal_Typ); + Connect (Inp, Get_Net (Act)); end Synth_Input_Assoc; procedure Synth_Individual_Output_Assoc (Outp : Net; @@ -1041,7 +1041,7 @@ package body Synth.Insts is raise Internal_Error; end if; - -- Elaborate generic + map aspect + -- Elaborate generic + map aspect for the entity instance. Sub_Inst := Make_Instance (Comp_Inst, Ent, New_Sname_User (Get_Identifier (Ent), No_Sname)); Synth_Generics_Association (Sub_Inst, Comp_Inst, -- cgit v1.2.3