diff options
author | Tristan Gingold <tgingold@free.fr> | 2019-07-02 19:02:56 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2019-07-02 19:02:56 +0200 |
commit | a11d847187413ad04a6d98c1e867ccb5e385abe5 (patch) | |
tree | d451775064efe18c5510528e1efef86dad56224e /src/synth/synth-stmts.adb | |
parent | c851b365a40b7643346beece274b1ba81d9af5e5 (diff) | |
download | ghdl-a11d847187413ad04a6d98c1e867ccb5e385abe5.tar.gz ghdl-a11d847187413ad04a6d98c1e867ccb5e385abe5.tar.bz2 ghdl-a11d847187413ad04a6d98c1e867ccb5e385abe5.zip |
synth: handle concurrent assertions.
Diffstat (limited to 'src/synth/synth-stmts.adb')
-rw-r--r-- | src/synth/synth-stmts.adb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb index 33d198d9f..3521fd2aa 100644 --- a/src/synth/synth-stmts.adb +++ b/src/synth/synth-stmts.adb @@ -1051,6 +1051,22 @@ package body Synth.Stmts is Instance_Pool := null; end Synth_Generate_Statement_Body; + procedure Synth_Concurrent_Assertion_Statement + (Syn_Inst : Synth_Instance_Acc; Stmt : Node) + is + Cond : constant Node := Get_Assertion_Condition (Stmt); + Val : Value_Acc; + begin + Val := Synth_Expression (Syn_Inst, Cond); + if Is_Const (Val) then + if Val.Scal /= 1 then + raise Internal_Error; + end if; + return; + end if; + Build_Assert (Build_Context, Get_Net (Val, Get_Type (Cond))); + end Synth_Concurrent_Assertion_Statement; + procedure Synth_Concurrent_Statements (Syn_Inst : Synth_Instance_Acc; Stmts : Node) is @@ -1085,6 +1101,8 @@ package body Synth.Stmts is exit when Gen = Null_Node; end loop; end; + when Iir_Kind_Concurrent_Assertion_Statement => + Synth_Concurrent_Assertion_Statement (Syn_Inst, Stmt); when Iir_Kind_Component_Instantiation_Statement => -- TODO. null; |