aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-03-13 05:31:58 +0100
committerTristan Gingold <tgingold@free.fr>2020-03-13 06:30:32 +0100
commit3d8e30a1a95738a8078db2fcc5051ca7b3ef0b22 (patch)
tree6c884edce633f1ebb212c214bebe6787ef743da5
parent97dadc0d773940868305f7241cbd3bf916505a54 (diff)
downloadghdl-3d8e30a1a95738a8078db2fcc5051ca7b3ef0b22.tar.gz
ghdl-3d8e30a1a95738a8078db2fcc5051ca7b3ef0b22.tar.bz2
ghdl-3d8e30a1a95738a8078db2fcc5051ca7b3ef0b22.zip
synth-insts: handle output individual assoc for components.
-rw-r--r--src/synth/synth-insts.adb21
1 files changed, 3 insertions, 18 deletions
diff --git a/src/synth/synth-insts.adb b/src/synth/synth-insts.adb
index cce77bca0..2824e4ce3 100644
--- a/src/synth/synth-insts.adb
+++ b/src/synth/synth-insts.adb
@@ -1106,7 +1106,6 @@ package body Synth.Insts is
Assoc : Node;
Assoc_Inter : Node;
Inter : Node;
- Actual : Node;
Port : Net;
O : Value_Acc;
Nbr_Outputs : Port_Nbr;
@@ -1119,23 +1118,9 @@ package body Synth.Insts is
Inter := Get_Association_Interface (Assoc, Assoc_Inter);
if Mode_To_Port_Kind (Get_Mode (Inter)) = Port_Out then
- case Get_Kind (Assoc) is
- when Iir_Kind_Association_Element_Open =>
- Actual := Get_Default_Value (Inter);
- pragma Assert (Actual = Null_Node);
- when Iir_Kind_Association_Element_By_Expression =>
- Actual := Get_Actual (Assoc);
- when others =>
- raise Internal_Error;
- end case;
-
- if Actual /= Null_Node then
- O := Get_Value (Comp_Inst, Inter);
- Port := Get_Net (O);
- Port := Build_Port (Get_Build (Syn_Inst), Port);
- O := Create_Value_Net (Port, O.Typ);
- Synth_Assignment (Syn_Inst, Actual, O, Assoc);
- end if;
+ O := Get_Value (Comp_Inst, Inter);
+ Port := Get_Net (O);
+ Synth_Output_Assoc (Port, Syn_Inst, Assoc, Comp_Inst, Inter);
Nbr_Outputs := Nbr_Outputs + 1;
end if;
end if;