A few years ago, I was invited to a high-level design review of a new SoC. The proposed design contained an I/O block that needed features added. I successfully convinced them to replace that block instead with an existing block that had the needed features, had seen silicon, and had a functional driver. Months later on real hardware, bringing up the driver for that block was painless.
This incident illustrates the benefits of early collaboration between hardware and firmware engineers. All too often, though, the early phases of embedded systems projects consist solely of hardware engineers working on the design of the hardware without firmware engineers involved. This practice makes it difficult to produce designs flexible and robust enough to support features that also rely on firmware. By working together, however, hardware and firmware engineers can avoid these problems.
Early collaboration of hardware and firmware engineers (both formally and informally) gets both groups talking to each other. Each group has a different perspective of their respective needs and of the embedded system. Here are some benefits you can expect:
- Reviewing the system requirements together helps reconcile differences and produce a more comprehensive view of the requirements. This helps assure the design meets the requirements.
- Some features can be implemented in either hardware or firmware. Working together, engineers can discuss where the line should be drawn between hardware and firmware, taking into account trade-offs such as performance, flexibility and ease of implementation.
- Collaboration ensures the design of the hardware/firmware interface leads to a smoother integration of hardware and firmware into the embedded product as a whole.
Hardware and firmware engineers reap these and other benefits when they collaborate early.
Best Practice: Start collaboration between hardware and firmware engineers during the initial hardware high-level design phase.
Formal hardware development processes typically include checkpoints with formal reviews and signoffs by key personnel, assuring successful completion of all criteria. Firmware participation in the hardware checkpoints encourages hardware and firmware engineers to review the documentation together and jointly resolve any issues they uncover.
Best Practice: Include firmware representation in reviews and signoffs of hardware checkpoints throughout the life cycle.
Until our next collaboration…
Tags: collaboration, initial design, signoffs

An interesting post Gary. I have distinct memories of being invited to a design review of an ASIC when I was only a few months out of university. The ASIC had a status register which contained only 3 valid bits – and so the designer had done the natural thing and allocated the bits to bit positions 0, 1 & 2. However, the design would require the firmware to read one bit of this register frequently and so I asked if the bit could be allocated to bit position 7 – such that the firmware could use a ‘branch if negative’ instruction rather than having to do a mask and compare. While saving a a couple of instructions sounds crazy today, that was in the days when 2K of EPROM is all you got.
[...] to what Gary has to say in the coming months. Anyway, I’d recently read his posting on Early hardware / firmware collaboration when I found myself looking at a fairly complex schematic. The microprocessor had a lot of IO pins, [...]