We do electronic-design consulting work (usually
work for hire) for knowledgeable clients. We specialize in designs using Field
Programmable Gate Arrays (FPGAs). An FPGA is an integrated circuit (IC). ICs,
also called chips, are the basis of almost all electronic design. There are
many kinds of ICs including: processors, memory and logic. The Intel Pentium
4 found in most desktop computers is a processor. A computer mainboard will
contain a processor, memory chips and logic chips.
The mainboard is an example of a printed circuit
board (PCB). ICs have pins (of one sort or another) that attach to copper pads
on the PCB. The copper pads and the copper traces that connect the pads to
each other are ‘printed’ on the PCB by etching away copper. The pads and traces
define the interconnect circuit, hence the term: ‘printed circuit board.’
PCBs are fabricated (fabbed) by special purpose PCB houses, which take the designer’s
‘artwork’ and etch boards from it. An assembly house, on the other hand, takes
a bare PCB and attaches (solders) ICs to it.
An electronic-design consulting firm that specializes in FPGA design when it
is working for a client performs the following tasks:
- FPGA selection
- Support-IC
selection (FPGAs usually require some additional ICs on the board with them
in order to perform the required task)
- Design the IC interconnect for the PCB.
Here you are ‘drawing’ the ‘lines’ that connect the IC pads to each other.
The result is called ‘the schematic’ and is a logical picture of the desired
PCB. Each line later becomes the logical basis for a trace on the PCB. This
task is done using a computer aided design (CAD) tool called a ‘schematic
capture’ program.
- ‘Layout’ the PCB. Here you take the ‘netlist’
output from the schematic capture program and use it to generate a physical
picture of the PCB. This physical picture is the ‘artwork’ that the PCB house
uses to etch the board. This task is done using a CAD tool called a ‘PCB
layout’ program.
- Send the
PCB artwork out to a PCB house to be fabbed.
- Send the
resulting PCBs to an assembly house for IC attach.
- Meanwhile, generate the FPGA logic design
using either schematic capture tools or hardware development languages (HDLs)
or both. We use both of the standard HDLs: Verilog and VHDL. But we prefer
Verilog. We also use schematic capture and we are very partial to floor planners
(a floor planner is to FPGAs as PCB layout is to PCBs). Without a floor planner
you are at the mercy of automatic place and route, which works only marginally
better in FPGAs than it does in PCBs. The tools used are usually a combination
of general purpose and vendor specific.
- Simulate. If you are working with anti-fuse
FPGAs (one time programmable – OTP) simulate until you never want to see another
simulation run again in your life. With OTP FPGAs the entire success of the
project depends on the quality of your simulation test bench (the HDL code
you write to test the design). With SRAM and FLASH based designs you have
more leeway in you simulation efforts.
- Debug the
resulting design – a process that is far too painful to discuss here.
- Deliver
a working prototype along with all CAD files and supporting documentation
to the customer.
- Bill the
customer (final billing – i.e., last progress payment unless, joy of joys,
it is a time and materials contract in which case you’ve been paid every week
or whatever).
And finally, why FPGA design? One of today’s FPGAs
can replace an entire PCB worth of logic from five years ago. And that includes
five-year-old FPGA based designs.