diff options
author | Tristan Gingold <tgingold@free.fr> | 2021-04-16 06:42:48 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2021-04-16 06:58:03 +0200 |
commit | a677e3cc38d1f5e3813bc1e5bd424ee0b59319ed (patch) | |
tree | f62fa5971c0e326294b02a84bb18c826937654f0 /src/synth/synth-context.ads | |
parent | 12d6069e3b48a6ce129914e728d88789d1d8f5a1 (diff) | |
download | ghdl-a677e3cc38d1f5e3813bc1e5bd424ee0b59319ed.tar.gz ghdl-a677e3cc38d1f5e3813bc1e5bd424ee0b59319ed.tar.bz2 ghdl-a677e3cc38d1f5e3813bc1e5bd424ee0b59319ed.zip |
synth: rename synth-context to synth-vhdl_context
Diffstat (limited to 'src/synth/synth-context.ads')
-rw-r--r-- | src/synth/synth-context.ads | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/src/synth/synth-context.ads b/src/synth/synth-context.ads deleted file mode 100644 index a2952eca0..000000000 --- a/src/synth/synth-context.ads +++ /dev/null @@ -1,205 +0,0 @@ --- Synthesis context. --- Copyright (C) 2017 Tristan Gingold --- --- This file is part of GHDL. --- --- This program 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 of the License, or --- (at your option) any later version. --- --- This program 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 this program. If not, see <gnu.org/licenses>. - -with Types; use Types; - -with Netlists; use Netlists; -with Netlists.Builders; use Netlists.Builders; - -with Vhdl.Annotations; use Vhdl.Annotations; -with Vhdl.Nodes; use Vhdl.Nodes; - -with Synth.Environment; use Synth.Environment; -with Synth.Objtypes; use Synth.Objtypes; -with Synth.Values; use Synth.Values; - -package Synth.Context is - -- Values are stored into Synth_Instance, which is parallel to simulation - -- Block_Instance_Type. - - type Synth_Instance_Type (<>) is limited private; - type Synth_Instance_Acc is access Synth_Instance_Type; - - function Get_Instance_By_Scope - (Syn_Inst: Synth_Instance_Acc; Scope: Sim_Info_Acc) - return Synth_Instance_Acc; - - -- Create the first instance. - function Make_Base_Instance return Synth_Instance_Acc; - - -- Free the first instance. - procedure Free_Base_Instance; - - -- Create and free the corresponding synth instance. - function Make_Instance (Parent : Synth_Instance_Acc; - Blk : Node; - Name : Sname := No_Sname) - return Synth_Instance_Acc; - - -- Only useful for subprograms: set the base (which can be different from - -- the parent). Ideally it should be part of Make_Instance, but in most - -- cases they are the same (except sometimes for subprograms). - procedure Set_Instance_Base (Inst : Synth_Instance_Acc; - Base : Synth_Instance_Acc); - procedure Free_Instance (Synth_Inst : in out Synth_Instance_Acc); - - function Is_Error (Inst : Synth_Instance_Acc) return Boolean; - pragma Inline (Is_Error); - - procedure Set_Error (Inst : Synth_Instance_Acc); - - function Get_Sname (Inst : Synth_Instance_Acc) return Sname; - pragma Inline (Get_Sname); - - function Get_Build (Inst : Synth_Instance_Acc) return Context_Acc; - pragma Inline (Get_Build); - - function Get_Top_Module (Inst : Synth_Instance_Acc) return Module; - - function Get_Instance_Module (Inst : Synth_Instance_Acc) return Module; - pragma Inline (Get_Instance_Module); - - -- Start the definition of module M (using INST). - procedure Set_Instance_Module (Inst : Synth_Instance_Acc; M : Module); - - function Get_Instance_Const (Inst : Synth_Instance_Acc) return Boolean; - procedure Set_Instance_Const (Inst : Synth_Instance_Acc; Val : Boolean); - - -- Get the corresponding source for the scope of the instance. - function Get_Source_Scope (Inst : Synth_Instance_Acc) return Node; - - procedure Create_Object - (Syn_Inst : Synth_Instance_Acc; Decl : Node; Vt : Valtyp); - - procedure Create_Package_Object (Syn_Inst : Synth_Instance_Acc; - Decl : Node; - Inst : Synth_Instance_Acc; - Is_Global : Boolean); - - procedure Create_Package_Interface (Syn_Inst : Synth_Instance_Acc; - Decl : Node; - Inst : Synth_Instance_Acc); - - procedure Create_Subtype_Object - (Syn_Inst : Synth_Instance_Acc; Decl : Node; Typ : Type_Acc); - - -- Force the value of DECL, without checking for elaboration order. - -- It is for deferred constants. - procedure Create_Object_Force - (Syn_Inst : Synth_Instance_Acc; Decl : Node; Vt : Valtyp); - - procedure Destroy_Object - (Syn_Inst : Synth_Instance_Acc; Decl : Node); - - -- Build the value for object OBJ. - -- KIND must be Wire_Variable or Wire_Signal. - procedure Create_Wire_Object (Syn_Inst : Synth_Instance_Acc; - Kind : Wire_Kind; - Obj : Node); - - -- Get the value of OBJ. - function Get_Value (Syn_Inst : Synth_Instance_Acc; Obj : Node) - return Valtyp; - - -- Get a net from a scalar/vector value. This will automatically create - -- a net for literals. - function Get_Net (Ctxt : Context_Acc; Val : Valtyp) return Net; - function Get_Partial_Memtyp_Net - (Ctxt : Context_Acc; Val : Memtyp; Off : Uns32; Wd : Width) return Net; - function Get_Memtyp_Net (Ctxt : Context_Acc; Val : Memtyp) return Net; - - function Get_Package_Object - (Syn_Inst : Synth_Instance_Acc; Pkg : Node) return Synth_Instance_Acc; - - -- Return the type for DECL (a subtype indication). - function Get_Subtype_Object - (Syn_Inst : Synth_Instance_Acc; Decl : Node) return Type_Acc; - - -- Return the scope of the parent of BLK. Deals with architecture bodies. - function Get_Parent_Scope (Blk : Node) return Sim_Info_Acc; - - procedure Set_Uninstantiated_Scope - (Syn_Inst : Synth_Instance_Acc; Bod : Node); -private - type Obj_Kind is - ( - Obj_None, - Obj_Object, - Obj_Subtype, - Obj_Instance - ); - - type Obj_Type (Kind : Obj_Kind := Obj_None) is record - case Kind is - when Obj_None => - null; - when Obj_Object => - Obj : Valtyp; - when Obj_Subtype => - T_Typ : Type_Acc; - when Obj_Instance => - I_Inst : Synth_Instance_Acc; - end case; - end record; - - type Objects_Array is array (Object_Slot_Type range <>) of Obj_Type; - - type Base_Instance_Type is limited record - Builder : Context_Acc; - Top_Module : Module; - - Cur_Module : Module; - end record; - - type Base_Instance_Acc is access Base_Instance_Type; - - type Synth_Instance_Type (Max_Objs : Object_Slot_Type) is limited record - Is_Const : Boolean; - - -- True if a fatal error has been detected that aborts the synthesis - -- of this instance. - Is_Error : Boolean; - - Base : Base_Instance_Acc; - - -- Name prefix for declarations. - Name : Sname; - - -- The corresponding info for this instance. - -- This is used for lookup. - Block_Scope : Sim_Info_Acc; - - -- The corresponding info the the uninstantiated specification of - -- an instantiated package. When an object is looked for from the - -- uninstantiated body, the scope of the uninstantiated specification - -- is used. And it is different from Block_Scope. - -- This is used for lookup of uninstantiated specification. - Uninst_Scope : Sim_Info_Acc; - - -- Instance of the parent scope. - Up_Block : Synth_Instance_Acc; - - -- Source construct corresponding to this instance/ - Source_Scope : Node; - - Elab_Objects : Object_Slot_Type; - - -- Instance for synthesis. - Objects : Objects_Array (1 .. Max_Objs); - end record; -end Synth.Context; |