What Are the Core Competencies of an FPGA Engineer?

What Are the Core Competencies of an FPGA Engineer?

Source: Lao Shi Talks Chips

Lao Shi, the host of the WeChat public account “Lao Shi Talks Chips”, holds a PhD from the Department of Electronic Engineering at Imperial College London. He is currently a senior FPGA R&D engineer at a well-known semiconductor company, focusing on research and innovation in FPGA data center network acceleration, network function virtualization, and high-speed wired network communication. He has published several research papers on FPGA, high-performance, and reconfigurable computing at top academic conferences and journals.

This question was seen by Lao Shi on Zhihu, where everyone’s answers were “debugging the board”, “debugging”, “hardware implementation”, etc. As an FPGA engineer, Lao Shi could only respond with a polite smile.

What Are the Core Competencies of an FPGA Engineer?

From another perspective, do other hardware engineers not possess the ability to debug boards, debug, or implement hardware? Or why are these considered core competencies unique to FPGA engineers?

Lao Shi believes that this question can actually be extended to the following two points:

  1. What can only FPGA engineers do?

  2. How should FPGA engineers cultivate these abilities?

Next is Lao Shi’s answer.

What can only FPGA engineers do?

Regarding the answers mentioned above, they are indeed essential skills for FPGA engineers, but Lao Shi feels that the essence of this question has not been clearly articulated.

First, Lao Shi’s answer: The core competency of an FPGA engineer is full-stack capability.

Here, full-stack refers to the system-level soft and hardware full-stack capability. It includes the architecture design at the system level, the front-end and back-end processes of chip development, as well as the full-stack process of software design, and even the later project maintenance, technical support, and communication with clients, which are all soft skills. It can be seen as a skill tree that integrates various skills.

Lao Shi casually sketched out the full-stack skill tree of an FPGA engineer, as shown in the figure below. Although it is quite incomplete, it can still serve as a reference. Many people previously mentioned skills such as debugging and analysis, which are actually just a leaf or a branch of this full-stack skill tree.

What Are the Core Competencies of an FPGA Engineer?

Only FPGA engineers can form a team of one, quickly implementing ideas into high-quality soft and hardware systems. This is something that other system architects, ASIC engineers, microcontroller engineers, software engineers, etc., cannot accomplish alone. Compared to these engineers, FPGA engineers have strong individual combat capabilities. Of course, the overly large skill tree is also why many people find FPGA difficult to learn.

Some may ask why other types of engineers do not have this full-stack capability, or in other words, why can only FPGA engineers achieve full-stack? This is related to the characteristics of FPGA itself.

In the figure below, Lao Shi compares the characteristics and main development methods and styles of FPGA, ASIC, and CPU (or microcontroller).

What Are the Core Competencies of an FPGA Engineer?

For traditional IC engineers, their specific responsibilities can be roughly divided into front-end and back-end parts. The front-end is mainly responsible for logic implementation, while the back-end is responsible for the physical implementation of the chip. These two teams usually have their own skill trees and need to cooperate to complete a product-level chip, a process that often takes a long time and involves significant upfront investment and risk.

For microcontroller or CPU engineers, they primarily write applications using high-level languages such as C or C++ based on a given microcontroller architecture and API. While writing high-quality applications does require an understanding of the target chip’s hardware structure, it does not necessitate a deep understanding of the hardware’s logic implementation. Although various applications can be flexibly implemented based on CPU or MCU, due to architectural limitations, they may not achieve good performance in many fields such as artificial intelligence.

FPGA largely combines the advantages of both. In terms of hardware, the underlying architecture of FPGA is fixed, so there is not much back-end work required, but FPGA engineers still need to master back-end skills such as timing optimization, area optimization, and power optimization. Therefore, an excellent FPGA engineer can complete a complete and relatively high-quality FPGA project with their front-end and back-end as well as soft and hardware skills.

On the software side, FPGA can flexibly define APIs and software architectures, and can achieve soft and hardware co-development through built-in processor cores, thus also ensuring application flexibility. Therefore, an excellent FPGA engineer usually also possesses excellent software programming skills.

At the system level, FPGA engineers can customize the overall architecture of soft and hardware, without the obvious architectural bottlenecks present in CPUs or microcontrollers, nor the need to consider too many underlying circuit units and process implementations as in ASICs.

In summary, only FPGA engineers can possess full-stack capabilities in soft and hardware systems, which is also the core competency of FPGA engineers. Moreover, this capability can be continuously enriched and improved through engineering practice. This allows excellent FPGA engineers to not rely too heavily on others and to quickly complete a complete system-level solution by themselves or with a small team.

One of the main reasons many AI startups choose to use FPGA as their hardware platform is precisely because they value the full-stack capability of FPGA engineers, allowing the company to achieve a good balance in performance, flexibility, and scalability with relatively low investment.

Full-stack capability is the complete skill tree that FPGA engineers need. As for the debugging and debug capabilities mentioned by many respondents, they are more about addressing the distribution of skill points within this skill tree. This leads to Lao Shi’s second point:

How should FPGA engineers cultivate these abilities?

Many may ask, Lao Shi, is this full-stack capability you speak of just blowing smoke? In real life, is there really someone who can master all branches of the skill tree? Lao Shi’s answer is that while it is rare, there are indeed such experts, and Lao Shi has had the fortune to work with one in the same team.

Generally speaking, if an FPGA engineer can master a certain aspect of this FPGA skill stack, they can become a big name and authority in that field. For example, as many people mentioned, if you are particularly good at debugging boards and have strong hardware debugging skills, you can take charge of the hardware testing phase of the project. Similarly, if you are excellent at RTL writing, or have strong verification skills, or have a deep understanding of system architecture, you can become an indispensable person in the project.

However, in Lao Shi’s team, there is a leading figure who can handle all aspects from system architecture, module design, verification, system integration, FPGA back-end optimization, hardware testing, software development, and debugging, essentially filling all the skill points on the skill tree.

Such a person is like Alibaba’s Duolong, capable of replacing an entire team, making them indispensable to the company. Therefore, if an FPGA engineer can acquire full-stack capabilities in soft and hardware, it will be the primary competitive advantage for the team and even the entire company.

What Are the Core Competencies of an FPGA Engineer?

As a newcomer, how should one cultivate their FPGA full-stack capability? In fact, the technical foundation of the leading figure was not built in a day; the most important factors are time accumulation, continuous research, and genuine interest. These principles apply to any industry. Initially, one can focus on breaking through a certain branch of the skill tree, but the ultimate goal should be to make the entire skill tree flourish.

Additionally, the soft skills required by engineers are also indispensable, such as the ability to think independently, communication, writing, and good English skills, etc.

I hope the above answers can be helpful to all friends.

What Are the Core Competencies of an FPGA Engineer?

Leave a Comment