> 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

Reply via email to