FPGA stands for Field Programmable Gate Array. There are many forms of devices which are field programmable. These are
PAL, PLD, CPLD, and FPGA. These devices differ on their granularity, how the programming is accomplished etc. PAL, PLA and
CPLD devices are usually smaller in capacity but more predictable in timing and they can be implemented with Sum-of-Products,
Product-of-Sums or both. FPGA devices can be based on Flash, SRAM, EEPROM or Anti-Fuse connectivity. The most successful FPGA
devices are based on SRAM. This is because all other memory types are much less dense in terms of area than SRAM. Also some
types of connectivity are One-Time Programmable (i.e. Anti-Fuse) so they are not very flexible. SRAM based FPGAs have no maximum
erase cycle limitations either.
FPGA development is in some sense similar to ASIC development. One can talk about Front-End Tools which can be Schematic
Entry or an HDL (Hardware Description Language). Most common HDLs used for FPGA Design are Verilog and VHDL. After describing
an FPGA design in an HDL, a tool called a Synthesizer which effectively converts Verilog, VHDL into the specific primitives
which exist an an FPGA family. SRAM based FPGAs have Lookup-Tables which can be programmed to implement any function of N
variables (usually 4~5) and Flip-Flops which can be programmed to implement different types of storage (JK, T, Latch, DFF
with set and/or reset etc).
After a device level netlist is generated with synthesis, one uses a back-end tool called Place & Route which is
most of the time supplied by the device vendor (i.e. Xilinx or Altera). In contrast synthesis tools are usually supplied by
third party vendors and even the ones packaged with vendors' toolset usually are restricted versions of third party tools.
Most popular synthesis tools come from Synplicity, Exemplar, Cadence and Synopsys. DSPIA Inc. suggests Synplicity for FPGA
development because of their high quality tools.
Most synthesis tools understand only a subset of HDLs which are synthesizable subsets. Up until recently these subsets
weren't standardized and varied from vendor to vendor. These days there are efforts under way to standardize synthesizable
Verilog and VHDL code. A good site for Verilog or VHDL is EDA.ORG
From the P&R tool, one obtains a file which can be used to download onto an FPGA to program it with the hardware
design described by the original HDL code. This download can be either done through a serial connection, a JTAG cable or programmed
into a ROM and loaded into the FPGA every time power is applied. This is very roughly the flow of FPGA development.