aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-11-23 07:18:00 +0100
committerTristan Gingold <tgingold@free.fr>2019-11-23 07:18:00 +0100
commitf62d39352714682081c1d91b5b0cbb746e1ce1ab (patch)
treea74474a5363e4bd88a8a572163db50e97824c8b4 /src/synth
parent495ac69c30e4fa0704cb3f6b7dc8f1cb9f654c67 (diff)
downloadghdl-f62d39352714682081c1d91b5b0cbb746e1ce1ab.tar.gz
ghdl-f62d39352714682081c1d91b5b0cbb746e1ce1ab.tar.bz2
ghdl-f62d39352714682081c1d91b5b0cbb746e1ce1ab.zip
synth-context: add source_scope (for debugger).
Diffstat (limited to 'src/synth')
-rw-r--r--src/synth/synth-context.adb7
-rw-r--r--src/synth/synth-context.ads10
-rw-r--r--src/synth/synth-flags.ads4
3 files changed, 19 insertions, 2 deletions
diff --git a/src/synth/synth-context.adb b/src/synth/synth-context.adb
index 7786de669..e02059f9e 100644
--- a/src/synth/synth-context.adb
+++ b/src/synth/synth-context.adb
@@ -64,6 +64,7 @@ package body Synth.Context is
Name => No_Sname,
Block_Scope => Global_Info,
Up_Block => null,
+ Source_Scope => Null_Node,
Elab_Objects => 0,
Objects => (others => null));
return Res;
@@ -91,6 +92,7 @@ package body Synth.Context is
Name => Name,
Block_Scope => Scope,
Up_Block => Parent,
+ Source_Scope => Blk,
Elab_Objects => 0,
Objects => (others => null));
return Res;
@@ -130,6 +132,11 @@ package body Synth.Context is
return Inst.Base.Cur_Module;
end Get_Instance_Module;
+ function Get_Source_Scope (Inst : Synth_Instance_Acc) return Node is
+ begin
+ return Inst.Source_Scope;
+ end Get_Source_Scope;
+
function Get_Top_Module (Inst : Synth_Instance_Acc) return Module is
begin
return Inst.Base.Top_Module;
diff --git a/src/synth/synth-context.ads b/src/synth/synth-context.ads
index 630639083..f569a092e 100644
--- a/src/synth/synth-context.ads
+++ b/src/synth/synth-context.ads
@@ -72,6 +72,9 @@ package Synth.Context is
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; Val : Value_Acc);
@@ -131,12 +134,15 @@ private
-- Name prefix for declarations.
Name : Sname;
- -- The corresponding info for this instance.
+ -- The corresponding info for this instance. This is used for lookup.
Block_Scope : Sim_Info_Acc;
- -- Parent instance.
+ -- 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.
diff --git a/src/synth/synth-flags.ads b/src/synth/synth-flags.ads
index c3ef0fda3..ac5f9d072 100644
--- a/src/synth/synth-flags.ads
+++ b/src/synth/synth-flags.ads
@@ -29,5 +29,9 @@ package Synth.Flags is
Flag_Trace_Statements : Boolean := False;
+ -- True to start debugger at elaboration.
Flag_Debug_Init : Boolean := False;
+
+ -- True to start debugger on error.
+ Flag_Debug_Enable : Boolean := True;
end Synth.Flags;