diff options
Diffstat (limited to 'simulate/simulation-ams.ads')
-rw-r--r-- | simulate/simulation-ams.ads | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/simulate/simulation-ams.ads b/simulate/simulation-ams.ads deleted file mode 100644 index 8ca513652..000000000 --- a/simulate/simulation-ams.ads +++ /dev/null @@ -1,165 +0,0 @@ --- Interpreter AMS 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 GNAT.Table; - -package Simulation.AMS is - -- AMS expressions - -- - -- At many places during elaboration, the LRM defines characteristic - -- expressions that aren't present in source code: - -- * contribution expression (12.3.1.4) - -- * characteristic expression for an across quantity declaration - -- (12.3.1.4) - -- * characteristic expression for simple simultaneous statement (the - -- expression is in the source in that case) (15.1) - -- - -- They are represented using a list of Ams_Expression elements. The value - -- is the sum of each element, using the + or - sign. - - type Ams_Sign is (Op_Plus, Op_Minus); - -- Sign for the operand - - type Ams_Operand is (Op_Quantity, Op_Vhdl_Expr); - -- The operand is one of: - -- Op_Quantity: a quantity - -- Op_Vhdl_Expr: an expression from the design. This expression may contain - -- quantities - - type Ams_Term (<>) is private; - type Ams_Term_Acc is access Ams_Term; - -- A term of a characteristic expression - - type Characteristic_Expr_Kind is - (Explicit, - Contribution, - Structural); - - type Tolerance_Index_Type is new Natural; - Default_Tolerance_Index : constant Tolerance_Index_Type := 0; - -- Tolerance - - type Characteristic_Expressions_Index is new Natural; - - type Quantity_Kind is - (Quantity_Reference, - -- The potential of a terminal. This is an across quantity between the - -- terminal and the reference terminal of the nature. - - Quantity_Across, - Quantity_Through, - Quantity_Free - -- Explicitly declared quantities - ); - - function Create_Scalar_Quantity (Kind : Quantity_Kind; - Decl : Iir; - Instance : Block_Instance_Acc) - return Quantity_Index_Type; - -- Create a new scalar quantity - - function Create_Scalar_Terminal (Decl : Iir; - Instance : Block_Instance_Acc) - return Terminal_Index_Type; - -- Create a new scalar terminal - - function Get_Terminal_Reference (Terminal : Terminal_Index_Type) - return Quantity_Index_Type; - -- Get the reference quantity of a terminal - - procedure Add_Characteristic_Expression - (Kind : Characteristic_Expr_Kind; Expr : Ams_Term_Acc); - -- Add a new characteristic expression - - function Build (Op : Ams_Sign; - Val : Quantity_Index_Type; - Right : Ams_Term_Acc := null) - return Ams_Term_Acc; - function Build (Op : Ams_Sign; - Instance : Block_Instance_Acc; - Expr : Iir; - Right : Ams_Term_Acc := null) - return Ams_Term_Acc; - -- Build a term of a characteristic expression - - procedure Append_Characteristic_Expression - (Terminal : Terminal_Index_Type; Expr : Ams_Term_Acc); - -- Append an expression to the contribution of a terminal - - procedure Create_Tables; -private - type Quantity_Index_Array is array (Positive range <>) - of Quantity_Index_Type; - - type Quantity_Dependency_Type (Nbr : Natural); - type Quantity_Dependency_Acc is access Quantity_Dependency_Type; - - type Quantity_Dependency_Type (Nbr : Natural) is record - Quantities : Quantity_Index_Array (1 .. Nbr); - end record; - - type Ams_Term (Op : Ams_Operand) is record - Sign : Ams_Sign; - Next : Ams_Term_Acc; - - case Op is - when Op_Quantity => - Quantity : Quantity_Index_Type; - when Op_Vhdl_Expr => - Vhdl_Expr : Iir; - Vhdl_Instance : Block_Instance_Acc; - end case; - end record; - - type Characteristic_Expr is record - Kind : Characteristic_Expr_Kind; - Expr : Ams_Term_Acc; - Tolerance : Tolerance_Index_Type; - Dependencies : Quantity_Dependency_Acc; - end record; - - package Characteristic_Expressions is new Gnat.Table - (Table_Index_Type => Characteristic_Expressions_Index, - Table_Component_Type => Characteristic_Expr, - Table_Low_Bound => 1, - Table_Initial => 128, - Table_Increment => 100); - - type Scalar_Quantity (Kind : Quantity_Kind := Quantity_Reference) is record - Value : Ghdl_F64; - -- The value of the quantity - - Decl : Iir; - Instance : Block_Instance_Acc; - -- Declaration for the quantity - - case Kind is - when Quantity_Reference => - Contribution : Characteristic_Expressions_Index; - when others => - null; - end case; - end record; - - package Scalar_Quantities is new Gnat.Table - (Table_Index_Type => Quantity_Index_Type, - Table_Component_Type => Scalar_Quantity, - Table_Low_Bound => 1, - Table_Initial => 128, - Table_Increment => 100); -end Simulation.AMS; |