#include "systemc.h"

SC_MODULE(READ_LEAF) 
{
    SC_CTOR(READ_LEAF) 
    {
        SC_METHOD(delta);
        sensitive << in;
    }
    void delta()
    {
        cout << "READ_LEAF: change " << (int)in.read() << endl;
    }
    sc_in<sc_int<8> >     in;
};

SC_MODULE(WRITE_LEAF) 
{
    SC_CTOR(WRITE_LEAF)
    {
		SC_METHOD(sync)
		sensitive << clk.pos();
    }
	void sync()
	{
		out = out.read() + 1;
	}
    sc_signal<sc_int<8> >  out;
	sc_in_clk			   clk;
};

SC_MODULE(MIDDLE) 
{
    SC_CTOR(MIDDLE) : reader("reader"), writer("writer")
    {
		writer.clk(clk);     // Bind clk going down the module hierarchy.
        reader.in(my_port);  // Bind my_port going down the module hierarchy.
        my_port(writer.out); // Bind my_port coming up the module hierarchy.
    }
	sc_in_clk			   clk;
    sc_in<sc_int<8> >     my_port;
	READ_LEAF			   reader;
	WRITE_LEAF			   writer;
};

SC_MODULE(TOP) 
{
    SC_CTOR(TOP) : down("down")
    {
		down.clk(clk);    // Bind clk going down the module hierarchy.
        in(down.my_port); // Bind in coming up the module hierarchy.
        SC_METHOD(delta);
        sensitive << in;
    }
    void delta()
    {
        cout << "TOP: change " << (int)in.read() << endl;
    }
	sc_in_clk			   clk;
    sc_in<sc_int<8> >      in;
	MIDDLE     			   down;
};

int sc_main(int argc, char* arg[])
{
    sc_clock clock;
    TOP top("top");
	top.clk(clock);

    sc_start(10, SC_NS);
    return 0;
}

