SystemC channels connect modules together: serve as wiring (and more).
RTL-style compute/commit is provided by the SystemC signal channel.
// A signal is an abstract (templated) data type that has a current and next value. // Signal reads are of the current value. Writes are to the next value. // This example illustrates: int nv; // nv is a simple c variable (POD) sc_out < int > data; // data and mysig are signals (non-POD) sc_signal < int > mysig; // ... nv += 1; data = nv; mysig = nv; printf("Before nv=%i, %i %i\n'', nv, data.read(), mysig.read()); wait(10, SC_NS); printf("After nv=%i, %i %i\n'', nv, data.read(), mysig.read()); ... Before nv=96, 95 95 After nv=96, 96 96
When the scheduler blocks with no more events in the current time step, the pending new values are committed to the visible current values.