On May 21, 2020, at 12:21 PM, Jay Jaeger <cube1 at
charter.net> wrote:
On 5/21/2020 9:51 AM, Paul Koning wrote:
...
If the timing in your machine is reasonably sane
and has enough margin, the simulation should be painless and synthesis should produce few
issues. If you have bits that are sensitive to wire or circuit delays, that's
different. Unfortunately, the 6600 is utterly infested with such issues, to the point
that it's hard to see how it ever worked at all -- the timing documented in the
manuals and implied by the wiring can't actually work. A 1410 is probably better,
especially considering that IBM had some senior designers who had experienced timing pain
first-hand and had learned to avoid it. I'm thinking of people like Gerrit Blaauw
(not sure if he was on that project, though).
There may be some such sensitivities, but I doubt there are many - the
1410 was not a fast machine by any stretch of the imagination.
Actually, the situation I am most concerned about in that department is
that the FPGA signals will propagate faster than the original, so a
signal might change state too quickly as compared to the original.
This sort of question is why I found starting with the simulator is helpful. In a
simulation you can specify delays directly. So for my 6600, I have the gate delay (5 ns)
and the wire delays (1.3 ns per foot, in the twisted pair, or 25 ns for coax cables
including tx/rx circuit). Actually, I only include wire delays for "long"
wires; the design clearly uses wires longer than needed in various places for delay
reasons, but my guess is that short wires are not time sensitive. That may be wrong; I
need to run it again without that assumption to see if it helps.
Once the design works that way, I can then see what would happen in synthesis, by
replacing the original stage and wire delays by much smaller values. Any place where that
breaks things needs an explicit register inserted to replace the wire
"register". I know there will be a bunch of those, hopefully hundreds and not
tens of thousands.
For more sane machines like a 1410 or an EL-X8, the same approach lets you determine
whether there is any timing sensitive stuff in the design. If not, then changing the
model delays from "original" to "very fast" would break nothing. If
so, turning off the delays gives you a synthesizable design, or very nearly one.
paul