1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
-- Debug utilities for synthesis environment.
-- 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, write to the Free Software
-- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
-- MA 02110-1301, USA.
with Ada.Text_IO; use Ada.Text_IO;
with Netlists.Dump; use Netlists.Dump;
package body Synth.Environment.Debug is
procedure Dump_Wire_Id (Id : Wire_Id)
is
W_Rec : Wire_Id_Record renames Wire_Id_Table.Table (Id);
begin
Put ("Wire:" & Wire_Id'Image (Id));
Put_Line (" kind: " & Wire_Kind'Image (W_Rec.Kind));
Put_Line (" decl:" & Source.Syn_Src'Image (W_Rec.Decl));
Put (" Init: ");
Dump_Net_Name (W_Rec.Gate);
New_Line;
Put_Line (" cur_assign:" & Assign'Image (W_Rec.Cur_Assign));
end Dump_Wire_Id;
procedure Dump_Assign (Asgn : Assign)
is
procedure Dump_Value (N : Net) is
begin
if N /= No_Net then
Dump_Net_Name (N);
Put (" := ");
Disp_Instance (Get_Parent (N), False);
else
Put ("unassigned");
end if;
end Dump_Value;
Rec : Assign_Record renames Assign_Table.Table (Asgn);
begin
Put ("Assign" & Assign'Image (Asgn));
Put (" Id:" & Wire_Id'Image (Rec.Id));
Put (", prev_assign:" & Assign'Image (Rec.Prev));
Put (", phi:" & Phi_Id'Image (Rec.Phi));
Put (", chain:" & Assign'Image (Rec.Chain));
New_Line;
Put (" value: ");
Dump_Value (Rec.Value);
New_Line;
end Dump_Assign;
procedure Dump_Phi (Id : Phi_Id)
is
Phi : Phi_Type renames Phis_Table.Table (Id);
Asgn : Assign;
begin
Put ("phi_id:" & Phi_Id'Image (Id) & ", nbr:" & Uns32'Image (Phi.Nbr));
New_Line;
Asgn := Phi.First;
while Asgn /= No_Assign loop
Dump_Assign (Asgn);
Asgn := Get_Assign_Chain (Asgn);
end loop;
end Dump_Phi;
end Synth.Environment.Debug;
|