OK, the problem is that you assert the reset for 1 second. At 1400ms (the second RESET), the read_en signal is still true, so the code attempts to read from an empty fifo, and hangs (as you're using a blocking read),
P.S. One fix is to change the structure to
i.e. only go on to attempt a read or write if the reset is not enabled.
you need a default constructor (a constructor without arguments) in your case.
In the module, you create an instance of 'decimal' without explicitly initializing it in the constructor of 'seprate_digit'. Theoretically, you could use an initializer list:
: in("in"), clk("clk"), d("d") // port names -> recommended practice
, decimal(0,0,0,0) // <-- explicitly initialize decimal member
Since you use 'decimal' as a signal type, you'll definitely need a default constructor. This could look like the following
/* : dec0(), dec1(), dec2(), dec3() */ // optional, as sc_int has an explicit default constructor
Secondly, you'll need to define more helper functions to use sc_signal with your own data types, see http://www.doulos.com/knowhow/systemc/faq/#q1
Greetings from Oldenburg, Philipp
NB: Why do you post the question three times in 10 minutes? ;-)