diff options
author | Tristan Gingold <tgingold@free.fr> | 2022-09-28 07:41:07 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2022-09-28 07:41:07 +0200 |
commit | fe07ef095be4c8bc0e1f6e6d8eb94692c27445c7 (patch) | |
tree | 573746d8b6418e3ba7d8c1869085bcb03f24c014 /src/synth | |
parent | 8c367d78bc621b9f339042f5d456da94dd0b7861 (diff) | |
download | ghdl-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.adb | 7 | ||||
-rw-r--r-- | src/synth/synth-vhdl_expr.ads | 1 |
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 |