Tony Duell wrote:
It was the text
for a digital design class I took while an
undergraduate EE at UDel. Unfortunately, the class was so poorly run
that very few people ever got to do any designing or playing with
actual circuits. Personally I consider UDel's EE major with the
"Digital option" at the time (I graduated 1986) to be a miserable
failure in teaching people how to actually *build* anything. I still
I am told it's getting ever worse. EE, CS, and similar courses in UK
universities may well involve not building anything. It's all done on
simulators (cue ARD's rant about the misuse of simulators. Note I said
'misuse'. They are undoubtedly useful when used correctly, which is not
as a replacment for building real hardware in an undergraduate course).
This is going the same way as the change from assembler to high-level
languages with compilers: in this case it is gate-level or at least
register-transfer-level design to VHDL/Verilog "programming" and feeding
the stuff into a "silicon compiler". This was estimatable already when I
worked on algorithms for circuit testing for my PhD in 1992. Most
researchers were still thinking in terms of gates and flipflops, thereby
neglecting that the testing problem is NP-complete for pure
combinational circuits or even worse (!) for FSMs (this is *not* in the
welldefined NP class), and this was even intractable for circuits with
some hundreds to some thousand gates provided the structure was
sufficiently irregular. On the other hand, almost noone worked on
improving the situation that people would turn to "programming" a
circuit - it is no longer obvious what a silicon compiler will produce
out of synthesizable VHDL or Verilog, so testing, validating or even
verifying the correct function is no longer really possible. Silicon
compilers have subtle bugs like every piece of code, and checking that
the produced result is really what the designer wanted is as tedious as
reading and understanding the assembler output of the gcc for the Linux
kernel - noone does this.
It appears to me that a lot of enginnering has now turned into some
high-level-theology: one just has to *believe* that the result is
correct - if not: hopefully find someone else to blame - of course:
mistakes in VHDL source code also exist.
University teachers have a lot work to do to teach students proper use
of tools and correctly typing in sample code - it will divert from the
pure science to then even solder that circuit, or solder at least any
circuit: likewise one nowadays does no longer bootstrap a computer from
a frontpanel by entering some dozens of octal numbers. Just trust the
scientific voodoo factor: we know it can be done - no need to prove this
in practice. Well: until the engineers enter the job world and find out
that they need exactly such low-level debugging skills, provided they
still find one of these rare jobs where they still have to produce some
real hardware.
Holger