All:
I have gotten back on track with my M65C02 soft-processor
after spending a number of weeks working on my
M16C5x soft-microcomputer on the same Spartan 3A board I will use for M65C02 testing.
I have spent my time this weekend optimizing the combinatorial path delays of the bus multiplexers in the top level soft-processor module,
M65C02, the 65C02-compatible processor core module,
M65C02_Core, the address generator module,
M65C02_AddrGen, and the ALU modules:
M65C02_ALU,
M65C02_BIN, and
M65C02_BCD.
I've had some success in this endeavor. I have been able to get the synthesizer to report an improvement in the predicted operating frequency from 55 MHz to 74 MHz. This is a result of improvements in the combinatorial path delays of about 35%. The mapper and the place and route tools have been able to report that the implementation meets a period timing constraint for
73.728 MHz. (Previous release of this soft-processor was restricted to operations less than
64 MHz in a
-5 speed grade.)
To give credit where credit is due, I got the idea for optimizing the bus multiplexers from something that Arlet and EEyE were doing on this
forum. Essentially, all data sources which are not enabled are gated to logic 0, and the data sources are all simply tied into an OR gate at the destination. I had argued for using virtual tri-state busses, but I've been able to get the synthesizer to select a logic 0 as the default value of a virtual tri-state output. (I was going to post a link to their Verilog code in that thread, but I was unable to locate it.)
Thus, I followed their lead, and the results are satisfying. There are other optimizations, particularly in the ALU, that can be made. However, I am going to proceed with verification on my Spartan 3A test board with the implementation recently uploaded to
GitHUB.
Some of you may have downloaded a previous release of this soft-processor from GitHUB. The current release makes no fixes (and I don't think creates any bugs - the almost self-checking testbench stops at the same time as expected), so a re-download is not necessary unless you wish to take advantage of the reduced combinatorial path delays in the address generator and ALU to increase the operating speed of the soft-processor in your application.