aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/synth/synth-vhdl_expr.ads3
-rw-r--r--src/synth/synth-vhdl_insts.adb14
2 files changed, 13 insertions, 4 deletions
diff --git a/src/synth/synth-vhdl_expr.ads b/src/synth/synth-vhdl_expr.ads
index 5c81701c1..5eadb879f 100644
--- a/src/synth/synth-vhdl_expr.ads
+++ b/src/synth/synth-vhdl_expr.ads
@@ -100,6 +100,9 @@ package Synth.Vhdl_Expr is
function Synth_Expression_With_Basetype (Syn_Inst : Synth_Instance_Acc;
Expr : Node) return Valtyp;
+ function Synth_Type_Conversion
+ (Syn_Inst : Synth_Instance_Acc; Conv : Node) return Valtyp;
+
function Synth_PSL_Expression
(Syn_Inst : Synth_Instance_Acc; Expr : PSL.Types.PSL_Node) return Net;
diff --git a/src/synth/synth-vhdl_insts.adb b/src/synth/synth-vhdl_insts.adb
index 002a387af..8d77b06b5 100644
--- a/src/synth/synth-vhdl_insts.adb
+++ b/src/synth/synth-vhdl_insts.adb
@@ -647,10 +647,16 @@ package body Synth.Vhdl_Insts is
Conv := Null_Node;
end if;
if Conv /= Null_Node then
- pragma Assert (Get_Kind (Conv) = Iir_Kind_Function_Call);
- pragma Assert (Act_Inst = Syn_Inst);
- -- This is an abuse, but it works like a user operator.
- Act := Synth_User_Operator (Syn_Inst, Actual, Null_Node, Conv);
+ case Get_Kind (Conv) is
+ when Iir_Kind_Function_Call =>
+ pragma Assert (Act_Inst = Syn_Inst);
+ -- This is an abuse, but it works like a user operator.
+ Act := Synth_User_Operator (Syn_Inst, Actual, Null_Node, Conv);
+ when Iir_Kind_Type_Conversion =>
+ Act := Synth_Type_Conversion (Syn_Inst, Conv);
+ when others =>
+ Vhdl.Errors.Error_Kind ("synth_single_input_assoc", Conv);
+ end case;
else
Act := Synth_Expression_With_Type (Act_Inst, Actual, Inter_Typ);
end if;