The hype surrounding artificial intelligence is finally starting to bear fruit, and it has not been this intense since the 1980s. In the past, computing capabilities simply weren’t up to the task of executing large neural networks with any level of efficiency. Today, the hardware available for implementing embedded AI capabilities, and the neural network architectures that can be implemented in hardware, have advanced to the point that AI capabilities are being built into everything.
For hardware developers, we’ve seen a recent explosion in the capabilities available for embedded systems. So, in the next market cycle, hardware developers should make it their business to understand a bit of machine learning at a basic level. You don’t need to transform yourself into a professional developer or software engineer, but you do need to understand how to implement machine learning at a basic level to ensure you can match software/firmware capabilities to hardware.
Hardware Developer Roles Are Evolving
Over the past several decades, the role of a PCB designer has steadily transformed away from simple PCB layout engineering. Now PCB designers need to thoroughly understand the PCB manufacturing process, front-end engineering and schematic capture, basic electrical testing, and SI/PI/EMI. A basic understanding of embedded development and now machine learning are just the next phase of evolution for hardware engineers.
Because this is all another phase of learning and an expansion of the skillset for designers, it’s important to take steps to learn some machine learning basics. Fortunately, this is one area where eager learners can find a huge number of resources to get started.
Learn Some Basic Coding
PCB designers should have some basic coding skills. They don’t need to know how to build the next Facebook, but they should at least be able to do some basic coding in at least one language. Some of the most popular languages designers should know include:
- Verilog or VHDL (for FPGAs)
Vendor tools for microcontroller firmware development (or Kiel if using an Arm core) overwhelmingly support C/C++. They will also provide the compiler needed to build a .BIN/.HEX file that can be flashed to your device’s memory.
Today, perhaps the most popular language for building applications is Python, and there is support for Python on popular microcontrollers with the MicroPython library. One of the most popular libraries for building machine learning models in Python is TensorFlow Lite, which was designed to provide highly streamlined machine learning model implementations, including instantiations in hardware.
Understand Neural Networks and Accelerators
A basic understanding of what a neural network does, how it is structured, and what impacts its computational time are some of the fundamental points in understanding machine learning. A neural network is just a mathematical structure, where inputs are mapped onto outputs with a set of neurons. The math involved is simple arithmetic, but the number of computations can be very large. The image below shows the basic structure of a neural network.
As a hardware designer working on embedded AI, it’s your job to match models to hardware capabilities, understand how models will accept data, communicate this information to developers, and create the PCBA so that everything works as designed. As part of processor selection, this means you need to know the basic structure of neural networks and how AI accelerators are used to optimize compute for neural networks.
The structure of a neural network is simple; the lower half of the image above illustrates how inputs are mapped to an individual neuron using weights and a constant offset (bias). The important point here is the inputs and outputs, which will put lower-limit constraints on the I/O count in a processor for embedded AI. A hardware designer should be able to take these specs from a developer and determine the processor selection that can optimize cost, reliability, and computational time.
Example Projects to Help You Learn
One of the best ways to understand the steps involved in machine learning is to work through an example project. There are some simple example projects that you can use to help you learn the process involved in machine learning, as well as how input/output data formats are handled. Some of the best sample projects that help build machine learning skills include:
- Sentiment analysis
- Image classification/identification
- Recommendation engines
- Handwritten text recognition
The goal here is to familiarize yourself with the code syntax and process for implementing these tasks in a broader application. All of these projects can leverage well-known datasets that are publicly available on GitHub and Kaggle.
Leverage Vendor Libraries
Semiconductor vendors like STM and Microchip provide example projects and libraries matching some of these areas; other vendors provide their own set of projects and varying levels of community support. These are great resources to help you learn the hardware implementation supporting a neural network, as well as the code itself. There are also open-source projects that can help you get started on an example project.
As a hardware developer, it’s less important to build all of the neural network architecture and modeling. Instead, it is more important to understand the process for implementing machine learning in a broader embedded application. It’s also important to understand the process for compiling, flashing, and testing one of these systems onto a piece of hardware. As you’ll see, training and inference with a neural network is just one of many operations performed in an embedded application.
Design teams working on advanced electronic products can get to market faster with higher quality by leveraging the complete set of system analysis tools from Cadence. Only Cadence offers a comprehensive set of circuit, IC, and PCB design tools for any application and any level of complexity.