Those messages include an error number in the Accellera implementation.
Add those numbers to gem5 so it's easier to check against golden
reference output for the regression tests.
Change-Id: I35054dd187e86a87eb177f4695d61044c58ce262
Reviewed-on: https://gem5-review.googlesource.com/c/12450
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
ss << msg;
if (val != 0)
ss << val;
- SC_REPORT_ERROR("out of bounds", ss.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", ss.str().c_str());
}
// ----------------------------------------------------------------------------
std::stringstream msg;
msg << "sc_int_concref<T1,T2> initialization: length = " << length <<
"violates 1 <= length <= " << SC_INTWIDTH;
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
std::stringstream msg;
msg << "sc_int[_base] initialization: length = " << m_len <<
" violates 1 <= length <= " << SC_INTWIDTH;
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
std::stringstream msg;
msg << "sc_int[_base] bit selection: index = " << i <<
" violates 0 <= index <= " << (m_len - 1);
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
msg << "sc_int[_base] part selection: " <<
"left = " << l << ", right = " << r << " violates " <<
(m_len-1) << " >= left >= right >= 0";
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
if (m_val < -limit || m_val >= limit) {
std::stringstream msg;
msg << "sc_int[_base]: value does not fit into a length of " << m_len;
- SC_REPORT_WARNING("out of bounds", msg.str().c_str());
+ SC_REPORT_WARNING("(E5) out of bounds", msg.str().c_str());
}
}
std::stringstream msg;
msg << "sc_bigint bit selection: index = " << i << " violates "
"0 <= index <= " << (nbits - 1);
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
l << ", right = " << r << "\n"
" violates either (" << (nbits-1) << " >= left >= 0) or "
"(" << (nbits-1) << " >= right >= 0)";
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
std::stringstream msg;
msg << "sc_uint_concref<T1,T2> initialization: length = " << length <<
"violates 1 <= length <= " << SC_INTWIDTH;
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
std::stringstream msg;
msg << "sc_uint[_base] initialization: length = " << m_len <<
" violates 1 <= length <= " << SC_INTWIDTH;
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here}
}
std::stringstream msg;
msg << "sc_uint[_base] bit selection: index = " << i <<
" violates 0 <= index <= " << (m_len - 1);
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
msg << "sc_uint[_base] part selection: " <<
"left = " << l << ", right = " << r << " violates " <<
(m_len - 1) << " >= left >= right >= 0";
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
if (m_val > limit) {
std::stringstream msg;
msg << "sc_uint[_base]: value does not fit into a length of " << m_len;
- SC_REPORT_WARNING("out of bounds", msg.str().c_str());
+ SC_REPORT_WARNING("(E5) out of bounds", msg.str().c_str());
}
}
std::stringstream msg;
msg << "sc_biguint bit selection: index = " << i << " violates "
"0 <= index <= " << (nbits-2);
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
l << ", right = " << r << "\n"
" violates either (" << (nbits - 2) << " >= left >= 0) or "
"(" << (nbits-2) << " >= right >= 0)";
- SC_REPORT_ERROR("out of bounds", msg.str().c_str());
+ SC_REPORT_ERROR("(E5) out of bounds", msg.str().c_str());
sc_core::sc_abort(); // can't recover from here
}
if (n == 0) {
return m_obj.get_bit(m_index);
} else {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
return Log_0;
}
}
if (n == 0) {
return (get_bit(n) & SC_DIGIT_ONE);
} else {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
return 0;
}
}
if (n == 0) {
return ((get_bit(n) & SC_DIGIT_TWO) >> 1);
} else {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
return 0;
}
}
if (n == 0) {
this->m_obj.set_bit(this->m_index, value);
} else {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
}
}
temp = (temp & ~(1 << bi)) | ((w & 1) << bi);
this->m_obj.set_word(wi, temp);
} else {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
}
}
temp = (temp & ~(1 << bi)) | ((w & 1) << bi);
this->m_obj.set_cword(wi, temp);
} else {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
}
}
{
int len = m_obj.length();
if (m_hi < 0 || m_hi >= len || m_lo < 0 || m_lo >= len) {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
sc_core::sc_abort(); // can't recover from here
}
if (reversed()) {
} else if (n < r_len + m_left.length()) {
return value_type(m_left.get_bit(n - r_len));
} else {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
return Log_0;
}
}
} else if (n < r_len + m_left.length()) {
m_left.set_bit(n - r_len, typename X::value_type(v));
} else {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
}
}
sc_concref_r<X, Y>::get_word(int i) const
{
if (i < 0 || i >= size()) {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
}
// 0 <= i < size()
Y &r = m_right;
sc_concref_r<X, Y>::set_word(int i, sc_digit w)
{
if (i < 0 || i >= size()) {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
}
// 0 <= i < size()
Y &r = m_right;
sc_concref_r<X, Y>::get_cword(int i) const
{
if (i < 0 || i >= size()) {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
}
// 0 <= i < size()
Y &r = m_right;
sc_concref_r<X, Y>::set_cword(int i, sc_digit w)
{
if (i < 0 || i >= size()) {
- SC_REPORT_ERROR("out of bounds", 0);
+ SC_REPORT_ERROR("(E5) out of bounds", 0);
}
// 0 <= i < size()
Y &r = m_right;