Let’s get your ASICs, FPGAs and DSPs right

Fan+tubelight, check. Laptop, check. Music, check. My youtube is belting out some Raghu Dixit. To hear his story in first person, click here.

Time to restate some tiny facts that go a long way in day-to-day life or otherwise. Before we go into the details of ASICs, FPGAs and DSPs, let’s take a step back and set the stage for this post, then address them individually, their applications, and how one can be used in the field of the other.

Oh boy, this is going to be a long one.

There are two broad categories of designs from what I know :

  • Full custom design
  • Semi custom design

Full custom designs require each cell (gates and flops) of the chip to built from a layout level. In semi-custom design, each cell is a step above transistor level of abstraction. They are in the form of  standard cells whose timing requirements, power requirements and physical structure is characterized by .libs, .libs and .lefs+.gds respectively. Standard cells are usually provided by fabrication units, they give out the .libs, .lefs, .gds, the design rules and others. These standard cells are products of full custom designs. Semi-custom design do not start from scratch but are limited by the standard cells available, where as a full-custom design begins with nothing and grows into an IC or a standard cell or an IP (intellectual property). Full custom design offers more flexibility and demands for more time. Performance is not limited at all in a full custom design, high performance is usually guaranteed here.

Apart from cells, there is a special something called IPs (intellectual properties). They are proprietary designs made and sold in either RTL/netlist form (soft IPs) or as a complete block whose boundaries are fixed (hard IPs).  Clock and power/ground are the enablers. Data is what makes all this worthwhile.

Yes, the stage is set. Let’s get back to what the title promises.

FPGA stands for field-programmable gate array. It is made of logic blocks, interconnects and input/output ports that are programmable by using a hardware language like verilog or VHDL and a tool like QUARTUS II or Xlinx ISE. The architecture design, HDL coding for that design and verification is done by an engineer/student, rest of it is tool-dependent and FPGA dependent. The synthesis, place and route, and mapping onto the FPGA is done by tool depending on the constraints set by the user, like operating frequency. FPGAs fall under semi-custom designs.

FPGA architecture

FPGAs are great for a bunch of things. Firstly, they are programmable meaning the functionality can be changed as and when it is required. Secondly, many design can be tested in a single FPGA (at different times of course). Thirdly, because of its programmablity, upgrades and updates are easier. Fourthly, they are great learning/training tools for students and going-be RTL designers/verification engineers to develop HDL codes for architectures that can be directly implemented on hardware. These reasons make FPGAs important and marketable although they can be quite expensive.

Application Specific Integrated Circuit

ASIC is a short form for Application Specific Integrate Circuit. As the name hints, they are ICs made for a specific purpose or functionality. The functionality once fixed almost never changes. ASICs are mainly commercially ICs to be produced and sold in large numbers. The front-end RTL design remains the same as that of a FPGA, what happens after that is a different story all together. The RTL design is converted into a gate-level netlist, this process is called synthesis. If it is a full custom design, the standard cells are built to be used as gates+flops, otherwise the right standard cell libraries and lefs are used depending on the process node and foundry.  Logic is built and incorporated into the netlist next to test the structure of the silicon. Placement of the elements, routing of signal, power and clock to the elements and timing closure in different corners are done. Timing is always checked after very stage as every stage affects the timing in some way. The correct packaging is chosen and dies are placed in them. Few samples are first tested before mass production and then they are ready for production. ASICs are essential for any economically viable product. It finds applications in numerous fields like networking, storage, computing, telecommunication, defense, consumer-electronics and others.

DSP are digital signal processors. Ever wondered how your mobile can take in your voice and convert it to a form transferable across space (by that I don’t only mean the outer space), wonder no more it is possible all thanks to the DSP processor inside your mobile. It has a bunch of multiply and accumulate units with abilities to process on multiple data at the same time, essential for filtering, and DMAs for quicker streaming of video/audio. Some DSP processors come with data converters as well. It is an alternative to a FPGA, picked when the task is computationally intensive. Nowadays DSP processors have become more of an IP core rather than a chip.

DSPs

The functionality of a MAC unit available on a DSP can be modeled on a FPGA without the need for hardware multipliers by using LUTs or CORDIC algorithm. These methods restrict the accuracy of your data and the number of clock edges required to process a single sample restricts the speed ( or number of sample you can work on at a time AKA your sampling frequency ). When accuracy and computation gets the best of your requirements, a DSP clearly wins over a FPGA. Both DSP and FPGA can be put to use during the making of an ASIC. FPGA enables quick prototyping for RTL design and DSP gives an ASIC abilities to do digital signal processing in the form of IP cores.

Everything serves its purpose and now you can appreciate their versatile roles.

Do leave a comment if any terms used here didn’t make sense or if you have any questions on your mind. Please provide suggestions for any VLSI topic/topics on which you want some amount of clarity and I will try my best to bring out a post addressing it. Thanks for reading. Have a great one !