aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-09-15 03:13:52 +0200
committerTristan Gingold <tgingold@free.fr>2022-09-15 03:13:52 +0200
commit26353d25ad3eead54a5143df0f0298f142911670 (patch)
treec43c9ed800f4cd6552f36a373c0a037cb8364daf /src
parent8ada97528f410837465f61128fadda39d2c854ee (diff)
downloadghdl-26353d25ad3eead54a5143df0f0298f142911670.tar.gz
ghdl-26353d25ad3eead54a5143df0f0298f142911670.tar.bz2
ghdl-26353d25ad3eead54a5143df0f0298f142911670.zip
synth: handle vhdl-87 files
Diffstat (limited to 'src')
-rw-r--r--src/synth/synth-vhdl_stmts.adb6
-rw-r--r--src/vhdl/vhdl-utils.adb10
2 files changed, 14 insertions, 2 deletions
diff --git a/src/synth/synth-vhdl_stmts.adb b/src/synth/synth-vhdl_stmts.adb
index ad7382da9..45de83118 100644
--- a/src/synth/synth-vhdl_stmts.adb
+++ b/src/synth/synth-vhdl_stmts.adb
@@ -1967,6 +1967,12 @@ package body Synth.Vhdl_Stmts is
Copy_Memory (Val.Val.Mem,
Info.Obj.Val.Mem + Info.Off.Mem_Off,
Info.Targ_Type.Sz);
+ elsif Info.Kind = Target_Simple
+ and then Info.Obj.Val.Kind = Value_File
+ then
+ -- For vhdl-87
+ Val := Create_Value_File
+ (Info.Targ_Type, Info.Obj.Val.File, Instance_Pool);
else
Val := Synth_Read (Caller_Inst, Info, Assoc);
Val := Unshare (Val, Instance_Pool);
diff --git a/src/vhdl/vhdl-utils.adb b/src/vhdl/vhdl-utils.adb
index 6f362073d..05c1dc0ee 100644
--- a/src/vhdl/vhdl-utils.adb
+++ b/src/vhdl/vhdl-utils.adb
@@ -681,8 +681,14 @@ package body Vhdl.Utils is
function Is_Copyback_Parameter (Inter : Iir) return Boolean is
begin
- return Get_Kind (Inter) = Iir_Kind_Interface_Variable_Declaration
- and then Get_Mode (Inter) in Iir_Out_Mode .. Iir_Inout_Mode;
+ if Get_Kind (Inter) = Iir_Kind_Interface_Variable_Declaration
+ and then Get_Mode (Inter) in Iir_Out_Mode .. Iir_Inout_Mode
+ then
+ -- For Vhdl-87, files are not copyback.
+ return Get_Kind (Get_Type (Inter)) /= Iir_Kind_File_Type_Definition;
+ else
+ return False;
+ end if;
end Is_Copyback_Parameter;
function Find_Name_In_Flist (List : Iir_Flist; Lit : Name_Id) return Iir