aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-05-04 06:14:30 +0200
committerTristan Gingold <tgingold@free.fr>2020-05-04 19:04:11 +0200
commit210c497e86d6dff0337114b013e0c3a8066dee72 (patch)
tree84dff6efad5f1ecdc89a7a15d93f4ebb6edef858 /src
parent6ff7ef51aec7c1d653dab142aa0e5cda170e9f29 (diff)
downloadghdl-210c497e86d6dff0337114b013e0c3a8066dee72.tar.gz
ghdl-210c497e86d6dff0337114b013e0c3a8066dee72.tar.bz2
ghdl-210c497e86d6dff0337114b013e0c3a8066dee72.zip
synth: remove Global_Context (cleanup).
Diffstat (limited to 'src')
-rw-r--r--src/synth/synth-aggr.adb2
-rw-r--r--src/synth/synth-context.adb8
-rw-r--r--src/synth/synth-context.ads3
-rw-r--r--src/synth/synth-expr.adb13
-rw-r--r--src/synth/synth-expr.ads3
-rw-r--r--src/synth/synth-insts.adb2
-rw-r--r--src/synth/synth-oper.adb20
-rw-r--r--src/synth/synth-stmts.adb2
8 files changed, 27 insertions, 26 deletions
diff --git a/src/synth/synth-aggr.adb b/src/synth/synth-aggr.adb
index 6840734ca..69b20dd8f 100644
--- a/src/synth/synth-aggr.adb
+++ b/src/synth/synth-aggr.adb
@@ -377,7 +377,7 @@ package body Synth.Aggr is
Arr (Idx) := Get_Net (Ctxt, Tab (I));
end if;
end loop;
- Concat_Array (Arr (1 .. Idx), Res);
+ Concat_Array (Ctxt, Arr (1 .. Idx), Res);
Free_Net_Array (Arr);
return Res;
end Valtyp_Array_To_Net;
diff --git a/src/synth/synth-context.adb b/src/synth/synth-context.adb
index 0893e9c7c..0362a0a25 100644
--- a/src/synth/synth-context.adb
+++ b/src/synth/synth-context.adb
@@ -37,13 +37,13 @@ package body Synth.Context is
Base : Base_Instance_Acc;
Top_Module : Module;
Res : Synth_Instance_Acc;
+ Ctxt : Context_Acc;
begin
Top_Module :=
New_Design (New_Sname_Artificial (Get_Identifier ("top"), No_Sname));
- pragma Assert (Build_Context = null);
- Build_Context := Build_Builders (Top_Module);
+ Ctxt := Build_Builders (Top_Module);
- Base := new Base_Instance_Type'(Builder => Build_Context,
+ Base := new Base_Instance_Type'(Builder => Ctxt,
Top_Module => Top_Module,
Cur_Module => No_Module);
@@ -65,7 +65,7 @@ package body Synth.Context is
procedure Free_Base_Instance is
begin
-- TODO: really free.
- Build_Context := null;
+ null;
end Free_Base_Instance;
function Make_Instance (Parent : Synth_Instance_Acc;
diff --git a/src/synth/synth-context.ads b/src/synth/synth-context.ads
index 2c7dd78ae..02b51c8c8 100644
--- a/src/synth/synth-context.ads
+++ b/src/synth/synth-context.ads
@@ -37,9 +37,6 @@ package Synth.Context is
type Synth_Instance_Type (<>) is limited private;
type Synth_Instance_Acc is access Synth_Instance_Type;
- -- Global context.
- Build_Context : Context_Acc;
-
function Get_Instance_By_Scope
(Syn_Inst: Synth_Instance_Acc; Scope: Sim_Info_Acc)
return Synth_Instance_Acc;
diff --git a/src/synth/synth-expr.adb b/src/synth/synth-expr.adb
index 6e4fd031b..bccb022fd 100644
--- a/src/synth/synth-expr.adb
+++ b/src/synth/synth-expr.adb
@@ -375,7 +375,7 @@ package body Synth.Expr is
end if;
end Synth_Resize;
- procedure Concat_Array (Arr : in out Net_Array)
+ procedure Concat_Array (Ctxt : Context_Acc; Arr : in out Net_Array)
is
Last : Int32;
Idx, New_Idx : Int32;
@@ -393,15 +393,15 @@ package body Synth.Expr is
Idx := Idx + 1;
elsif Idx + 1 = Last then
Arr (New_Idx) := Build_Concat2
- (Build_Context, Arr (Idx), Arr (Idx + 1));
+ (Ctxt, Arr (Idx), Arr (Idx + 1));
Idx := Idx + 2;
elsif Idx + 2 = Last then
Arr (New_Idx) := Build_Concat3
- (Build_Context, Arr (Idx), Arr (Idx + 1), Arr (Idx + 2));
+ (Ctxt, Arr (Idx), Arr (Idx + 1), Arr (Idx + 2));
Idx := Idx + 3;
else
Arr (New_Idx) := Build_Concat4
- (Build_Context,
+ (Ctxt,
Arr (Idx), Arr (Idx + 1), Arr (Idx + 2), Arr (Idx + 3));
Idx := Idx + 4;
end if;
@@ -410,9 +410,10 @@ package body Synth.Expr is
end loop;
end Concat_Array;
- procedure Concat_Array (Arr : in out Net_Array; N : out Net) is
+ procedure Concat_Array
+ (Ctxt : Context_Acc; Arr : in out Net_Array; N : out Net) is
begin
- Concat_Array (Arr);
+ Concat_Array (Ctxt, Arr);
N := Arr (Arr'First);
end Concat_Array;
diff --git a/src/synth/synth-expr.ads b/src/synth/synth-expr.ads
index 73287b49e..e54e0c7b8 100644
--- a/src/synth/synth-expr.ads
+++ b/src/synth/synth-expr.ads
@@ -70,7 +70,8 @@ package Synth.Expr is
function Synth_Clock_Edge
(Syn_Inst : Synth_Instance_Acc; Left, Right : Node) return Net;
- procedure Concat_Array (Arr : in out Net_Array; N : out Net);
+ procedure Concat_Array
+ (Ctxt : Context_Acc; Arr : in out Net_Array; N : out Net);
-- Synthesize EXPR. The expression must be self-constrained.
-- If EN is not No_Net, the execution is controlled by EN. This is used
diff --git a/src/synth/synth-insts.adb b/src/synth/synth-insts.adb
index 572ccf5ac..060defa32 100644
--- a/src/synth/synth-insts.adb
+++ b/src/synth/synth-insts.adb
@@ -1380,7 +1380,7 @@ package body Synth.Insts is
declare
Io_Inst : Instance;
begin
- Io_Inst := Builders.Build_Inout (Build_Context, Desc.W);
+ Io_Inst := Builders.Build_Inout (Ctxt, Desc.W);
-- Connect port1 of gate inout to the pin.
Connect (Inp, Get_Output (Io_Inst, 1));
-- And port0 of the gate will be use to read from the pin.
diff --git a/src/synth/synth-oper.adb b/src/synth/synth-oper.adb
index 7944ba3b2..760ef8fd5 100644
--- a/src/synth/synth-oper.adb
+++ b/src/synth/synth-oper.adb
@@ -43,9 +43,10 @@ package body Synth.Oper is
procedure Set_Location (N : Net; Loc : Node)
renames Synth.Source.Set_Location;
- function Synth_Uresize (N : Net; W : Width; Loc : Node) return Net is
+ function Synth_Uresize
+ (Ctxt : Context_Acc; N : Net; W : Width; Loc : Node) return Net is
begin
- return Build2_Uresize (Build_Context, N, W, Get_Location (Loc));
+ return Build2_Uresize (Ctxt, N, W, Get_Location (Loc));
end Synth_Uresize;
function Synth_Uresize
@@ -64,7 +65,7 @@ package body Synth.Oper is
Set_Location (Res, Loc);
return Res;
end if;
- return Synth_Uresize (Get_Net (Ctxt, Val), W, Loc);
+ return Synth_Uresize (Ctxt, Get_Net (Ctxt, Val), W, Loc);
end Synth_Uresize;
function Synth_Sresize
@@ -74,7 +75,7 @@ package body Synth.Oper is
begin
if Is_Static (Val.Val) and then Val.Typ.Kind = Type_Discrete then
if Val.Typ.Drange.Is_Signed then
- Res := Build2_Const_Int (Build_Context, Read_Discrete (Val), W);
+ Res := Build2_Const_Int (Ctxt, Read_Discrete (Val), W);
else
-- TODO.
raise Internal_Error;
@@ -997,7 +998,7 @@ package body Synth.Oper is
L := Synth_Uresize (Ctxt, Left, W, Left_Expr);
R := Synth_Uresize (Ctxt, Right, W, Right_Expr);
Rtype := Create_Vec_Type_By_Length (W, Left.Typ.Vec_El);
- N := Build_Dyadic (Build_Context, Id_Umul, L, R);
+ N := Build_Dyadic (Ctxt, Id_Umul, L, R);
Set_Location (N, Expr);
return Create_Value_Net (N, Rtype);
end;
@@ -1042,7 +1043,7 @@ package body Synth.Oper is
L := Synth_Uresize (Ctxt, Left, W, Left_Expr);
R := Synth_Sresize (Ctxt, Right, W, Right_Expr);
Rtype := Create_Vec_Type_By_Length (W, Left.Typ.Vec_El);
- N := Build_Dyadic (Build_Context, Id_Smul, L, R);
+ N := Build_Dyadic (Ctxt, Id_Smul, L, R);
Set_Location (N, Expr);
return Create_Value_Net (N, Rtype);
end;
@@ -1303,7 +1304,7 @@ package body Synth.Oper is
Bnd : Bound_Type;
N : Net;
begin
- N := Build_Concat2 (Build_Context, L, R);
+ N := Build_Concat2 (Ctxt, L, R);
Set_Location (N, Expr);
Bnd := Create_Bounds_From_Length
(Syn_Inst,
@@ -1606,7 +1607,8 @@ package body Synth.Oper is
| Iir_Predefined_Ieee_Std_Logic_Unsigned_Conv_Integer =>
-- UNSIGNED to Natural.
return Create_Value_Net
- (Synth_Uresize (Get_Net (Ctxt, L), Res_Typ.W, Expr), Res_Typ);
+ (Synth_Uresize (Ctxt, Get_Net (Ctxt, L), Res_Typ.W, Expr),
+ Res_Typ);
when Iir_Predefined_Ieee_Numeric_Std_Toint_Sgn_Int =>
-- SIGNED to Integer.
return Create_Value_Net
@@ -1622,7 +1624,7 @@ package body Synth.Oper is
end if;
W := Uns32 (Read_Discrete (R));
return Create_Value_Net
- (Synth_Uresize (Get_Net (Ctxt, L), W, Expr),
+ (Synth_Uresize (Ctxt, Get_Net (Ctxt, L), W, Expr),
Create_Vec_Type_By_Length (W, Logic_Type));
end;
when Iir_Predefined_Ieee_Numeric_Std_Resize_Sgn_Nat
diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb
index 59a2ed0e1..823598b1f 100644
--- a/src/synth/synth-stmts.adb
+++ b/src/synth/synth-stmts.adb
@@ -3149,7 +3149,7 @@ package body Synth.Stmts is
D_Arr (Nbr_States - 1) := Build_Const_UB32 (Ctxt, 0, 1);
end if;
- Concat_Array (D_Arr.all, Res);
+ Concat_Array (Ctxt, D_Arr.all, Res);
Free_Net_Array (D_Arr);
return Res;