summaryrefslogtreecommitdiff
path: root/src/systemc/core/messages.cc
blob: 7d067cfd709c1ea509469fec16d3e8ac9be523bf (plain)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
/*
 * Copyright 2018 Google, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met: redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer;
 * redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution;
 * neither the name of the copyright holders nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Authors: Gabe Black
 */

#include "systemc/ext/core/messages.hh"
#include "systemc/utils/report.hh"

namespace sc_core
{

const char SC_ID_NO_BOOL_RETURNED_[] = "operator does not return boolean";
const char SC_ID_NO_INT_RETURNED_[] = "operator does not return int";
const char SC_ID_NO_SC_LOGIC_RETURNED_[] = "operator does not return sc_logic";
const char SC_ID_OPERAND_NOT_SC_LOGIC_[] = "operand is not sc_logic";
const char SC_ID_OPERAND_NOT_BOOL_[] = "operand is not bool";
const char SC_ID_INSTANCE_EXISTS_[] = "object already exists";
const char SC_ID_ILLEGAL_CHARACTERS_[] = "illegal characters";
const char SC_ID_VC6_PROCESS_HELPER_[] =
    "internal error: sc_vc6_process_helper";
const char SC_ID_VC6_MAX_PROCESSES_EXCEEDED_[] =
    "maximum number of processes per module exceeded (VC6)";
const char SC_ID_END_MODULE_NOT_CALLED_[] =
    "module construction not properly completed: did "
    "you forget to add a sc_module_name parameter to "
    "your module constructor?";
const char SC_ID_HIER_NAME_INCORRECT_[] =
    "hierarchical name as shown may be incorrect due to previous errors";
const char SC_ID_SET_STACK_SIZE_[] =
    "set_stack_size() is only allowed for SC_THREADs and SC_CTHREADs";
const char SC_ID_SC_MODULE_NAME_USE_[] = "incorrect use of sc_module_name";
const char SC_ID_SC_MODULE_NAME_REQUIRED_[] =
    "an sc_module_name parameter for your constructor is required";
const char SC_ID_SET_TIME_RESOLUTION_[] = "set time resolution failed";
const char SC_ID_SET_DEFAULT_TIME_UNIT_[] = "set default time unit failed";
const char SC_ID_DEFAULT_TIME_UNIT_CHANGED_[] =
    "default time unit changed to time resolution";
const char SC_ID_INCONSISTENT_API_CONFIG_[] =
    "inconsistent library configuration detected";
const char SC_ID_WAIT_NOT_ALLOWED_[] =
    "wait() is only allowed in SC_THREADs and SC_CTHREADs";
const char SC_ID_NEXT_TRIGGER_NOT_ALLOWED_[] =
    "next_trigger() is only allowed in SC_METHODs";
const char SC_ID_IMMEDIATE_NOTIFICATION_[] =
    "immediate notification is not allowed during update phase or elaboration";
const char SC_ID_HALT_NOT_ALLOWED_[] = "halt() is only allowed in SC_CTHREADs";
const char SC_ID_WATCHING_NOT_ALLOWED_[] =
    "watching() has been deprecated, use reset_signal_is()";
const char SC_ID_DONT_INITIALIZE_[] =
    "dont_initialize() has no effect for SC_CTHREADs";
const char SC_ID_WAIT_N_INVALID_[] = "wait(n) is only valid for n > 0";
const char SC_ID_MAKE_SENSITIVE_[] = "make sensitive failed";
const char SC_ID_MAKE_SENSITIVE_POS_[] = "make sensitive pos failed";
const char SC_ID_MAKE_SENSITIVE_NEG_[] = "make sensitive neg failed";
const char SC_ID_INSERT_MODULE_[] = "insert module failed";
const char SC_ID_REMOVE_MODULE_[] = "remove module failed";
const char SC_ID_NOTIFY_DELAYED_[] =
    "notify_delayed() cannot be called on events "
    "that have pending notifications";
const char SC_ID_GEN_UNIQUE_NAME_[] =
    "cannot generate unique name from null string";
const char SC_ID_MODULE_NAME_STACK_EMPTY_[] =
    "module name stack is empty: did you forget to "
    "add a sc_module_name parameter to your module "
    "constructor?";
const char SC_ID_NAME_EXISTS_[] = "name already exists";
const char SC_ID_IMMEDIATE_SELF_NOTIFICATION_[] =
    "immediate self-notification ignored as of IEEE 1666-2011";
const char SC_ID_WAIT_DURING_UNWINDING_[] =
    "wait() not allowed during unwinding";
const char SC_ID_CYCLE_MISSES_EVENTS_[] =
    "the simulation contains timed-events but they are "
    "ignored by sc_cycle() ==> the simulation will be "
    "incorrect";
const char SC_ID_RETHROW_UNWINDING_[] =
    "sc_unwind_exception not re-thrown during kill/reset";
const char SC_ID_PROCESS_ALREADY_UNWINDING_[] =
    "kill/reset ignored during unwinding";
const char SC_ID_MODULE_METHOD_AFTER_START_[] =
    "call to SC_METHOD in sc_module while simulation running";
const char SC_ID_MODULE_THREAD_AFTER_START_[] =
    "call to SC_THREAD in sc_module while simulation running";
const char SC_ID_MODULE_CTHREAD_AFTER_START_[] =
    "call to SC_CTHREAD in sc_module while simulation running";
const char SC_ID_SIMULATION_TIME_OVERFLOW_[] =
    "simulation time value overflow, simulation aborted";
const char SC_ID_SIMULATION_STOP_CALLED_TWICE_[] =
    "sc_stop has already been called";
const char SC_ID_SIMULATION_START_AFTER_STOP_[] =
    "sc_start called after sc_stop has been called";
const char SC_ID_STOP_MODE_AFTER_START_[] =
    "attempt to set sc_stop mode  after start will be ignored";
const char SC_ID_SIMULATION_START_AFTER_ERROR_[] =
    "attempt to restart simulation after error";
const char SC_ID_SIMULATION_UNCAUGHT_EXCEPTION_[] = "uncaught exception";
const char SC_ID_PHASE_CALLBACKS_UNSUPPORTED_[] =
    "simulation phase callbacks not enabled";
const char SC_ID_PHASE_CALLBACK_NOT_IMPLEMENTED_[] =
    "empty simulation phase callback called";
const char SC_ID_PHASE_CALLBACK_REGISTER_[] =
    "register simulation phase callback";
const char SC_ID_PHASE_CALLBACK_FORBIDDEN_[] =
    "forbidden action in simulation phase callback";
const char SC_ID_SIMULATION_START_UNEXPECTED_[] =
    "sc_start called unexpectedly";
const char SC_ID_THROW_IT_IGNORED_[] =
    "throw_it on method/non-running process is being ignored ";
const char SC_ID_NOT_EXPECTING_DYNAMIC_EVENT_NOTIFY_[] =
    "dynamic event notification encountered when sensitivity is static";
const char SC_ID_DISABLE_WILL_ORPHAN_PROCESS_[] =
    "disable() or dont_initialize() called on process with no static "
    "sensitivity, it will be orphaned";
const char SC_ID_PROCESS_CONTROL_CORNER_CASE_[] =
    "Undefined process control interaction";
const char SC_ID_METHOD_TERMINATION_EVENT_[] =
    "Attempt to get terminated event for a method process";
const char SC_ID_JOIN_ON_METHOD_HANDLE_[] =
    "Attempt to register method process with sc_join object";
const char SC_ID_NO_PROCESS_SEMANTICS_[] =
    "Attempt to invoke process with no semantics() method";
const char SC_ID_EVENT_ON_NULL_PROCESS_[] =
    "Attempt to get an event for non-existent process";
const char SC_ID_EVENT_LIST_FAILED_[] =
    "invalid use of sc_(and|or)_event list";
const char SC_ID_UNKNOWN_PROCESS_TYPE_[] = "Unknown process type";
const char SC_ID_TIME_CONVERSION_FAILED_[] = "sc_time conversion failed";
const char SC_ID_NEGATIVE_SIMULATION_TIME_[] =
    "negative simulation interval specified in sc_start call";
const char SC_ID_BAD_SC_MODULE_CONSTRUCTOR_[] =
    "sc_module(const char*), sc_module(const std::string&) "
    "have been deprecated, use sc_module(const sc_module_name&)";
const char SC_ID_EMPTY_PROCESS_HANDLE_[] =
    "attempt to use an empty process handle ignored";
const char SC_ID_NO_SC_START_ACTIVITY_[] =
    "no activity or clock movement for sc_start() invocation";
const char SC_ID_KILL_PROCESS_WHILE_UNITIALIZED_[] =
    "a process may not be killed before it is initialized";
const char SC_ID_RESET_PROCESS_WHILE_NOT_RUNNING_[] =
    "a process may not be asynchronously reset while the "
    "simulation is not running";
const char SC_ID_THROW_IT_WHILE_NOT_RUNNING_[] =
    "throw_it not allowed unless simulation is running ";

namespace {

sc_gem5::DefaultReportMessages predfinedMessages{
    {500, SC_ID_NO_BOOL_RETURNED_},
    {501, SC_ID_NO_INT_RETURNED_},
    {502, SC_ID_NO_SC_LOGIC_RETURNED_},
    {503, SC_ID_OPERAND_NOT_SC_LOGIC_},
    {504, SC_ID_OPERAND_NOT_BOOL_},
    {505, SC_ID_INSTANCE_EXISTS_},
    {506, SC_ID_ILLEGAL_CHARACTERS_},
    {507, SC_ID_VC6_PROCESS_HELPER_},
    {508, SC_ID_VC6_MAX_PROCESSES_EXCEEDED_},
    {509, SC_ID_END_MODULE_NOT_CALLED_},
    {510, SC_ID_HIER_NAME_INCORRECT_},
    {511, SC_ID_SET_STACK_SIZE_},
    {512, SC_ID_SC_MODULE_NAME_USE_},
    {513, SC_ID_SC_MODULE_NAME_REQUIRED_},
    {514, SC_ID_SET_TIME_RESOLUTION_},
    {515, SC_ID_SET_DEFAULT_TIME_UNIT_},
    {516, SC_ID_DEFAULT_TIME_UNIT_CHANGED_},
    {517, SC_ID_INCONSISTENT_API_CONFIG_},
    {519, SC_ID_WAIT_NOT_ALLOWED_},
    {520, SC_ID_NEXT_TRIGGER_NOT_ALLOWED_},
    {521, SC_ID_IMMEDIATE_NOTIFICATION_},
    {522, SC_ID_HALT_NOT_ALLOWED_},
    {523, SC_ID_WATCHING_NOT_ALLOWED_},
    {524, SC_ID_DONT_INITIALIZE_},
    {525, SC_ID_WAIT_N_INVALID_},
    {526, SC_ID_MAKE_SENSITIVE_},
    {527, SC_ID_MAKE_SENSITIVE_POS_},
    {528, SC_ID_MAKE_SENSITIVE_NEG_},
    {529, SC_ID_INSERT_MODULE_},
    {530, SC_ID_REMOVE_MODULE_},
    {531, SC_ID_NOTIFY_DELAYED_},
    {532, SC_ID_GEN_UNIQUE_NAME_},
    {533, SC_ID_MODULE_NAME_STACK_EMPTY_},
    {534, SC_ID_NAME_EXISTS_},
    {536, SC_ID_IMMEDIATE_SELF_NOTIFICATION_},
    {537, SC_ID_WAIT_DURING_UNWINDING_},
    {538, SC_ID_CYCLE_MISSES_EVENTS_},
    {539, SC_ID_RETHROW_UNWINDING_},
    {540, SC_ID_PROCESS_ALREADY_UNWINDING_},
    {541, SC_ID_MODULE_METHOD_AFTER_START_},
    {542, SC_ID_MODULE_THREAD_AFTER_START_},
    {543, SC_ID_MODULE_CTHREAD_AFTER_START_},
    {544, SC_ID_SIMULATION_TIME_OVERFLOW_},
    {545, SC_ID_SIMULATION_STOP_CALLED_TWICE_},
    {546, SC_ID_SIMULATION_START_AFTER_STOP_},
    {547, SC_ID_STOP_MODE_AFTER_START_},
    {548, SC_ID_SIMULATION_START_AFTER_ERROR_},
    {549, SC_ID_SIMULATION_UNCAUGHT_EXCEPTION_},
    {550, SC_ID_PHASE_CALLBACKS_UNSUPPORTED_},
    {551, SC_ID_PHASE_CALLBACK_NOT_IMPLEMENTED_},
    {552, SC_ID_PHASE_CALLBACK_REGISTER_},
    {553, SC_ID_PHASE_CALLBACK_FORBIDDEN_},
    {554, SC_ID_SIMULATION_START_UNEXPECTED_},
    {556, SC_ID_THROW_IT_IGNORED_},
    {557, SC_ID_NOT_EXPECTING_DYNAMIC_EVENT_NOTIFY_},
    {558, SC_ID_DISABLE_WILL_ORPHAN_PROCESS_},
    {559, SC_ID_PROCESS_CONTROL_CORNER_CASE_},
    {560, SC_ID_METHOD_TERMINATION_EVENT_},
    {561, SC_ID_JOIN_ON_METHOD_HANDLE_},
    {563, SC_ID_NO_PROCESS_SEMANTICS_},
    {564, SC_ID_EVENT_ON_NULL_PROCESS_},
    {565, SC_ID_EVENT_LIST_FAILED_},
    {566, SC_ID_UNKNOWN_PROCESS_TYPE_},
    {567, SC_ID_TIME_CONVERSION_FAILED_},
    {568, SC_ID_NEGATIVE_SIMULATION_TIME_},
    {569, SC_ID_BAD_SC_MODULE_CONSTRUCTOR_},
    {570, SC_ID_EMPTY_PROCESS_HANDLE_},
    {571, SC_ID_NO_SC_START_ACTIVITY_},
    {572, SC_ID_KILL_PROCESS_WHILE_UNITIALIZED_},
    {573, SC_ID_RESET_PROCESS_WHILE_NOT_RUNNING_},
    {574, SC_ID_THROW_IT_WHILE_NOT_RUNNING_}
};

} // anonymous namespace

} // namespace sc_core