Question: what is the difference between reg and wire in verilog?
Answer: reg elements can be used as output within an actual module declaration. But, reg elements cannot be connected to the output port of a module instantiation. Thus, a reg can drive a wire as RHS of an assign statement. On the other way round, a wire can drive a reg in as RHS of a procedural block.