FWIW, I love simulation with FPGAs. It usually reveals my beginner
mistakes, and is a pretty powerful tool to help test your design. While
I haven't done enough to demonstrate it, there are differences between
simulation and real hardware.
Altera's synthesis tools are pretty nice and do things like identifying
metastability problems, and telling you approximately how long until
data becomes stable. I was using someone else's design that had an
issue, and it reported 17ns of metastability. For a quick fix, I added
a couple 10ns wait-states, and the design worked immediately. I
understand the right fixes are dual clocked FIFOs, dual flip-flop
synchronizers, etc.
While I create my designs with pen and paper first, the simulation can
show step by step, clock for clock, what's happening, what state I'm
currently in, and for what reason it transitioned.
Because I'm working with two different systems, a 5v TTL system, and a
3.3v LVTTL system (the FPGA), I wasn't able to directly connect them,
but I wanted some verification that my hardware I described is working
as it should.
I attached my logic analyzer to the 5v system and captured data. Then,
after exporting that data and massaging it a little, was able to import
that into my simulation and watch how my hardware (would have) processed
those set of signals.
Very cool -- there was no easy way to test this otherwise. Plus you can
test things like boundary conditions that shouldn't ever show up in real
life --- to see if your error handling works as it should.
On a side note, I like using FPGA boards over just wiring up some chips
together. I can access hundreds of open source modules, modules that
ship from the vendor, macros, primitives, libraries, and so on. I
couldn't imagine what your parts library would have to look like in
order to accomplish the same thing with physical parts.
Plus, it comes down to speed. Using gate-level verilog, I can plunk down
a couple gates, wire in a switch, wire up an LED, whatever in a matter
of seconds. Compile, push the configuration, and play with it. Probably
before your soldering iron heats up completely. (har har)
And then wack the HDL, start something different, use the onboard memory
blocks, PLLs, etc.
I really enjoy this method of design for my hobby.
Keith