FPGARelated.com
Books

Principles of Verifiable RTL Design: A functional coding style supporting verification processes in Verilog

Bening, Lionel, Foster, Harry D. 2001

System designers, computer scientists and engineers have c- tinuously invented and employed notations for modeling, speci- ing, simulating, documenting, communicating, teaching, verifying and controlling the designs of digital systems. Initially these s- tems were represented via electronic and fabrication details. F- lowing C. E. Shannon’s revelation of 1948, logic diagrams and Boolean equations were used to represent digital systems in a fa- ion that de-emphasized electronic and fabrication detail while revealing logical behavior. A small number of circuits were made available to remove the abstraction of these representations when it was desirable to do so. As system complexity grew, block diagrams, timing charts, sequence charts, and other graphic and symbolic notations were found to be useful in summarizing the gross features of a system and describing how it operated. In addition, it always seemed necessary or appropriate to augment these documents with lengthy verbal descriptions in a natural language. While each notation was, and still is, a perfectly valid means of expressing a design, lack of standardization, conciseness, and f- mal definitions interfered with communication and the understa- ing between groups of people using different notations. This problem was recognized early and formal languages began to evolve in the 1950s when I. S. Reed discovered that flip-flop input equations were equivalent to a register transfer equation, and that xvi tor-like notation. Expanding these concepts Reed developed a no- tion that became known as a Register Transfer Language (RTL).


Why Read This Book

You will learn a disciplined, verification-aware Verilog coding style that makes RTL easier to simulate, test, and formally check, helping reduce bugs that only appear late in the flow. The book gives concrete coding patterns and examples that make common verification problems explicit and shows how to structure modules and testbenches for clearer, more testable hardware design.

Who Will Benefit

RTL designers and verification engineers with basic Verilog who want practical guidelines to write synthesizable, testable, and verification-friendly RTL.

Level: Intermediate — Prerequisites: Basic digital logic and working familiarity with Verilog (modules, always blocks, blocking/non‑blocking assignments, simple testbenches).

Get This Book

Key Takeaways

  • Apply a functional coding style that separates combinational logic, registered state, and control to improve clarity and testability.
  • Write synthesizable Verilog that avoids constructs that impede synthesis or lead to simulation/synthesis mismatches.
  • Structure modules and interfaces to make them easier to unit-test and integrate into system-level verification.
  • Design self-checking testbenches and test harnesses that expose common RTL bugs early in simulation.
  • Adopt coding patterns that simplify formal checks and increase observability for both simulation and static verification tools.

Topics Covered

  1. Introduction: motivation for verifiable RTL
  2. Historical notations and abstraction in digital design
  3. Principles of a functional coding style
  4. Synchronous design patterns and state handling
  5. Combinational logic organization and guarding latches
  6. Module interfaces and scalable composition
  7. Coding guidelines to avoid verification pitfalls
  8. Testbench structure and self-checking tests
  9. Techniques to improve observability and controllability
  10. Guidance for synthesis vs. verification tradeoffs
  11. Case studies and example designs
  12. Appendices: checklist, common idioms, bibliography

Languages, Platforms & Tools

VerilogFPGA (general)ASIC flowsHDL simulators (ModelSim, VCS-style simulators)Synthesis tools (general: Synplify, Vivado, Quartus)Formal/static checkers (generic)

How It Compares

More verification-focused and prescriptive about RTL coding style than general Verilog primers (e.g., Palnitkar's Verilog HDL); unlike later SystemVerilog/ UVM books, it focuses on Verilog-era patterns rather than modern verification frameworks.

Related Books