I've implemented the whole computer and have had a great time. I'm a bit puzzled by the interface and the testscript for the program counter (pc) though.
In my cpu implementation the inc input is hardwired to true since the pc always should increase unless it's jumping or reseting. So what is the point of having that input pin?
Second, it is my understanding that the pc should change with every single clockcycle. Therefore I should be able to hardwire the load pin of the register to true. Unfortunately the testscript doesn't quite share my understanding and forces me to add some extra logic here.
My claim is that a tightning up of testscript and compare file would allow a good deal of simplification of the pc.
Here's an example of when you might want to hold the address during a clock cycle.
I made a modification to the Hack CPU to allow it to read data from the ROM. It works by adding an extra cycle to instruction execution whenever a ROM address needs to be read. The first cycle reads the instruction from ROM and the second cycle reads the data from ROM. The PC must remain the same for both execution cycles when this happens.