Book: Hardware/Firmware Interface Design

Gary has authored a book with practical concepts that can be used while designing ASICs, ASSPs, SoCs, and FPGAs which will solve many firmware programming issues and help avoid chip respins. It contains over 300 best practices, some of which have been discussed in his newsletters. These best practices help get your products and projects completed sooner and more effectively!

Whether you are primarily a hardware engineer or firmware engineer, this book will help you optimize the hardware/firmware interface within your project or product. Key topics covered include register layout, interrupts, timing and performance, aborts, and errors. Real-world case studies help to solidify the principles and best practices and focus you on cleaner designs, shorter schedules, and better implementations.

This joke illustrates a dynamic discussed in the book. How many firmware engineers does it take to change a light bulb? Excuse me, that’s a hardware problem. How many hardware engineers does it take to change a light bulb? Before I answer that, is it possible to work around that problem in firmware?

Available At

Cover of the book, Hardware/Firmware Interface Design

Before and After

What a hardware/firmware product may have looked like before, compared to what it could look like after following the principles and best practices in the book.

Car with lots of hacked up workaroundsNice, shiny, red car
  • Robert L. Glass
    I couldn’t find any fault with it (that’s a testimonial to its common-sense content).
    Robert L. Glass
    The Software Practitioner, March-April, 2014, Volume 24, No. 2, pg. 6.
  • Christopher Svec
    ...I think both [hardware engineers and firmware engineers] should read this book.
    Christopher Svec
    Said Svec: Book Review: Hardware/Firmware Interface Design
  • Michael Barr
    ...the price of the book will pay off in fewer [FPGA] revisions. ...this well-written book will serve as the launching pad...
    Michael Barr
    Amazon.com: Buy This Book for the Engineers Over in FPGA Design!
  • Tani Aguayo
    I learned more over the weekend with this book, than in years of messing around the lab trying to get things to work. Thanks Gary Stringham, the engineers in the trenches salute you!
    Tani Aguayo
    LinkedIn Post
  • Intel
    Intel Recommended Reading List On Intel's Recommended Reading List, 2011-2014.
    Intel
  • William N. Robinson
    The book can help engineers minimize delays and glitches in their designs...
    William N. Robinson
    IEEE Computer magazine, May 2010, page 73: Bookshelf
  • Dennis L Feucht
    I did not have to read too far into this book to realize that the author has extensive experience... ...it is the kind of knowledge useful to analog engineers who work on products [that need to interface] with microcontrollers...
    Dennis L Feucht
    EN-Genius Network: Book Reviews

Table of Contents

  1. Introduction
    • What Is the Hardware/Firmware Interface?
    • What Is a Best Practice?
    • “First Time Right” Also Means …
    • Target Audience
    • Project Life Cycle
    • Case Study
  1. Principles
    • Seven Principles of Hardware/Firmware Interface Design
  1. Collaboration
    • First Steps
    • Formal Collaboration
    • Informal Collaboration
  1. Planning
    • Industry Standards
    • Common Version
    • Compatibility
    • Defects
    • Analysis
    • Post Mortem
  1. Documentation
    • Types
    • Document Management
    • Reviews
    • Content
    • Registers
    • Bits
    • Interrupts
    • Time
    • Errors
    • Information
  1. Superblock
    • Benefits of a Superblock
    • Consolidation
    • I/O Signals
    • Parameterization
  1. Design
    • Event Notification
    • Performance
    • Power-On
    • Communication & Control
  1. Registers
    • Addressing
    • Bit Assignment
    • Data Types
    • Hardware Identification
    • Communication & Control
  1. Interrupts
    • Design
    • Pending Register
    • Enable Register
    • Optional Registers
    • Interrupt Module Review
    • Triggering on Both Edges
    • Using the Interrupt Module
  1. Aborts, etc.
    • Definitions
    • Halts
    • Resets
    • Aborts
  1. Hooks
    • Designing for Hooks
    • Peek …
    • … and Poke
    • Monitor
    • More Hooks
  1. Conclusion
    • Key Points
    • Benefits
    • Seven Principles of Hardware/Firmware Interface Design
    • It Finally Works! Let’s Ship It!
  1. Deleted: Firmware – Deleted from the printed book due to space constraints. HwFwChapterDeleted.pdf.
  2. Appendix A: Best Practices – The best practices are also available electronically. HwFwBestPractices.xls, .csv, or .txt.
  3. Appendix B: Bicycle Controller Specification – Sample document discussed in Chapter 5 available electronically. HwFwBikeBlockTemplate.doc.
  4. Deleted: Appendix C: Using This Book in a University – Deleted due to space constraints. HwFwBookUseInUniversity.pdf.
  5. Appendix D: Glossary
    Index
  • Page ix, Contents, “Appendix C: Using This Book in a University … Available at elsevierdirect.com/companions/9781856176057 or garystringham.com/hwfwbook”
  • Page 4, Section 1.1.1, “that allow the same device driver to work on with any brand.”
  • Page 16, Section 1.6.1, “I had the mono video device driver running on working with it in less than a week.”
  • Page 38, Section 3.2.3, “Getting firmware to run on with the developing chip.”
  • Page 108, Section 5.7, Explanations about interrupt concepts in this section are discussed in detail in chapter 9.
  • Page 130, Section 6.1.3, “Huge amounts of efforts are spent to eek eke out every fraction.”
  • Page 208, Section 8.4, “This section will discuss ways of helping firmware identify the hardware it is running on.”
  • Page 229, Section 9.1.3, “common in old X86 platforms, and is now part of the X86.”
  • Page 231, Section 9.1.5, “and the CPU that latched latches the source signal assertion.”
  • Page 249-250, Section 9.5.1, Best practices are that there should be at least two flip-flops for the Clock Synchronization of Signal In. The text, the schematic, and the Verilog code should be updated accordingly.
  • Page 273, Section 10.4.3, “Unity mono video block received receives an abort command.”
  • Page 283, Section 11.2.3, “A DMA controller is often use used by blocks.”
  • Page 299, Section 11.6.1, The last sentence refers to a chapter that was removed because of space constraints. It is available here HwFwChapterDeleted.pdf.