Here at Mythic, our hardware team is designing a cutting edge device to run AI applications that use Deep Neural Networks (DNNs) at low power and in a small size. This chip will allow new, exciting capabilities to be added to products that otherwise wouldn’t be able to without significant compromises.
If you haven’t seen our first blog entry by Tyler Kohn that gives an intro to Mythic and the software team, check it out here.
I’m Paul Toth, our hardware Design Verification (DV) team lead at Mythic, and I’m going to introduce some of the things our hardware team is involved in and reasons why I enjoy being part of this team. Mythic innovates along the entire hardware and software stack, requiring the digital teams to collaborate heavily with the analog and software teams to ensure we meet our user’s needs. The broad scope, cross-functional design decisions, and collaborative atmosphere have allowed me to work on more extensive and interesting problems than I have in other chip companies.
A Mix of Analog and Digital
Much of the excitement around our hardware solution is focused on Mythic’s custom analog hardware block. The attention is for good reason, as this block is what allows the design to do large numbers of calculations for DNNs in parallel and at very low power while also providing a way to store the large number of weights needed in DNNs. It’s true that this technology is a key differentiator for us, however, we also have a significant amount of work to be done in the digital design realm. Since I’m the lead for the team verifying the digital design, I’m going to focus on some interesting aspects for our digital hardware team; future blog posts from other hardware teams will focus on other interesting work we’re doing at Mythic.
What is Design Verification?
The Design Verification (DV) team is responsible for ensuring that the chip functions correctly per the design intent before sending the design off for manufacturing. While our responsibilities extend to verifying the entire chip design, our expertise lies in testing the digital portions of the design and also ensuring that the interaction between the digital and analog components will behave as intended. Typically, the guts of the analog components are verified by teams with expertise in analog design and simulation.
Why Being at a Startup is Great
Since the teams are still small and growing here at Mythic, an exciting aspect of our jobs is that the responsibilities of individuals on the Digital Hardware team are typically broader — as one might expect at a startup — than at larger companies. For example, most of the digital team has been involved in the development and design of the chip’s architecture in some way. And I don’t mean simply listening to the design proposals and weighing in on how they would affect other areas. Most of us have been actively participating in exploration of design decisions. For many of us, this is an exciting opportunity not usually found in similar roles at larger companies.
Some of the objectives we consider while exploring these design decisions include:
- Low power and design simplicity
- Bandwidth and latency requirements for target neural networks
- Flexibility to run a useful variety of DNNs on the hardware
- Software programmability
- Other goals typically found in chip design — area targets, time-to-market, etc.
As you can probably see, some of these objectives require communication between the hardware and software teams. On one side, the hardware team needs to describe the current hardware plans so that the software team can understand how that impacts their work. On the other side, the software team needs to give feedback about the usefulness of hardware features as well as explain how they expect to interface with the hardware.
For the hardware team, this means a lot of on-the-job learning about DNNs. Some of that learning comes from books, papers and online courses, but a considerable amount also comes directly from our software team via presentations and conversations. A deeper understanding of how DNN software applications work helps us design hardware features that meet the above goals. It also helps with developing strategies that focus on testing the hardware design in the ways that the software will actually use it.
A Collaborative Environment
A prime example of how we collaborate and work together across teams occurs when designing the hardware that interacts with the analog accelerator block. The digital team is looking for ways to create hardware that will optimize the use of the accelerator for the most common cases. Optimizing the use of the accelerator hardware has several components. We want to:
- Supply it with data as often as possible
- Reduce the time it takes to operate on that data
- Map the algorithms to use a high percentage of the accelerator’s resources
To achieve these things, we talk to the analog design team to understand the various ways the block can be used and what the impact is on performance and utilization. In addition, the software team presents ideas about how they are thinking of organizing the data flow to use the accelerator. Occasionally, some of the ways the software team is thinking of using the accelerator block are slightly different than what the hardware team is designing optimally for, resulting in new design discussions. These conversations help us design for key use cases while making sure other (and future) usage models are supported in a useful way.
All of this makes for interesting levels of collaboration between teams and creates an environment for broader learning than one might see in other companies and roles. It’s definitely a key reason why I joined Mythic and why I enjoy working here!