Why should you become an FPGA Engineer?

Pondering a career as an FPGA Engineer? Then this is the blog post for you!

FPGA Development

Do you enjoy the logical side of programming but are missing the closer connection to the hardware world and being able to work in a more visual way? FPGA Engineering might just be for you!

I often think of FPGA work as the intersection of creativity and logic due to the fact we are now inferring hardware which can be optimized in many different ways to meet our needs. Being able to see written HDL and have a rough idea of the hardware being generated as you go is a fantastic and unique feeling which neither pure software or hardware development activities provide. In many ways it offers aspects of both for a more dynamic and fresh way of working.

Let's take a simple example of a system with a single output which is equal to the AND'ing of 2 inputs when the 3rd input is cleared or the OR'ing of the 2 inputs when the 3rd input is set. We could represent this in the following two ways:

Using a MUX to switch smaller LUT's vs a single LUT implementing both depending on SEL

A typical question FPGA Engineers will be asking when evaluating options is whether we are optimizing for area or speed. If we are working on a very high speed design then it would be more advantageous to go with the first option and add registers after each of the LUT outputs as the propagation delay through a lower input LUT is lower which comes at the expense of more resources to still achieve the above output (area). This again nicely illustrates the visual nature of the work where we think of the datapaths flowing through a design from input to output between flip flops which hopefully meets timing! One can imagine that at high levels of FPGA utilization the work can begin to look similar to carrying out a PCB layout to ensure everything still fits and meets our constraints. Once again another visual aspect to the work bringing in aspects from hardware.

Digital Signal Processing, DSP, is an enormous part of almost every FPGA design with digital filters for example being a common required building block. This is another aspect to working with FPGA's which keeps things varied where we can spend time characterizing filters using tools such as MATLAB which we then implement within the FPGA using DSP blocks.

FPGA Debugging

Do you enjoy deep diving into complex bugs which may or not be intermittent or difficult to reproduce in nature that are inspected in a visual way? FPGA Engineering might just be for you!

Investigating FPGA bugs is more often than not a non-trivial task! This harkens back to the fundamental difference between traditional software development and FPGA's where everything in the FPGA world runs in parallel where the most interesting things happen at clock edges.

For simple bugs such as the design not meeting a counter specification the test bench can simply be used to reproduce the bug by updating assertions and/or viewing the timing diagram. For more complex issues relating to a sequence of events Integrated Logic Analyzers, ILA's, are used to record signals upon triggers for viewing in a timing diagram.

Inserting an ILA into the Block Design
Timing diagram using an ILA

In Summary

  • FPGA Engineering is complex and rewarding with incredibly varied work nicely blending creativity and logic with many visual aspects during both development and test
  • Demand for FPGA Engineers is continuing to grow at an enormous rate with supply being unable to keep up
  • Remember, a career is a long spanning endeavor. You may find yourself moving into FPGA Engineering from Embedded Software after a few years instead of beginning as an FPGA Engineer for example or move away from FPGA Engineering into becoming a Field Application Engineer, FAE, where many of the skills will come in real handy