diff options
author | Tristan Gingold <tgingold@free.fr> | 2019-07-18 03:04:21 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2019-07-19 18:48:22 +0200 |
commit | c9b3a23bfc75c9b2b74ed88cca97fb5a4e264d7f (patch) | |
tree | e9027e5132589e399db264b4f9e8624a7564541f /src/synth/synth-stmts.adb | |
parent | e812443cafb5284eef69a3aaf44b69192964bf0e (diff) | |
download | ghdl-c9b3a23bfc75c9b2b74ed88cca97fb5a4e264d7f.tar.gz ghdl-c9b3a23bfc75c9b2b74ed88cca97fb5a4e264d7f.tar.bz2 ghdl-c9b3a23bfc75c9b2b74ed88cca97fb5a4e264d7f.zip |
synth: finalize concurrent assignments (WIP).
Diffstat (limited to 'src/synth/synth-stmts.adb')
-rw-r--r-- | src/synth/synth-stmts.adb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb index 993a64491..83a163d60 100644 --- a/src/synth/synth-stmts.adb +++ b/src/synth/synth-stmts.adb @@ -1210,14 +1210,19 @@ package body Synth.Stmts is begin Stmt := Stmts; while Is_Valid (Stmt) loop - Push_Phi; case Get_Kind (Stmt) is when Iir_Kind_Concurrent_Simple_Signal_Assignment => + Push_Phi; Synth_Simple_Signal_Assignment (Syn_Inst, Stmt); + Pop_And_Merge_Phi (Build_Context, Stmt); when Iir_Kind_Concurrent_Conditional_Signal_Assignment => + Push_Phi; Synth_Conditional_Signal_Assignment (Syn_Inst, Stmt); + Pop_And_Merge_Phi (Build_Context, Stmt); when Iir_Kinds_Process_Statement => + Push_Phi; Synth_Process_Statement (Syn_Inst, Stmt); + Pop_And_Merge_Phi (Build_Context, Stmt); when Iir_Kind_If_Generate_Statement => declare Gen : Node; @@ -1237,9 +1242,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 => + Push_Phi; if Is_Component_Instantiation (Stmt) then declare Comp_Config : constant Node := @@ -1257,14 +1261,18 @@ package body Synth.Stmts is else Synth_Design_Instantiation_Statement (Syn_Inst, Stmt); end if; + Pop_And_Merge_Phi (Build_Context, Stmt); when Iir_Kind_Psl_Default_Clock => null; when Iir_Kind_Psl_Restrict_Directive => + -- Passive statement. Synth_Psl_Restrict_Directive (Syn_Inst, Stmt); + when Iir_Kind_Concurrent_Assertion_Statement => + -- Passive statement. + Synth_Concurrent_Assertion_Statement (Syn_Inst, Stmt); when others => Error_Kind ("synth_statements", Stmt); end case; - Pop_And_Merge_Phi (Build_Context); Stmt := Get_Chain (Stmt); end loop; end Synth_Concurrent_Statements; |