In this phase of the project, you will introduce basic pipelining to your simulation. You should detect any hazards, but just STALL to solve them; no forwarding, target buffer caches, or other advanced techniques should be used to solve the hazard conditions. It is OK to predict not taken for branches, but nothing more complex than that. You may have structural hazards on multiply and divide, data hazards with any operation that writes a register, and control hazards.
You should be able to build this phase of the project as an extension of your previous multi-cycle design. You may need to add additional pipeline registers (= variables that persist between cycles) to enable the pipelining, and additional result-tracking registers to know when to stall.
Once again, each cycle should start when you read an enter on stdin. In every cycle (even the stalled ones), your robot unit should either print "N\n", or one of the robot actions.
You may choose to revise your robot program to be more efficient given your knowledge of your architecture and stalls. There will be extra credit points again for the winners of the robot battle at this stage.
Continue work in the same CVS directory as phase 1. Update your "readme.txt" to describes how to build and run your program, including a description of any known problems or bugs.