aboutsummaryrefslogtreecommitdiffstats
path: root/src/simul
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-08-25 18:35:08 +0200
committerTristan Gingold <tgingold@free.fr>2022-08-25 18:35:08 +0200
commitf66dfc0dacbb9994f01c45af04cf9b2a505d6f78 (patch)
treec37524fac043eccad9d165a35c2b40da8043ad74 /src/simul
parent71973b9b2a69b0d59e829629fa5750db997c00f1 (diff)
downloadghdl-f66dfc0dacbb9994f01c45af04cf9b2a505d6f78.tar.gz
ghdl-f66dfc0dacbb9994f01c45af04cf9b2a505d6f78.tar.bz2
ghdl-f66dfc0dacbb9994f01c45af04cf9b2a505d6f78.zip
simul: handle connections of records
Diffstat (limited to 'src/simul')
-rw-r--r--src/simul/simul-vhdl_simul.adb19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/simul/simul-vhdl_simul.adb b/src/simul/simul-vhdl_simul.adb
index fbd649142..321c30130 100644
--- a/src/simul/simul-vhdl_simul.adb
+++ b/src/simul/simul-vhdl_simul.adb
@@ -2260,9 +2260,26 @@ package body Simul.Vhdl_Simul is
end loop;
end;
return;
+ when Type_Record =>
+ for I in Dst.Typ.Rec.E'Range loop
+ declare
+ E : Rec_El_Type renames Dst.Typ.Rec.E (I);
+ begin
+ Connect ((Dst.Sig,
+ (Dst.Offs.Net_Off + E.Offs.Net_Off,
+ Dst.Offs.Mem_Off + E.Offs.Mem_Off),
+ E.Typ),
+ (Src.Sig,
+ (Src.Offs.Net_Off + E.Offs.Net_Off,
+ Src.Offs.Mem_Off + E.Offs.Mem_Off),
+ Src.Typ.Rec.E (I).Typ),
+ Mode);
+ end;
+ end loop;
when Type_Logic
| Type_Bit
- | Type_Discrete =>
+ | Type_Discrete
+ | Type_Float =>
declare
S, D : Ghdl_Signal_Ptr;
begin