ASIC vs. FPGA: What’s the difference?
by Matthew Edwards
What is an ASIC?
The term ASIC is an acronym for Application Specific Integrated Circuit. As the name suggests, an ASIC is an integrated circuit that was designed for a particular use or application, which cannot be reprogrammed or modified after it is produced. An ASIC is designed to the specifications of the product and is not intended for general use. A more common term is SoC (System on Chip), which is an ASIC that acts as an entire subsystem including a CPU, memory and peripherals.
Types of ASIC
ASICs can be categorised by the amount of customisation that can be done. There are three main types of ASIC:
- Gate array ASICs: These ASICs are comprised of standard, predefined silicon layers, where the customisation occurs through manipulating the interconnection between transistors during manufacturing. Gate array ASICs offer the lowest level of customisation of ASICs and are therefore limited in the functions they can perform.
- Standard cell ASICs: The silicon layers of these ASICs are comprised of library components, and the mask layers are customised to achieve the specific function. Standard cell ASICs offer greater customisation than Gate array ASICs. Standard cell ASICs are also the most popular type of ASIC.
- Full custom design ASICs: This type of ASIC is created from scratch, all the way down at the transistor level, which allows it to be designed to match exact specifications.
When are ASICs used?
Since ASICs are designed to a product's specification and can’t be reprogrammed, they are used in products which are intended for permanent applications. Also, due to ASICs being designed to a product’s exact specification, ASICs offer better performance at lower power. Other benefits of using ASICs are that they are able to incorporate significant amounts of circuitry into a single chip. This can reduce the number of components in the chip, as well as reducing the overall BOM (Bill of Materials). As the volumes increase, the per unit manufacturing costs reduce, making the choice of ASIC increasingly financially attractive.
What is an FPGA?
FPGA stands for Field Programmable Gate Array. An FPGA is produced for general use by using configurable logic blocks and programmable interconnects. This means that an FPGA can be programmed and reprogrammed (depending on the type of FPGA) to perform many functions after it has been manufactured.
Types of FPGA
FPGAs can be classified in two ways. Either by their internal architecture or by the programmable technology type. Within those two classifications, there are multiple types of FPGA.
- Symmetrical arrays: These FPGAs are made of rows and columns of interconnected blocks of logic, surrounded by input/output blocks.
- Row-based architecture: Rows of logic blocks alternate with rows of programmable interconnect blocks and the input/output blocks on the perimeter.
- Hierarchical PLDs: The top level is comprised of logic blocks and interconnects. The logic blocks contain logic modules which contain elements of combinatorial and sequential logic.
Programmable technology type
- SRAM-based FPGAs: SRAM (or Static RAM) cells lose whatever data they are storing when the power is disconnected and therefore require configuration each time they start up. To save on configuring the FPGA each time it is booted, it requires some internal flash memory to be included or some kind of external memory.
- Antifuse based FPGAs: These FPGA can only be programmed once. When it is programmed, the antifuse is burned to create the required design but cannot be returned to its original state and therefore cannot be reprogrammed, but due to this, the program is retained when there is no power.
- Flash based FPGA: As the name suggests, these FPGAs use flash for storage so the data is retained when the power is off. There is a limited number of times these can be reprogrammed due to charge build up in the oxide.
When are FPGAs used?
FPGAs are useful for prototyping when designing a product and, once the design is complete, they can switch to ASICs for mass production. The process of moving from an FPGA design to an ASIC design is not trivial. Due to the nature of FPGAs, the verification on these designs tends to be less thorough than on ASICs. Therefore, to move a design from an FGPA to an ASIC can require more work than is initially expected. They are also used when a product requires updating after manufacturing or ongoing flexibility during the product’s lifetime, such as some safety or security applications. An FPGA could also be used if time to market is crucial. Although the per unit cost is high, the hardware can be designed quickly. So, for an expensive or low volume product, an FPGA could be a better way to market.
ASIC vs FPGA: What’s the difference?
What’s the difference? Above, we’ve gone through both ASICs and FPGAs, the different types of both, and when/why they are used. There are many differences between the two but, when deciding which to use, there are some differences that are key to the decision:
- Flexibility: Because FPGAs can be re-programmed, they can be more flexible than ASICs once the product has been manufactured. In field updates to the hardware can minimise the impact of any bugs in the system after production.
- Design Flow: The design flow of ASICs is far more complex which involves several stages from system specification/architecting the design through to tape out and manufacture. These designs tend to take years to reach manufacture from the initial stages. The result of the ASIC design process is a highly specific and efficient chip for the product.
- Cost: Because the ASIC design flow is so complex and time consuming, the cost of designing an ASIC is much higher than an FPGA. Although, once the design is ready for manufacture, the cost per unit of an ASIC tends to be much cheaper and, the larger the production run is, the lower the cost per unit becomes.
- Performance and Efficiency: ASICs are designed for a specific purpose and will have exactly as many gates as is needed. This means it can eliminate wasted space and power, making it more efficient and giving it better performance than an FPGA. Using an FPGA gives you flexibility in exchange for efficiency which, in most cases, is a poor trade-off.
Further information at www.sondrel.com or email firstname.lastname@example.org