What Is FPGA Development?
FPGA Development is the custom design of an FPGA to develop an IC with the desired functionality.
FPGA stands for “Field Programmable Gate Array” and is an integrated circuit whose functions can be programmed on site. FPGA Development consists of a large array of circuits such as arithmetic units, memory, registers, and simple logic circuits.
Without any modification, it is nothing more than an array of circuits with no functionality, but by combining the circuits inside and designing the logic circuits, the developer can freely provide the functionality he or she desires.
Similar to FPGAs, there are ASICs (Application Specific Integrated Circuits) that can be customized to the user’s wishes. However, these ICs are manufactured after custom functions are designed. In addition to the time-consuming design and development process, the functions cannot be freely changed in the field once the product has been manufactured.
Uses of FPGA Development
FPGA Development is essential for the development of electronic devices and boards, including ICs. FPGA Development is used in the development of electronic devices for telecommunications, automotive, medical devices, consumer electronics, and all other fields.
FPGA Development benefits from the ability to program the necessary functions into FPGAs, actually place them in electronic devices for verification on actual devices, and provide feedback on the results.
Another disadvantage is the higher production cost compared to ASICs. There has been a tendency to use FPGAs during the FPGA Development stage and put ASICs on the final product after the design is finalized. Recently, however, improvements in semiconductor manufacturing technology have led to higher integration and lower cost of FPGAs, and more and more FPGAs are being used in final products.
Principles of FPGA Development
The flow of FPGA Development is basically the same as that of other IC development such as ASICs, except that in ASIC development, the manufacturing department is responsible for the prototyping process, whereas in FPGA Development, the FPGA developer is also responsible for the process of implementing the program on the actual chip, which is equivalent to the ASIC prototype.
The FPGA Development flow includes the following processes:
1. Specification Determination
The “specifications” such as functions to be implemented in the FPGA, interfaces with other components in the system in which the FPGA will be embedded, timing constraints, etc. are compiled, and the FPGA that meets the specifications is pruned.
2. Logic Circuit Design
Logic operations are described using hardware description languages such as VHDL and Verilog-HDL.
3. Functional Verification
Functional simulation is performed to verify that the logic circuit behavior is correct.
4. Compilation
From the HDL description, logic expressions consisting of gates on the FPGA are generated, and the logic expressions are further optimized to generate a netlist. Then, each circuit is placed on the actual FPGA and the wiring between circuits is determined. This series of processes is called compilation.
5. Timing Verification
Based on the placement and routing information, the physical delay time is simulated to confirm that the timing constraints are satisfied.
6. Downloading
The generated circuit data is downloaded to the FPGA. Through this process, the FPGA, which was just an array of gates, is transformed into the circuit desired by the FPGA Development.
7. FPGA Operation Verification
FPGAs are operated to verify that there are no functional defects or performance deficiencies. There are two types of operation verification: one is to set the FPGA on an evaluation board and run an evaluation simulation, and the other is to actually mount the FPGA on a system and operate it. The actual device verification is suitable for FPGAs with large gate sizes because of the short verification time required.
Other Information on FPGA Development
1. Programming Language For FPGA Development
HDL, which is used to write FPGA code, is a low-level language, so it used to be difficult to write code for FPGAs unless you are a hardware engineer who can design circuits. Now, with the use of integrated software platforms, FPGA Development can be done in another programming language without knowledge of HDL.
The platform translates high-level languages into low-level languages to enable FPGA functionality; it is also possible to accelerate FPGAs using pre-trained deep learning models created with the Tensorflow and Pytorch frameworks.
2. Hardware Efficiency
In devices such as ASICs, jumping between programs and memory is a method that uses power for storing and retrieving data and reduces real-time performance; in FPGAs, there is no need to jump between programs and memory, and efficient data storage and retrieval is possible. FPGAs can also offload power-hungry tasks.