diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/systemc/core/port.hh | 14 | ||||
-rw-r--r-- | src/systemc/tests/systemc/communication/ports/test05/expected_returncode | 1 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/systemc/core/port.hh b/src/systemc/core/port.hh index 15e7bbed1..217269d86 100644 --- a/src/systemc/core/port.hh +++ b/src/systemc/core/port.hh @@ -33,6 +33,7 @@ #include <list> #include <vector> +#include "base/cprintf.hh" #include "systemc/ext/core/sc_interface.hh" #include "systemc/ext/core/sc_port.hh" @@ -59,10 +60,19 @@ class Port void finalizeFinder(StaticSensitivityFinder *finder); void - addInterface(::sc_core::sc_interface *i) + addInterface(::sc_core::sc_interface *iface) { + for (int i = 0; i < _size; i++) { + if (getInterface(i) == iface) { + std::string msg = + csprintf("interface already bound to port: port '%s' (%s)", + portBase->name(), portBase->kind()); + SC_REPORT_ERROR("(E107) bind interface to port failed", + msg.c_str()); + } + } _size++; - portBase->_gem5AddInterface(i); + portBase->_gem5AddInterface(iface); } void diff --git a/src/systemc/tests/systemc/communication/ports/test05/expected_returncode b/src/systemc/tests/systemc/communication/ports/test05/expected_returncode new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/src/systemc/tests/systemc/communication/ports/test05/expected_returncode @@ -0,0 +1 @@ +1 |