Hazard detection is the same as with forwarding : during ID we check whether the register being read is the same as one which will be written by some earlier instruction.
The instruction is delayed until the value it needs is generated :
LW R1,32(R6) | IF | ID | EX | MEM | WB | |||||||||
ADD R4,R1,R7 | IF | ID | stall | EX | MEM | WB | ||||||||
SUB R5,R1,R8 | IF | stall | ID | EX | MEM | WB | ||||||||
AND R6,R1,R7 | stall | IF | ID | EX | MEM | WB | ||||||||
Cycle | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |