26 minutes ago, Scott Robison said:
Yes, the argument against that thought is that the FPGA is emulating the future yet to be implemented ASIC that implements that same functionality. Really? How do I emulate something that doesn't even exist and has never existed? #lesigh Wouldn't it be more accurate if you're going to insist on that definition that whatever follows is the emulation? At least then there is some logical internal consistency to the argument.
You're on the right track with that thought.
The common phrase is: "software is emulation. FPGA is
implementation." Simply put, an FPGA is a set of logic gates that can be configured to any arbitrary configuration. A CPU is a series of logic gates configured to a
specific configuration. In fact, early mainframe CPUs were also similarly configurable. This is where the term "microcode" comes from: the CPU was not a hard-coded device, like a modern MCPU, but was actually a series of components that ran a program that then ran the computer's machine language instruction set.
We get into splitting of hairs when talking about "simulation" vs "emulation", but the answer there is very simple: the words mean the same thing. The difference is only the context: we more often talk about simulation when discussing physical things and emulation when talking about computers (ie: NES emulator), but the simple fact is that an NES emulator is also an NES simulator. A flight simulator is also an
airplane emulator. The two words are interchangeable and differ only in nuance, not in meaning.
So is an FPGA an "emulator"? No. While it can be used as an emulator, such as when building a core that replicates an existing system, but that's not an "emulator" any more than the Laser 128 is an Apple Emulator. No, we call the Laser 128 an Apple "clone", because it's a hardware implementation of the Apple IIe specification. By the same token, an FPGA is an implementation using programmable logic, rather than fixed logic.