A design team as a group can benefit from having at least one copy of FPGA Design - Best Practices for Team-based Design in its library.
Editor's Note: See also an example chapter from this book (Chapter 12: Timing Closure)
The introduction to FPGA Design – Best Practices for Team-based Design
by Philip Simpson of Altera, promises the book will "help you adopt the best design methodology to meet your requirements."
It fulfills that promise by providing not only detailed guidelines for critical aspects of FPGA design but also guidance on related topics such as the interaction between the FPGA and circuit board design, interaction with software, and the design effort's management demands. It's not a book to be read once and shelved, however, nor is it strictly for one individual. It offers benefits to the entire design team.
The book is a bit like a gold mine - not the proverbial mine implying easy access to untold riches, though, it's like a real-world mine. Valuable stuff is in there, but you'll have to do some digging to get it out. There are several rich veins to follow and some isolated nuggets to pick up. The rest of the ore, however, needs some processing because the parts of the book that offer the most benefit depend on who is reading it.
The first quarter of the book (Chapters 1 to 6) looks at high-level issues that set the stage for the FPGA design effort. These sections include discussions on project management, creation of the design specification, the design environment, resource scoping, and board design. The chapters tend to be brief and rely heavily on bullet points and checklists, with the result that they give general guidance along with some justification for the recommendations but not a lot of detail on how to perform the tasks listed. This keeps the content applicable to a wide range of design team environments but can be frustrating if you are looking for specific instructions.
The next several chapters are strikingly different from the first six in that many contain a great deal more specific detail on what to do, and how. The chapter on power and thermal analysis (Chap. 7) offers useful nuggets of information on making timely and accurate power estimations. Chapters 8, 11, 12, and 13 on RTL design, functional verification, timing closure, and in-system debug contain the richest veins, with detailed insights into the tasks as well as helpful tips.
The chapters on IP and design reuse (Chap. 9) and hardware/software interface (Chap. 10) fall somewhere between the two extremes in terms of information content. As with the opening chapters, they don't tell you how to do everything in detail. They do, however, at least touch on everything you need to do.
The final chapter on design sign-off, like the opening chapters, uses broad-brush statements and a checklist to outline the project's final steps. (Working engineers will be glad to note that one of these steps is "the well deserved design release party.")
These variations in information content have mirroring variations in the target audience. The first several chapters address topics that only project and higher-level engineering management can address. The middle chapters, on the other hand, contain information that will principally interest the hands-on designer. This makes the book as a whole not likely to interest any one reader from cover-to-cover.
The design team as a group, however, can benefit from having at least one copy of FPGA Design – Best Practices for Team-based Design
in its library. Experienced team members can use it to refresh and sharpen their techniques and it can help novices get started on the right track. By sharing the book among the members, the project team will be able to extract its full value.
Managers, for instance, would benefit most from reading Chapters 1 through 6 as well as Chapters 9 and 14 in their entirety. This will at least alert them to the key decisions and activities that will help ensure project success. They might also want to re-read this material from time to time. Much of the content can only be fully understood – and value extracted – once you have obtained first-hand experience. Thus, the book can serve to provide initial (although sketchy) guidance for setting up a first FPGA project then later help refine and sharpen understanding of lessons learned for later projects.
The remaining chapters are ones managers can skim to get some high-level understanding of the challenges the project team members face. The book numbers its sections according to detail level – N.m, N.m.p, N.m.p.q, etc. – and managers can get most of the value for them by reading only the N.m sections of the detailed design chapters. Team leaders might also want to read these sections just to get a feel for what upper level management will be doing and expects from them and their team during the project.
Hands on designers should read at least the chapters covering their design tasks, particularly the chapters on power and thermal analysis, RTL design, and timing closure. They are full of tips and suggestions that can help the design effort go more smoothly. The table of contents is a good guide to finding the appropriate sections to read.
The book is not a casual read, and in some sections not an easy read, either. You should be prepared for some sections to stimulate and guide your thinking about FPGA design practices rather than simply instruct. You'll have to make an effort to extract the value, but it promises to be worth the effort.