aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-09-28 07:41:07 +0200
committerTristan Gingold <tgingold@free.fr>2022-09-28 07:41:07 +0200
commitfe07ef095be4c8bc0e1f6e6d8eb94692c27445c7 (patch)
tree573746d8b6418e3ba7d8c1869085bcb03f24c014 /src/synth
parent8c367d78bc621b9f339042f5d456da94dd0b7861 (diff)
downloadghdl-fe07ef095be4c8bc0e1f6e6d8eb94692c27445c7.tar.gz
ghdl-fe07ef095be4c8bc0e1f6e6d8eb94692c27445c7.tar.bz2
ghdl-fe07ef095be4c8bc0e1f6e6d8eb94692c27445c7.zip
simul: handle last_value attribute
Diffstat (limited to 'src/synth')
-rw-r--r--src/synth/synth-vhdl_expr.adb7
-rw-r--r--src/synth/synth-vhdl_expr.ads1
2 files changed, 8 insertions, 0 deletions
diff --git a/src/synth/synth-vhdl_expr.adb b/src/synth/synth-vhdl_expr.adb
index fdbd5c302..eca5b2453 100644
--- a/src/synth/synth-vhdl_expr.adb
+++ b/src/synth/synth-vhdl_expr.adb
@@ -2364,6 +2364,13 @@ package body Synth.Vhdl_Expr is
end if;
Error_Msg_Synth (Syn_Inst, Expr, "active attribute not allowed");
return No_Valtyp;
+ when Iir_Kind_Last_Value_Attribute =>
+ if Hook_Last_Value_Attribute /= null then
+ return Hook_Last_Value_Attribute (Syn_Inst, Expr);
+ end if;
+ Error_Msg_Synth (Syn_Inst, Expr,
+ "last_value attribute not allowed");
+ return No_Valtyp;
when Iir_Kind_Dot_Attribute =>
if Hook_Dot_Attribute /= null then
return Hook_Dot_Attribute (Syn_Inst, Expr);
diff --git a/src/synth/synth-vhdl_expr.ads b/src/synth/synth-vhdl_expr.ads
index d4b27dc05..941bae57b 100644
--- a/src/synth/synth-vhdl_expr.ads
+++ b/src/synth/synth-vhdl_expr.ads
@@ -89,6 +89,7 @@ package Synth.Vhdl_Expr is
function (Syn_Inst : Synth_Instance_Acc; Expr : Node) return Valtyp;
Hook_Event_Attribute : Hook_Attribute_Acc;
Hook_Active_Attribute : Hook_Attribute_Acc;
+ Hook_Last_Value_Attribute : Hook_Attribute_Acc;
Hook_Dot_Attribute : Hook_Attribute_Acc;
-- Use base type of EXPR to synthesize EXPR. Useful when the type of