Hi all, I created the ALU all the way including the flags, and felt pretty good about it. I ran it with ALU.tst and it passed. Simply for the sake of completeness, I decided to run it on ALU-nostat.tst. It failed on only the two lines below:
The operations here are x-y and y-x. So I assumed it was an error in either my negation or addition logic. What was confusing was that it passed prior separate negation and addition tests.
Anyway I walked through every step by hand, and got the correct answer, so I felt the idea was solid, most likely then a coding error. Since I walked through every step, I was able to compare the internal pin values that I got by hand with the hardware simulator, and saw that the error was occurring after the addition step. I went through my ALU implementation and everything seemed correctly hooked up.
So, despite my Add16 chip passing it's test when I made it, I moved it from the project file, forcing the ALU implementation to use the built-in Add16. The ALU then passed all the tests.
So I went back to my Add16 chip and found a single typo (carrying the wrong bit in one of the adders). Apparently I had made a mistake in a particular area that had not tripped any tests up to this point. So now that's fixed and everything works.