In the game of golf, the golfer selects the club, puts the ball on the tee, looks down the fairway, checks the wind, lines up the club to the ball, and checks his stance. He is anticipating the impact of his club on the ball. He does this because he does not want to miss or slice the ball, sending it into the rough.
Similarly, when creating a new hardware design or changing an existing design, you want to anticipate the impact on firmware. I chose the word “anticipate” because it implies a proactive effort. The dictionary lists “foresee” and “prevent” as synonyms. It is not enough to understand the impact or prepare for the impact; instead, you should anticipate, foresee, and prevent the impact.
When designing a new block, group bits into registers according to usage; don’t mix different types of bits in the same register; and limit how many registers need to be accessed by more than one device driver. When making changes to an existing block, make the new version of the block work with the old device driver. Do not move bit locations and register addresses around.
Thus far I have been discussing the avoidance of negative impact. On the flip side, you want to look for positive impact. For example, providing a DMA with chaining capabilities or a larger I/O buffer will reduce the firmware load.
The following story illustrates a positive impact. New monochrome printers were going to use an older, expensive SoC because there was no time or budget to develop a cheaper one. An opportunistic engineer took an existing SoC for color printers and replaced the color video block with the mono video block leaving all else unchanged.
This saved time by avoiding much of the floor planning, timing closures, and verification activities that are typical with such a chip. Blocks that were no longer needed were left in to avoid turmoil. Even an ASCII string was left unchanged so that most test suites, simulation modules, and waveform files could remain unchanged. All pads and pins remained unchanged with the exception that the mono video block now used some of the pins that the color video block was using. This made the chip plug compatible on the printed circuit boards.
He used only three to four engineers and had tape out in 2 months (in contrast to the more usual 15 engineers and 9 months to tape out). When the chip returned from fabrication it booted in 1 day.
Because the lead engineer restricted all but the minimum change necessary, he had a positive impact in producing a new and cheaper SoC using significantly less money and time than normal. This provided a less expensive chip for the new mono printers, thereby saving the company millions of dollars in future parts costs.
The concept of collaboration is also applicable here because one of the best ways to determine if and how a hardware change is going to affect firmware is to talk to firmware engineers. They are best-suited to determine the impact.
Returning to the golf metaphor, the golfer does want to have an impact, but he wants it where the ball flies straight down the fairway. He may not get a hole in one, but he will be headed in the right direction with fewer strokes. As you anticipate the impact, your product development will be in the right direction without wasting time in the rough.
Until my next impacted newsletter…