Change-Id: I6c6219732029d5a9db1d317c130086cf2d16a272 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/25410 Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu> Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br> Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu> Tested-by: kokoro <noreply+kokoro@google.com>
245 lines
11 KiB
C++
245 lines
11 KiB
C++
/*
|
|
* 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.
|
|
*/
|
|
|
|
#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
|