systemc: Adjust some error messages to match Accellera.
authorGabe Black <gabeblack@google.com>
Thu, 30 Aug 2018 21:51:25 +0000 (14:51 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 3 Oct 2018 00:23:50 +0000 (00:23 +0000)
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>

src/systemc/dt/bit/sc_lv_base.cc
src/systemc/dt/int/sc_int_base.cc
src/systemc/dt/int/sc_signed.cc
src/systemc/dt/int/sc_uint_base.cc
src/systemc/dt/int/sc_unsigned.cc
src/systemc/ext/dt/bit/sc_bit_proxies.hh

index 9ffa505974393757937bbe61bfc031547a39390f..8ffdbe23d8cdd20563b0336f4cae4aa94de2eec6 100644 (file)
@@ -67,7 +67,7 @@ sc_proxy_out_of_bounds(const char *msg, int64 val)
         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());
 }
 
 // ----------------------------------------------------------------------------
index d5b005b933405a70229493dec2c19426f8b93ada..6094086d85e7b2c6921af72b2372bc5017b106a4 100644 (file)
@@ -92,7 +92,7 @@ sc_int_concref_invalid_length(int length)
     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
 }
 
@@ -361,7 +361,7 @@ sc_int_base::invalid_length() const
     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
 }
 
@@ -371,7 +371,7 @@ sc_int_base::invalid_index(int i) const
     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
 }
 
@@ -382,7 +382,7 @@ sc_int_base::invalid_range(int l, int r) const
     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
 }
 
@@ -393,7 +393,7 @@ sc_int_base::check_value() const
     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());
     }
 }
 
index 63a2d033056d786d30672d9eceb6a82b730ea179..1cb71123b98fb9fb0c0c05d2655b0240e1eb79f0 100644 (file)
@@ -123,7 +123,7 @@ sc_signed::invalid_index(int i) const
     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
 }
 
@@ -135,7 +135,7 @@ sc_signed::invalid_range(int l, int r) const
            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
 }
 
index 58e4605c3ba259e3c1edae385d071ed5656c01e3..9d28f778c9e642e26e430e1f27c2ec44e651a6ad 100644 (file)
@@ -91,7 +91,7 @@ sc_uint_concref_invalid_length(int length)
     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
 }
 
@@ -347,7 +347,7 @@ sc_uint_base::invalid_length() const
     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}
 }
 
@@ -357,7 +357,7 @@ sc_uint_base::invalid_index(int i) const
     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
 }
 
@@ -368,7 +368,7 @@ sc_uint_base::invalid_range(int l, int r) const
     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
 }
 
@@ -380,7 +380,7 @@ sc_uint_base::check_value() const
     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());
     }
 }
 
index d2535b6b111dba762fa96cfe62109f3f388d51c3..aca49bac61664d17171955eb6d418d86fe772798 100644 (file)
@@ -131,7 +131,7 @@ sc_unsigned::invalid_index(int i) const
     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
 }
 
@@ -143,7 +143,7 @@ sc_unsigned::invalid_range(int l, int r) const
            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
 }
 
index 0eec8aac07bba5283f4d7c3eaba97a0edd065174..da57f04ac20041642ae56ab8f008ca53e03f1f36 100644 (file)
@@ -1735,7 +1735,7 @@ sc_bitref_r<T>::get_bit(int n) const
     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;
     }
 }
@@ -1747,7 +1747,7 @@ sc_bitref_r<T>::get_word(int n) const
     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;
     }
 }
@@ -1759,7 +1759,7 @@ sc_bitref_r<T>::get_cword(int n) const
     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;
     }
 }
@@ -2068,7 +2068,7 @@ sc_bitref<X>::set_bit(int n, value_type value)
     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);
     }
 }
 
@@ -2084,7 +2084,7 @@ sc_bitref<X>::set_word(int n, sc_digit w)
         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);
     }
 }
 
@@ -2100,7 +2100,7 @@ sc_bitref<X>::set_cword(int n, sc_digit w)
         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);
     }
 }
 
@@ -2199,7 +2199,7 @@ sc_subref_r<X>::check_bounds()
 {
     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()) {
@@ -2668,7 +2668,7 @@ sc_concref_r<X, Y>::get_bit(int n) const
     } 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;
     }
 }
@@ -2683,7 +2683,7 @@ sc_concref_r<X, Y>::set_bit(int n, value_type v)
     } 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);
     }
 }
 
@@ -2692,7 +2692,7 @@ inline sc_digit
 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;
@@ -2726,7 +2726,7 @@ inline void
 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;
@@ -2765,7 +2765,7 @@ inline sc_digit
 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;
@@ -2799,7 +2799,7 @@ inline void
 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;