> On May 20, 2020, at 10:22 PM, Jay Jaeger via cctalk <[email protected]>
> wrote:
>
> As I wrote in my last post, but write here for use as a separate thread:
>
> I'd be interesting in hearing from folks what toolsets they have used
> for HDL (VHDL in particular). I started with Xilinx ISE and then
> graduated to Vivado for later chipsets - unfortunately, Vivado seems to
> be something of a dog, in terms of time to compile HDL and synthesize logic.
>
> JRJ
I have been working, very slowly, on a project analogous to yours: a gate level
model of the CDC 6600 supercomputer.
The source material for this is the wiring lists, which show the module
connections and also the module logic diagrams. I used the diagrams to create
gate-level models for each module, and ran the wire lists through OCR to get
the connections. Those are then run through a simple Python program to
generate the equivalent structural model.
I wanted to start with simulation, and treat synthesis as a later step. So
rather than use any particular vendor tools I used GHDL. That works quite
nicely. Among other benefits, since it generates executable code (it's a GCC
front end) it can call C functions. In my case, the memory and I/O devices are
C models, which the VHDL code talks to. GHDL supports output to GTKwave to let
you see what it is doing. And, at least to some extent, you can use GDB on it.
I haven't done much of that.
The whole process of going from wiring to VHDL is quite straightforward.
Getting the wire lists exactly correct takes some work partly because of OCR
errors and partly because there may be typos in the wire lists. Also in the
6600 case, the wire lists are per chassis and they aren't all the same revision
of the product. :-(
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).
If you have delay-sensitive elements, that will probably require adding extra
stages to the logic, such as additional latches, to produce the required
sequencing with modern logic, which in turn may require extra clock phases.
Here too the 6600 is amazingly painful: I found myself with a 20-phase clock to
get even close to sane operation, in what is typically described as a four
phase clock design.
Others have mentioned Verilog. I have no experience with that. I landed on
VHDL mostly by accident, because I wanted an open source simulator and GHDL
showed up. There may be open source Verilog simulators at this point, I'm not
sure. Avoiding Windows was also a requirement.
paul