aboutsummaryrefslogtreecommitdiffstats
path: root/src/simul/simul-vhdl_simul.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/simul/simul-vhdl_simul.ads')
-rw-r--r--src/simul/simul-vhdl_simul.ads19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/simul/simul-vhdl_simul.ads b/src/simul/simul-vhdl_simul.ads
index a929c3fa6..38d3173f0 100644
--- a/src/simul/simul-vhdl_simul.ads
+++ b/src/simul/simul-vhdl_simul.ads
@@ -41,19 +41,30 @@ package Simul.Vhdl_Simul is
Trace_Residues : Boolean := False;
+ type Process_Kind is (Kind_Process, Kind_PSL);
+
+ type Boolean_Vector is array (Nat32 range <>) of Boolean;
+ type Boolean_Vector_Acc is access Boolean_Vector;
+
-- State associed with each process.
- type Process_State_Type is record
+ type Process_State_Type (Kind : Process_Kind := Kind_Process) is record
-- The process instance.
Top_Instance : Synth_Instance_Acc := null;
Proc : Node := Null_Node;
Idx : Process_Index_Type;
- -- Memory pool to allocate objects from.
- Pool : aliased Areapool;
-
-- The stack of the process.
Instance : Synth_Instance_Acc := null;
+
+ case Kind is
+ when Kind_Process =>
+ -- Memory pool to allocate objects from.
+ Pool : Areapool_Acc;
+ when Kind_PSL =>
+ Done : Boolean;
+ States: Boolean_Vector_Acc;
+ end case;
end record;
type Process_State_Acc is access all Process_State_Type;