out
needs to be a reg
type to be assigned in an always block.
-
IEEE Std 1364-1995 and above
output [31:0] out; reg [31:0] out;
-
IEEE Std 1364-2001 and above (recommenced)
output reg [31:0] out;
Other problem, i0
through 3
are in in the sensitivity list of your always
block. This infers complex latching logic.
-
IEEE Std 1364-1995 and above
always @(s0 or i0 or i1 or i2 or i3)
-
IEEE Std 1364-2001 and above (recommenced)
always @* // or @(*)
solved Mips instruction single cycle datapath