summaryrefslogtreecommitdiff
path: root/src/simulate/execution.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/simulate/execution.ads')
-rw-r--r--src/simulate/execution.ads185
1 files changed, 0 insertions, 185 deletions
diff --git a/src/simulate/execution.ads b/src/simulate/execution.ads
deleted file mode 100644
index faed111..0000000
--- a/src/simulate/execution.ads
+++ /dev/null
@@ -1,185 +0,0 @@
--- Interpreted simulation
--- Copyright (C) 2014 Tristan Gingold
---
--- GHDL is free software; you can redistribute it and/or modify it under
--- the terms of the GNU General Public License as published by the Free
--- Software Foundation; either version 2, or (at your option) any later
--- version.
---
--- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
--- WARRANTY; without even the implied warranty of MERCHANTABILITY or
--- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
--- for more details.
---
--- You should have received a copy of the GNU General Public License
--- along with GHDL; see the file COPYING. If not, write to the Free
--- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
--- 02111-1307, USA.
-
-with Types; use Types;
-with Iirs; use Iirs;
-with Iir_Values; use Iir_Values;
-with Elaboration; use Elaboration;
-with Areapools; use Areapools;
-
-package Execution is
- Trace_Statements : Boolean := False;
-
- -- If true, disp current time in assert message.
- Disp_Time_Before_Values: Boolean := False;
-
- Current_Component : Block_Instance_Acc := null;
-
- -- State associed with each process.
- type Process_State_Type is record
- -- The process instance.
- Top_Instance: Block_Instance_Acc := null;
- Proc: Iir := Null_Iir;
-
- -- Memory pool to allocate objects from.
- Pool : aliased Areapool;
-
- -- The stack of the process.
- Instance : Block_Instance_Acc := null;
- end record;
- type Process_State_Acc is access all Process_State_Type;
-
- Simulation_Finished : exception;
-
- -- Current process being executed. This is only for the debugger.
- Current_Process : Process_State_Acc;
-
- -- Pseudo process used for resolution functions, ...
- No_Process : Process_State_Acc := new Process_State_Type;
- -- Execute a list of sequential statements.
- -- Return when there is no more statements to execute.
- procedure Execute_Sequential_Statements (Proc : Process_State_Acc);
-
- -- Evaluate an expression.
- function Execute_Expression (Block: Block_Instance_Acc; Expr: Iir)
- return Iir_Value_Literal_Acc;
-
- -- Evaluate boolean condition COND. If COND is Null_Iir, returns true.
- function Execute_Condition (Instance : Block_Instance_Acc;
- Cond : Iir) return Boolean;
-
- -- Execute a name. Return the value if Ref is False, or the reference
- -- (for a signal, a quantity or a terminal) if Ref is True.
- function Execute_Name (Block: Block_Instance_Acc;
- Expr: Iir;
- Ref : Boolean := False)
- return Iir_Value_Literal_Acc;
-
- procedure Execute_Name_With_Base (Block: Block_Instance_Acc;
- Expr: Iir;
- Base : Iir_Value_Literal_Acc;
- Res : out Iir_Value_Literal_Acc;
- Is_Sig : out Boolean);
-
- -- Return the initial value (default value) of signal name EXPR. To be
- -- used only during (non-dynamic) elaboration.
- function Execute_Signal_Init_Value (Block : Block_Instance_Acc; Expr : Iir)
- return Iir_Value_Literal_Acc;
-
- function Execute_Expression_With_Type
- (Block: Block_Instance_Acc;
- Expr: Iir;
- Expr_Type : Iir)
- return Iir_Value_Literal_Acc;
-
- function Execute_Resolution_Function
- (Block: Block_Instance_Acc; Imp : Iir; Arr : Iir_Value_Literal_Acc)
- return Iir_Value_Literal_Acc;
-
- function Execute_Assoc_Conversion
- (Block : Block_Instance_Acc; Conv : Iir; Val : Iir_Value_Literal_Acc)
- return Iir_Value_Literal_Acc;
-
- -- Sub function common for left/right/length/low/high attributes.
- -- Return bounds of PREFIX.
- function Execute_Bounds (Block: Block_Instance_Acc; Prefix: Iir)
- return Iir_Value_Literal_Acc;
-
- -- Compute the offset for INDEX into a range BOUNDS.
- -- EXPR is only used in case of error.
- function Get_Index_Offset
- (Index: Iir_Value_Literal_Acc;
- Bounds: Iir_Value_Literal_Acc;
- Expr: Iir)
- return Iir_Index32;
-
- function Execute_Low_Limit (Bounds : Iir_Value_Literal_Acc)
- return Iir_Value_Literal_Acc;
-
- function Get_Instance_For_Slot (Instance: Block_Instance_Acc; Decl: Iir)
- return Block_Instance_Acc;
-
- -- Store VALUE to TARGET.
- -- Note: VALUE is not freed.
- procedure Assign_Value_To_Object
- (Instance: Block_Instance_Acc;
- Target: Iir_Value_Literal_Acc;
- Target_Type: Iir;
- Value: Iir_Value_Literal_Acc;
- Stmt: Iir);
-
- -- Check VALUE follows the constraints of DEF.
- -- INSTANCE,DEF is the definition of a subtype.
- -- EXPR is just used in case of error to display the location
- -- If there is no location, EXPR can be null.
- -- Implicitly convert VALUE (array cases).
- -- Return in case of success.
- -- Raise errorout.execution_constraint_error in case of failure.
- procedure Check_Constraints
- (Instance: Block_Instance_Acc;
- Value: Iir_Value_Literal_Acc;
- Def: Iir; Expr: Iir);
-
- -- If VALUE is not an array, then this is a no-op.
- -- If VALUE is an array, then bounds are checked and converted. INSTANCE
- -- is the instance corresponding to REF_TYPE.
- -- EXPR is used in case of error.
- procedure Implicit_Array_Conversion (Value : in out Iir_Value_Literal_Acc;
- Ref_Value : Iir_Value_Literal_Acc;
- Expr : Iir);
- procedure Implicit_Array_Conversion (Instance : Block_Instance_Acc;
- Value : in out Iir_Value_Literal_Acc;
- Ref_Type : Iir;
- Expr : Iir);
-
- -- Create an iir_value_literal of kind iir_value_array and of life LIFE.
- -- Allocate the array of bounds, and fill it from A_TYPE.
- -- Allocate the array of values.
- function Create_Array_Bounds_From_Type
- (Block : Block_Instance_Acc;
- A_Type : Iir;
- Create_Val_Array : Boolean)
- return Iir_Value_Literal_Acc;
-
- -- Create a range from LEN for scalar type ATYPE.
- function Create_Bounds_From_Length (Block : Block_Instance_Acc;
- Atype : Iir;
- Len : Iir_Index32)
- return Iir_Value_Literal_Acc;
-
- -- Return TRUE iff VAL is in the range defined by BOUNDS.
- function Is_In_Range (Val : Iir_Value_Literal_Acc;
- Bounds : Iir_Value_Literal_Acc)
- return Boolean;
-
- -- Increment or decrement VAL according to BOUNDS.DIR.
- procedure Update_Loop_Index (Val : Iir_Value_Literal_Acc;
- Bounds : Iir_Value_Literal_Acc);
-
- -- Create a block instance for subprogram IMP.
- function Create_Subprogram_Instance (Instance : Block_Instance_Acc;
- Imp : Iir)
- return Block_Instance_Acc;
-
- function Execute_Function_Body (Instance : Block_Instance_Acc; Func : Iir)
- return Iir_Value_Literal_Acc;
-
- function Execute_Image_Attribute (Val : Iir_Value_Literal_Acc;
- Expr_Type : Iir)
- return String;
-end Execution;