In the past when I was designing pure TTL systems it was easier to influence the timing. Or at least, I had a direct means to change the timing. What I did with those systems was to exchange the logic family of ICs in the decoders. By changing them to faster types, I could shorten the propagation time, and by exchanging certain ICs with slower types, I could delay the propagation times. This was in certain areas especially a big influence and could even change the timing so much that the whole system would not be able to even come up with a display or ROM/RAM activity. So far I have designed and built around 5 system mainboards and I have always been able to fine tune the system so the timing is sufficient in all areas.
Recently after working on the 5170 based AT design, I discovered the ALS logic family, and at least, I have now a small supply of chips which I can harvest from the two out of four mainboards which are unstable and function poorly. So I was able to further speed up the logic on my revision 3 XT PC which made a much larger selection of DMA controller ICs work 100% with that system.
Same goes for the 8-bit XT-IDE. Many people have trouble with the XT-IDE. However what many don't realize is that they can fix the problem by changing the timing on the PCB. The high to low byte and low to high byte translations to communicate with the 16 bit drive needs to have very narrow timing to catch the correct data from the bus or present the data to the drive on time.
It's lucky that with the design of this project, as it is, we can at least achieve a POST and initialize the VGA display. This allows further experimentation and doing work to reach the phase of seeing improvements in the areas which show timing related symptoms.
I believe the main problems will be located in the system controller CPLD which generates a lot of control outputs for the system which are the most sensitive to timing.
Unfortunately, we can't change any timing in the quartus schematic diagram in similar ways as I was doing in the previous TTL logic mainboards. This same method was used by many designs I have seen, including the 5170 itself. You can see that certain ICs are from one manufacturer, and other ICs of the same logic type are specifically from a different brand. I suspect, and I speak from experience, that certain manufacturers just made better ICs in their TTL logic productions, and in areas where it counts, only ICs from certain manufacturers can meet the critical timing.
If we would string together a long line of inverters in quartus, what happens is that the compiler will convert these back to a normal wire which would be the pure logic equivalent of that string of inverters. After all, the compiler is designed to reduce the amount of logic usage in the CPLD so that as much logic as possible will be able to fit inside the chip. So using strings of gates will not work because the design is being processed by the compiler which will eliminate those parts.
From what I have read and seen in the program so far is that quartus could be able to work with certain timing constraints as an input. By specifying the desired timing, the quartus compiler will assign logic to achieve that timing window. So it needs a minimum and maximum propagation delay. I will try to find a way to achieve this.
I already changed various settings which can be found in Assignments -> Settings, under the category of "Analysis and synthesis settings" where you can find "More settings". In that list of parameters I found "Auto open drain pins" which I turned to off. After changing this and doing a compile, I found that the open drain on XA0 was gone in the "technology map viewer" from the main tasks tree in the left of the main window of quartus.
Indeed, yesterday I was changing settings in these compile parameters and programming the resulting POF file into the system controller CPLD and already found that certain settings completely stop the system from even coming alive. The databus just remained completely inactive at every power cycle, not even any strange waveforms anymore.
I will investigate and experiment further, which at this time I understand will be the only method to influence the timing of the system. I already tried to delay certain inputs of the system controller CPLD which had some positive effects, but it is simply not enough. The only normal logic gates left on the mainboard are mostly for connecting DMA signals which has no influence on the CPU timing.
If anyone who has an interest in this project is reading this who has some expertise about changing the propagation timing in quartus, I would appreciate it if you step forward and post a message about this subject! The goal of this thread is to get the system out there for anyone who wants it, and to record the historic function of the brilliant 5170 design by completely recreating it in a functional design. For the most part we have recreated the system functionally, but it would be great to achieve the accurate timing which eliminates the quirks still present now.
I am willing to do the hard work myself, no problem, I have invested a year of hard work in the project. I just need to find some kind of hint or lead where and how to find these settings so I can apply them to the compiler. I will keep searching for the solution, and of course I will publish it here if and when I find it so everyone here who is interested also can benefit from that information. Hopefully I don't need to do any major design changes to support the timing changes. I could change the 16M clock input to a different clock source for example if the CPLD would need some kind of high frequency clock signal for adjusting the propagations. This would probably not need any major changes I believe.