The output portion of the 6-port reg file was the same as the 3-port's output portion, except two extra muxes were added. The input was a little different in that the demux outputs for the 0 set and the 1 set or ports were ORed. This is safe, because if they would be hitting the same register, a hazard will be asserted anyway and the behavior would be undefined. If the two ports are writing to different registers, the OR works out to get the correct registers enabled and the data in the right locations. We also added hazard detection, which was just simple logic. The 6-port was not really much harder to design, but required many more test cases because of hazard detection and the possibility for strange interactions. The design was not harder because, well, see the first question. The differences were simple. Obviously adding more ports is harder, since we could double the number without signifincant modifications, or go even further by adding more levels of 4:1 muxes/demuxes in front of and after the register array to increase the number of registers. To increase the number of ports would require more muxes, more demuxes, and more complex hazard-detection logic.