aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/synth/synth-expr.adb8
-rw-r--r--src/synth/synth-insts.adb8
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,