We (Eric Clever and Associates) do electronic-design consulting work (usually work for hire) for knowledgeable clients. We specialize in designs that use 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 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.