One of the most common questions I get is what do electrical/computer engineers who design CPUs and GPUs actually do on a day to day basis and I am usually at a loss for a good response because our field is so incredibly broad and deep.
We’ve advanced so far with current technology that no single person has all of the expertise to produce a modern microprocessor or GPU.
Let that sink in for a moment. I’ve been in this field in industry or academia for fifteen years and there are still large portions of my field that I have to abstract away. Despite this, there are logical ways to group the roles in the semiconductor industry and I’ll do my best to describe what these roles are and what is done.
Roles in the semiconductor industry tend to follow the product life cycle.
Architecture -> Design -> Verification -> Post-Silicon Validation -> Productization
These aren’t hard boundaries and there are definitely cases where a role will span multiple phases but I’d say 85% of the jobs in the industry are attached to one of the phases of the product life cycle.
This is mostly because the creation of a processor is complex and the goals of each phase of the product life cycle are naturally siloed. For example, an architect isn’t going to be an analog circuit expert. An architect will work within his or her domain and then pass on his or her work to a designer that will take care of the analog implementation needs of the design. This is common for each phase of the life cycle. There is so much depth to processor design that it is impossible to be an expert in all areas.
I’ll do my describe what is done in each role, what kind of tools or technologies are utilized, as well as the level of education that is typically required to break into any of these roles.
The Main Engineering Roles In the Semiconductor Industry
Architecture Architects are responsible for the master plan of how a design works and fits together. This can involve re-defining microarchitecture to developing new instructions in the instruction set architecture (think AVX instructions). Architects are trying to improve the efficiency or performance of the microarchitecture by improving the organization of architectural features such as pipeline depth, how many instructions to have in fly at once, implementation of branch predictors, design of the cache hierarchy, and dozens of other complex features that make up a modern processor. If you’d like a glimpse of what architecture entails, watch the first half of Hennessy and Patterson’s Turing Talk.
Architects typically use transaction based simulators such as University of Wisconsin’s SimpleScalar or other modeling tools to prototype and evaluate features. Architecture requires heavy use of low level programming languages such as C or assembly, mastery of one or more instruction set architectures, mastery of the functional units of a microprocessor, as well as a deep understanding of the types of computing workloads that an architecture will face.
Architecture roles are usually forward looking since an architect needs to consider what the computing needs will be several years down the road and design for those future computing needs. Architecture roles typically require a Masters degree plus several years of experience or a PhD. It is possible to work your way up to an architectural role with just a bachelors degree (see Jim Keller) but these days it is very rare.
Design Designers are the implementation arm of chip design. They are the folks that will take an architectural specification and turn it into the physical design. This is achieved through RTL (register transfer logic) for digital designers and transistor level design for analog designers or even a mixture of the two for mixed signal designers. If architects have the macro view of how things work, designers have the micro view. There is usually a great deal of creative freedom in how a particular feature or function should be implemented and its the designers job to figure out what the best course of action is.
Digital designers will make use of HDL languages such as Verilog or VHDL and cycle accurate simulators such as Synopsys VCS. Analog designers will be well versed in analog circuit simulators such as SPICE. Digital designers do consider some analog behaviors such as setup and hold time as well wire delay but can usually abstract away most of the analog behaviors of the transistor and treat them as ideal switches. Most of their focus is on the logical correctness of the design. On the other hand, analog design crosses over into the world of physics since the analog electrical behavior of circuits is determined by material properties of the transistor.
Analog and digital design roles typically require a Masters degree plus several years of experience or a PhD in Electrical and Computer Engineering.
Firmware Firmware is used to coordinate the system level features of a processor and it is an increasingly complex and important part of modern chip design. Modern chips aren’t just CPUs in isolation in anymore, they are SoCs or system on chips that are comprised of multiple specialized blocks that perform critical system functions. For example, memory controllers, USB controllers, video decoders, audio decoders, etc typically co-exist in a modern chip design. The coordination of all these disparate functional blocks is handled by the firmware.
Firmware engineers work with low level languages such as C or assembly and they also have a mastery of real time operating systems. Firmware engineers also have the responsibility of having system level knowledge of how various functional blocks coordinate with one another. They normally communicate heavily with designers and architects to ensure that the right sequences or protocols are implemented in firmware. Also, firmware design usually begins in the architectural conception stage and permeates all parts of the design life cycle. I sandwiched firmware between design and verification because that is where the bulk of the firmware implementation work takes place.
Firmware engineers typically require a Bachelors degree or a Masters degree in Computer Engineering or Computer Science.
Verification As the name states, verification involves verifying that the design works as it was intended to. It’s hard to verify something that isn’t understood so verification engineers have a working understanding of what they are trying to verify. A simple analogy for this would be the verification of a multiplier circuit. A verification engineer will understand what the inputs and the outputs should be as well as some of the intermediate signals. However, the verification engineer doesn’t need to know all of the nitty gritty implementation details of the multiplier to verify the design.
Verification engineers use many of the same simulation tools as designers and will write their test benches in HDL as well. Verification engineers have a deep understanding of the “corner cases” that need to be examined closely. They are also responsible for planning and implementing the verification plan for a functional unit to ensure its correctness.
Verification engineers typically require a Bachelors degree plus several years of experience or a Masters degree in Electrical and Computer Engineering.
Post-Silicon Validation Post-silicon validation or validation engineers prove functional correctness at the post-silicon stage. Post-silicon refers to when prototype designs are manufactured and they hit the labs for “bring up”. When silicon first arrives it doesn’t just magically turn on and work properly. It is the validation team in conjunction with members of design and verification that will perform bring up and make the silicon functional by working through bugs, providing the proper fuse settings, and determining the custom register settings that are needed to make a design operational. This process is complex and normally takes engineering teams weeks to accomplish.
Validation engineers usually have limited visibility of the architecture. Their expertise is centered around using the debug hooks built into the architecture or making use of external tools such as oscilloscopes and logic analyzers to validate proper function. Validation engineers usually have a solid understanding of analog and digital circuit behavior as well as knowledge of scripting languages.
Post-Silicon Validation engineers typically require a Bachelors degree in Electrical and Computer Engineering.
Product Engineering Product engineers are the final phase of the cycle where the design is productized. In order for a silicon design to become a product it must go through a complex screening process that will screen for failures as well as sort the silicon by funcional, performance, or power characteristics. For example, an eight core CPU will be differentiated from a sixteen core CPU at this stage based on the number of cores that pass through functional screening. Product engineers are responsible for creating the high-volume manufacturing screening flows that are used in fabrication.
Product engineers usually have limited exposure to the architecture and understand a design in terms of its manufacturability. Product engineers utilize statistics and apply it to large volumes of data generated in the manufacturing environment. They are responsible for maintaining yields, reducing test time, and ensuring that devices that make it through the screening process are reliable and can be sold as a product.
Product engineers typically require a Bachelors degree in Electrical and Computer Engineering.
This Descriptions Above Don’t do the Industry Justice but It’s a Good Starting Point.
As I mentioned, describing the entire process and all the roles is exceedingly difficult due to the extreme breadth and depth of the field. It would literally take a full textbook to capture everything. Rather, I gave an overview and summary that I think would be consumable to someone new to the industry or to an undergraduate or graduate student that is looking to enter into the field.
As always if you see anything amiss or if you’d like more detail or clarification on anything, reach out and let me know.