diff options
author | Gabe Black <gabeblack@google.com> | 2018-10-07 00:42:04 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-10-16 01:09:20 +0000 |
commit | 4e951d414e1ffc8e17aa4935b2a6421f4fbc1e22 (patch) | |
tree | 55d5b77cfea540ecbc52f7ff4191619ad45edd49 /src/systemc/core/messages.cc | |
parent | 208704b23a9f95f80fb49b3bfce4bccffd128060 (diff) | |
download | gem5-4e951d414e1ffc8e17aa4935b2a6421f4fbc1e22.tar.xz |
systemc: Switch to using predefined messages for core.
Create and use predefined messages for core which match the ones
Accellera uses.
Change-Id: I05b1398933f753946d5917f39d0f39c7cb45ed9f
Reviewed-on: https://gem5-review.googlesource.com/c/13323
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc/core/messages.cc')
-rw-r--r-- | src/systemc/core/messages.cc | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/src/systemc/core/messages.cc b/src/systemc/core/messages.cc new file mode 100644 index 000000000..7d067cfd7 --- /dev/null +++ b/src/systemc/core/messages.cc @@ -0,0 +1,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 |