systemc: Add missing sc_interface::register_port, and add calls to it.
authorGabe Black <gabeblack@google.com>
Mon, 1 Oct 2018 09:33:55 +0000 (02:33 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 16 Oct 2018 00:43:35 +0000 (00:43 +0000)
commitb2e1f81f51e630ef4399f24024c82404601f8340
tree8a6be7cafcbc3b36e10daa1c433aed390a48eed7
parenta7f1fe77d64e46e5f9a348b8ae02b3cce3042b98
systemc: Add missing sc_interface::register_port, and add calls to it.

This function is standard and supposed to be on sc_interface, but it
was somehow left out. This change adds it, and makes sure it's called
by the port binding code. The default implementation does nothing, as
it's supposed to according to the spec.

Also note that only the ports farthest from the interfaces are suppose
to call register_port. As the port bindings are completed, we keep
track of whether a port has been bound to another port. If it has, the
source port is farther from the interfaces than the target port (since
it has to go "through" the target port to get to them, and so the
target port should not call register_port.

Change-Id: Ia98f9ff364385fd1699d88a1d99787d205816a08
Reviewed-on: https://gem5-review.googlesource.com/c/13199
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
src/systemc/core/kernel.cc
src/systemc/core/port.cc
src/systemc/core/port.hh
src/systemc/core/sc_interface.cc
src/systemc/ext/core/sc_interface.hh
src/systemc/ext/core/sc_port.hh