diff options
author | Gabe Black <gabeblack@google.com> | 2018-10-08 19:01:38 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2018-10-16 01:13:23 +0000 |
commit | c9f83ec94ba1d7de0cfc46a9a23af2f9e04450e8 (patch) | |
tree | 4993ca5a6892b108ae1bc040a23366ef326f190b /src/systemc/ext/dt/bit | |
parent | e07f7efb75f0f7322d752608eb1cb1e1145b4a98 (diff) | |
download | gem5-c9f83ec94ba1d7de0cfc46a9a23af2f9e04450e8.tar.xz |
systemc: Switch to using predefined messages for datatypes.
Create and use predefined messages for datatypes which match the ones
Accellera uses.
Change-Id: I92dd52f62462b864264217bb81f3ff1dcec020bf
Reviewed-on: https://gem5-review.googlesource.com/c/13331
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc/ext/dt/bit')
-rw-r--r-- | src/systemc/ext/dt/bit/_bit.hh | 1 | ||||
-rw-r--r-- | src/systemc/ext/dt/bit/_using.hh | 14 | ||||
-rw-r--r-- | src/systemc/ext/dt/bit/messages.hh | 52 | ||||
-rw-r--r-- | src/systemc/ext/dt/bit/sc_bv_base.hh | 3 | ||||
-rw-r--r-- | src/systemc/ext/dt/bit/sc_proxy.hh | 11 |
5 files changed, 75 insertions, 6 deletions
diff --git a/src/systemc/ext/dt/bit/_bit.hh b/src/systemc/ext/dt/bit/_bit.hh index b549e2828..503c44df5 100644 --- a/src/systemc/ext/dt/bit/_bit.hh +++ b/src/systemc/ext/dt/bit/_bit.hh @@ -30,6 +30,7 @@ #ifndef __SYSTEMC_EXT_DT_BIT__BIT_HH__ #define __SYSTEMC_EXT_DT_BIT__BIT_HH__ +#include "messages.hh" #include "sc_bit.hh" #include "sc_bit_proxies.hh" #include "sc_bv.hh" diff --git a/src/systemc/ext/dt/bit/_using.hh b/src/systemc/ext/dt/bit/_using.hh index 8bc747957..4d7251a18 100644 --- a/src/systemc/ext/dt/bit/_using.hh +++ b/src/systemc/ext/dt/bit/_using.hh @@ -42,4 +42,18 @@ using sc_dt::sc_bv_base; using sc_dt::sc_lv; using sc_dt::sc_lv_base; +using sc_core::SC_ID_LENGTH_MISMATCH_; +using sc_core::SC_ID_INCOMPATIBLE_TYPES_; +using sc_core::SC_ID_CANNOT_CONVERT_; +using sc_core::SC_ID_INCOMPATIBLE_VECTORS_; +using sc_core::SC_ID_VALUE_NOT_VALID_; +using sc_core::SC_ID_ZERO_LENGTH_; +using sc_core::SC_ID_VECTOR_CONTAINS_LOGIC_VALUE_; +using sc_core::SC_ID_SC_BV_CANNOT_CONTAIN_X_AND_Z_; +using sc_core::SC_ID_VECTOR_TOO_LONG_; +using sc_core::SC_ID_VECTOR_TOO_SHORT_; +using sc_core::SC_ID_WRONG_VALUE_; +using sc_core::SC_ID_LOGIC_Z_TO_BOOL_; +using sc_core::SC_ID_LOGIC_X_TO_BOOL_; + #endif //__SYSTEMC_EXT_DT_BIT__USING_HH__ diff --git a/src/systemc/ext/dt/bit/messages.hh b/src/systemc/ext/dt/bit/messages.hh new file mode 100644 index 000000000..4a8fafa49 --- /dev/null +++ b/src/systemc/ext/dt/bit/messages.hh @@ -0,0 +1,52 @@ +/* + * 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 + */ + +#ifndef __SYSTEMC_EXT_DT_BIT_MESSAGES_HH__ +#define __SYSTEMC_EXT_DT_BIT_MESSAGES_HH__ + +namespace sc_core +{ + +extern const char SC_ID_LENGTH_MISMATCH_[]; +extern const char SC_ID_INCOMPATIBLE_TYPES_[]; +extern const char SC_ID_CANNOT_CONVERT_[]; +extern const char SC_ID_INCOMPATIBLE_VECTORS_[]; +extern const char SC_ID_VALUE_NOT_VALID_[]; +extern const char SC_ID_ZERO_LENGTH_[]; +extern const char SC_ID_VECTOR_CONTAINS_LOGIC_VALUE_[]; +extern const char SC_ID_SC_BV_CANNOT_CONTAIN_X_AND_Z_[]; +extern const char SC_ID_VECTOR_TOO_LONG_[]; +extern const char SC_ID_VECTOR_TOO_SHORT_[]; +extern const char SC_ID_WRONG_VALUE_[]; +extern const char SC_ID_LOGIC_Z_TO_BOOL_[]; +extern const char SC_ID_LOGIC_X_TO_BOOL_[]; + +} // namespace sc_core + +#endif // __SYSTEMC_EXT_DT_BIT_MESSAGES_HH__ diff --git a/src/systemc/ext/dt/bit/sc_bv_base.hh b/src/systemc/ext/dt/bit/sc_bv_base.hh index ffb3c5a03..fdc234db3 100644 --- a/src/systemc/ext/dt/bit/sc_bv_base.hh +++ b/src/systemc/ext/dt/bit/sc_bv_base.hh @@ -54,6 +54,7 @@ #define __SYSTEMC_EXT_DT_BIT_SC_BV_BASE_HH__ #include "../int/sc_length_param.hh" +#include "messages.hh" #include "sc_bit_proxies.hh" #include "sc_proxy.hh" @@ -264,7 +265,7 @@ inline void sc_bv_base::set_cword(int /*i*/, sc_digit w) { if (w) { - SC_REPORT_WARNING("(W207) sc_bv cannot contain values X and Z", 0); + SC_REPORT_WARNING(sc_core::SC_ID_SC_BV_CANNOT_CONTAIN_X_AND_Z_, 0); } } diff --git a/src/systemc/ext/dt/bit/sc_proxy.hh b/src/systemc/ext/dt/bit/sc_proxy.hh index 12e10725a..c20813926 100644 --- a/src/systemc/ext/dt/bit/sc_proxy.hh +++ b/src/systemc/ext/dt/bit/sc_proxy.hh @@ -68,6 +68,7 @@ #include "../int/sc_signed.hh" #include "../int/sc_uint_base.hh" #include "../int/sc_unsigned.hh" +#include "messages.hh" #include "sc_bit.hh" #include "sc_logic.hh" @@ -1261,7 +1262,7 @@ sc_proxy<X>::to_anything_unsigned() const const X &x = back_cast(); int len = x.length(); if (x.get_cword(0) != SC_DIGIT_ZERO) { - SC_REPORT_WARNING("vector contains 4-value logic", 0); + SC_REPORT_WARNING(sc_core::SC_ID_VECTOR_CONTAINS_LOGIC_VALUE_, 0); } sc_digit w = x.get_word(0); if (len >= SC_DIGIT_SIZE) { @@ -1279,12 +1280,12 @@ sc_proxy<X>::to_uint64() const const X &x = back_cast(); int len = x.length(); if (x.get_cword(0) != SC_DIGIT_ZERO) { - SC_REPORT_WARNING("vector contains 4-value logic", 0); + SC_REPORT_WARNING(sc_core::SC_ID_VECTOR_CONTAINS_LOGIC_VALUE_, 0); } uint64 w = x.get_word(0); if (len > SC_DIGIT_SIZE) { if (x.get_cword(1) != SC_DIGIT_ZERO) { - SC_REPORT_WARNING("vector contains 4-value logic", 0); + SC_REPORT_WARNING(sc_core::SC_ID_VECTOR_CONTAINS_LOGIC_VALUE_, 0); } uint64 w1 = x.get_word(1); w = w | (w1 << SC_DIGIT_SIZE); @@ -1306,11 +1307,11 @@ sc_proxy<X>::to_anything_signed() const if (len > SC_DIGIT_SIZE) { if (x.get_cword(1) != SC_DIGIT_ZERO) - SC_REPORT_WARNING("vector contains 4-value logic", 0); + SC_REPORT_WARNING(sc_core::SC_ID_VECTOR_CONTAINS_LOGIC_VALUE_, 0); w = x.get_word(1); } if (x.get_cword(0) != SC_DIGIT_ZERO) - SC_REPORT_WARNING("vector contains 4-value logic", 0); + SC_REPORT_WARNING(sc_core::SC_ID_VECTOR_CONTAINS_LOGIC_VALUE_, 0); w = (w << SC_DIGIT_SIZE) | x.get_word(0); if (len >= 64) { return w; |