The source code can be found here.
Here is a screenshot from the execution of the model:
At the top left of the display a new instruction requests a value from register 2. The ROB responds by forwarding the value 72. The new instruction then requests a space in the ROB for its result, destined for register 1. The ROB responds by allocating tag 2.
The instruction is despatched to the data memory and at around time 1400 the result, 40, is passed to the ROB along with its tag 2. Shortly later the ROB writes this value into the register bank in register 1, as originally requested.