1--  Flags for synthesis.
2--  Copyright (C) 2019 Tristan Gingold
3--
4--  This file is part of GHDL.
5--
6--  This program is free software; you can redistribute it and/or modify
7--  it under the terms of the GNU General Public License as published by
8--  the Free Software Foundation; either version 2 of the License, or
9--  (at your option) any later version.
10--
11--  This program is distributed in the hope that it will be useful,
12--  but WITHOUT ANY WARRANTY; without even the implied warranty of
13--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14--  GNU General Public License for more details.
15--
16--  You should have received a copy of the GNU General Public License
17--  along with this program; if not, write to the Free Software
18--  Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19--  MA 02110-1301, USA.
20
21with Grt.Severity;
22
23package Synth.Flags is
24   --  Control name generation.  The same entity can be synthesized in very
25   --  different designs because of the generics.  We need to give unique names
26   --  to these designs.
27   type Name_Encoding is
28     (
29      --  Use the entity name as is for the design name.  Possible for the
30      --  top entity (and also for entities without generics and one config).
31      Name_Asis,
32
33      --  Add generic values or/and an hash.  Results in unique but long names.
34      --  This allows partial synthesis: black-boxes can be synthesized later.
35      Name_Hash,
36
37      --  Just append a unique index.  Create shorter names than Name_Hash,
38      --  but the names depend on the whole design.  So it won't be possible
39      --  to do partial synthesis (ie synthesizing a sub-module, and then its
40      --  parent considering the sub-module as a black-box).
41      Name_Index,
42
43      --  Use the entity name but also add parameters to the module.
44      Name_Parameters
45     );
46
47   Flag_Debug_Noinference : Boolean := False;
48
49   Flag_Debug_Nocleanup : Boolean := False;
50
51   --  Do not reduce muxes in dyn extract/insert chains.
52   Flag_Debug_Nomemory1 : Boolean := False;
53
54   Flag_Debug_Nomemory2 : Boolean := False;
55
56   Flag_Debug_Noexpand : Boolean := False;
57
58   Flag_Trace_Statements : Boolean := False;
59
60   --  True to start debugger at elaboration.
61   Flag_Debug_Init : Boolean := False;
62
63   --  True to start debugger on error.
64   Flag_Debug_Enable : Boolean := False;
65
66   --  Maximum number of iterations for (while)/loop.  0 means unlimited.
67   Flag_Max_Loop : Natural := 1000;
68
69   --  Level at which an assert stop the simulation.
70   Severity_Level : Integer := Grt.Severity.Error_Severity;
71
72   --  Synthesize PSL and assertions.
73   Flag_Formal : Boolean := True;
74
75   --  If true, automatically add a cover on PSL asserts to know if the
76   --  asserted has been started.
77   Flag_Assert_Cover : Boolean := True;
78
79   --  If true, treat all PSL assert directives like assume directives
80   Flag_Assert_As_Assume : Boolean := False;
81
82   --  If true, treat all PSL assume directives like assert directives
83   Flag_Assume_As_Assert : Boolean := False;
84
85   Flag_Verbose : Boolean := False;
86end Synth.Flags;
87