

Buy anything from 5,000+ international stores. One checkout price. No surprise fees. Join 2M+ shoppers on Desertcart.
Desertcart purchases this item on your behalf and handles shipping, customs, and support to UAE.
A guide to applying software design principles and coding practices to VHDL to improve the readability, maintainability, and quality of VHDL code. This book addresses an often-neglected aspect of the creation of VHDL designs. A VHDL description is also source code, and VHDL designers can use the best practices of software development to write high-quality code and to organize it in a design. This book presents this unique set of skills, teaching VHDL designers of all experience levels how to apply the best design principles and coding practices from the software world to the world of hardware. The concepts introduced here will help readers write code that is easier to understand and more likely to be correct, with improved readability, maintainability, and overall quality. After a brief review of VHDL, the book presents fundamental design principles for writing code, discussing such topics as design, quality, architecture, modularity, abstraction, and hierarchy. Building on these concepts, the book then introduces and provides recommendations for each basic element of VHDL code, including statements, design units, types, data objects, and subprograms. The book covers naming data objects and functions, commenting the source code, and visually presenting the code on the screen. All recommendations are supported by detailed rationales. Finally, the book explores two uses of VHDL: synthesis and testbenches. It examines the key characteristics of code intended for synthesis (distinguishing it from code meant for simulation) and then demonstrates the design and implementation of testbenches with a series of examples that verify different kinds of models, including combinational, sequential, and FSM code. Examples from the book are also available on a companion website, enabling the reader to experiment with the complete source code. Review: Improve your VHDL coding skills - This code will take professional VHDL coders to another level. My test benches were improved and portability and scalability of my VHDL were improved too. I highly recommend this book for newbies and experts alike. Review: Outstanding resource - I've taught both software and logic design courses. In the software world, coding style is a central part of the curriculum and grading policy - more than getting the answer right, it's about getting the answer well. I see that far less in the VHDL/Verilog world, at least in academia. That leaves students poorly prepared for industrial logic design practice and for design efforts much larger than a homework assignment. This book fills a sorely felt need. I recommend this to two audiences. Many of the concepts and practices in this book lie beyond what a beginning student could grasp; it's not for someone struggling with notions of clocked logic and state machines. I do recommend it, however, to advanced students and to industrial logic designers struggling with multi-person projects, re-usability, engineers fresh out of school, and other issues of scale. Although individual design elements might be (and often should be) small, problematic practices at the lower levels propagate and interact as components are assembled into larger structures. The best time to weed them out is the earliest time. Second, I recommend this to anyone teaching introductory courses. They're positioned to introduce good style, legibility, and safe design practices from the first assignments on, just as in the software world. Even if many of the practices recommended here will be familiar - and they will to anyone who's seen similar guides for software design - seeing them gathered and organized into a coherent body of practice can be very helpful. Some practices will seem excessive for small projects, and instructors will choose what matters at each level. Still, it will be helpful to give students, especially in the higher levels, some idea of what they'll be expected to know once they leave school. It's hard to find fault with these recommendations. I did find a few points of emphasis where opinions might differ, however. Real-world logic design commonly uses component libraries, including things like RAMs, FIFOs, arithmetic elements, transceivers, PLLs, and lots of other elements hardened into FPGA fabric or ASIC design flows. Also, tools for specific logic fabrics generally include idiosyncratic (and non-portable) pragmas for guiding synthesis. Wherever possible, designers should draw on such technology-specific utilities instead of rolling their own. If portability across technologies or tool flows becomes an issue, good modular design can help isolate such technology specifics and make them easy to swap out. Jasinski also discusses synthesizable vs non-synthesizable constructs, a concept I find very important. My own preference, in the interest of clarity, is to emphasize the distinction early on, and to keep non-synthesizable constructs out of 'payload' logic entirely. Of course, this brings up the gray area of compile-time constant expressions. This text mentions them briefly, though not by that name, but I feel that they deserve a longer, more rigorous discussion that demonstrates creative ways they can be used. Perhaps integer division or a floating-point sine function can not be synthesized directly. Still, designers can safely use such functions to generate fixed-point constants that can be synthesized. This could pair well with its kin from the software world. Although they'd overlap in many areas, software design guides offer suggestions not mentioned here. For example, this book points out that VHDL supports operator and function overloading. I did not see mentions of the hazards of overloading, however. A two-parameter function can do whatever your imagination can dream up. But, if you overload the binary '+' operator with any function other than addition of some kind, or if you endow it with wild side effects, you're well on your way to unmaintainable and unusable code, no matter what language it's in. Minor points aside, I recommend this highly to architects developing style guides and to educators (including self-educators) at every level. -- wiredweird
| Best Sellers Rank | #1,153,051 in Books ( See Top 100 in Books ) #1,204 in Computer Programming Languages #2,060 in Electrical & Electronics (Books) #2,117 in Computer Hardware & DIY |
| Customer Reviews | 4.5 out of 5 stars 66 Reviews |
J**P
Improve your VHDL coding skills
This code will take professional VHDL coders to another level. My test benches were improved and portability and scalability of my VHDL were improved too. I highly recommend this book for newbies and experts alike.
W**D
Outstanding resource
I've taught both software and logic design courses. In the software world, coding style is a central part of the curriculum and grading policy - more than getting the answer right, it's about getting the answer well. I see that far less in the VHDL/Verilog world, at least in academia. That leaves students poorly prepared for industrial logic design practice and for design efforts much larger than a homework assignment. This book fills a sorely felt need. I recommend this to two audiences. Many of the concepts and practices in this book lie beyond what a beginning student could grasp; it's not for someone struggling with notions of clocked logic and state machines. I do recommend it, however, to advanced students and to industrial logic designers struggling with multi-person projects, re-usability, engineers fresh out of school, and other issues of scale. Although individual design elements might be (and often should be) small, problematic practices at the lower levels propagate and interact as components are assembled into larger structures. The best time to weed them out is the earliest time. Second, I recommend this to anyone teaching introductory courses. They're positioned to introduce good style, legibility, and safe design practices from the first assignments on, just as in the software world. Even if many of the practices recommended here will be familiar - and they will to anyone who's seen similar guides for software design - seeing them gathered and organized into a coherent body of practice can be very helpful. Some practices will seem excessive for small projects, and instructors will choose what matters at each level. Still, it will be helpful to give students, especially in the higher levels, some idea of what they'll be expected to know once they leave school. It's hard to find fault with these recommendations. I did find a few points of emphasis where opinions might differ, however. Real-world logic design commonly uses component libraries, including things like RAMs, FIFOs, arithmetic elements, transceivers, PLLs, and lots of other elements hardened into FPGA fabric or ASIC design flows. Also, tools for specific logic fabrics generally include idiosyncratic (and non-portable) pragmas for guiding synthesis. Wherever possible, designers should draw on such technology-specific utilities instead of rolling their own. If portability across technologies or tool flows becomes an issue, good modular design can help isolate such technology specifics and make them easy to swap out. Jasinski also discusses synthesizable vs non-synthesizable constructs, a concept I find very important. My own preference, in the interest of clarity, is to emphasize the distinction early on, and to keep non-synthesizable constructs out of 'payload' logic entirely. Of course, this brings up the gray area of compile-time constant expressions. This text mentions them briefly, though not by that name, but I feel that they deserve a longer, more rigorous discussion that demonstrates creative ways they can be used. Perhaps integer division or a floating-point sine function can not be synthesized directly. Still, designers can safely use such functions to generate fixed-point constants that can be synthesized. This could pair well with its kin from the software world. Although they'd overlap in many areas, software design guides offer suggestions not mentioned here. For example, this book points out that VHDL supports operator and function overloading. I did not see mentions of the hazards of overloading, however. A two-parameter function can do whatever your imagination can dream up. But, if you overload the binary '+' operator with any function other than addition of some kind, or if you endow it with wild side effects, you're well on your way to unmaintainable and unusable code, no matter what language it's in. Minor points aside, I recommend this highly to architects developing style guides and to educators (including self-educators) at every level. -- wiredweird
C**E
Too over the top
Too over the top
M**P
Excellent resource for coding
This is absolutely the best VHDL book that I have ever encountered. It not only covers the details of VHDL, but the chapters on Design and Architecture, Design Challenges, and Design Principles discuss concepts geared more towards a software viewpoint. Being more familiar with hardware, the concepts presented in the above chapters were eye opening and fascinating to me. I also found the section on Practical Coding Recommendations eye openers. I will certainly incorporate the ideas presented in the book in all of my future work with VHLD. If you are a beginner with VHLD, I would recommend focusing on parts II through IV, which talk more about the details of the language of VHDL. Once you have a good feel for the VHDL language and have worked on a few projects, the other sections will be easier to digest. I highly recommend this book! I'd give it 10 stars if I could!
K**N
Excellent!
This is a very well written book. Half of it is about VHDL, and the other half is about how to write great code using concepts and guidelines that apply to any language.
B**N
Great system design advice beyond just VHDL
A great book not just for VHDL but for system design overall.
C**J
No question, it is a must have.
This is my first review but this book really deserves more credit. It is a modern book for VHDL and HDL development integrated with new knowledge from the software development front. I believe this book will spark a new wave of ideas for years to come and deliver to the HDL front what software went through. This book is equally important and as good as a Doulos Golden Reference.
E**N
Excellent Book!
Excellent book! Already recommended it to many friends. This book is more than just VHDL. It teaches you how to think before writing any code.
D**E
Il migliore per il VHDL
La bibbia del VHDL moderno. Un ottimo libro per imparare il VHDL e per avere una referenza per ogni dubbio. L'autore copre anche feature del VHDL-2008 portando un po di modernità in questo vecchio linguaggio. Unica possibile addizione sarebbe quella di progetti avanzati in VHDL come microprocessori
S**A
Five stars
Excellent book!
K**K
Glad I bought it
Reall good book, probably my favour one on this subject so far
A**2
A Professional Imprint to the Language
The best book to add a professional imprint to the knowledge of the language. Every chapter is packed of useful advices and comparisons to guide the designers‘s decisions of approaching problems with the language. I really appreciated the chapter on testing, very detailed on different techniques to test different kind of design (combinatorial, sequential, FSM and so on). I don’t recall similar books, therefore I warmly suggest it if you want to improve the quality of your designs.
S**N
Interesting Read
Useful for people wanting to write supportable code.
Trustpilot
2 weeks ago
1 week ago