Is the forwarding (highlighted by the blue arrow) necessary? I figured the add instruction would successfully write back to register before the OR instruction reads it.
add
is writing to register in the same step that or
is reading from register, so there's no guarantee that the correct value will be safely in the register at the point or
sees it--add
is allowed one full clock cycle to make that write and have the signals propagate throughout the hardware. By contrast, xor
is safe because it reads from r1 in the next clock cycle after add
's write.