How can we ensure the correctness of hardware designs? This paper surveys the application of formal methods, an alternative approach to validation, in hardware design, addressing the limitations of traditional simulation and testing techniques. There are two main aspects to the application of formal methods in a design process: the formal framework used to specify desired properties of a design and the verification techniques and tools used to reason about the relationship between a specification and a corresponding implementation. The specification frameworks include temporal logics, predicate logic, abstraction and refinement, as well as containment between ω-regular languages. The verification techniques include model checking, automata-theoretic techniques, automated theorem proving, and approaches that integrate the above methods. The case studies include industrial-scale designs, such as microprocessors, floating-point hardware, protocols, memory subsystems, and communications hardware. By providing insight into the scope and limitations of available techniques, this study offers a valuable overview for hardware designers seeking to improve the quality and reliability of their designs. The article presents a selection of case studies where formal methods were applied to industrial-scale designs.
Published in ACM Transactions on Design Automation of Electronic Systems, this work aligns with the journal's focus on methodologies and tools for designing electronic systems. By providing a comprehensive survey of formal verification techniques and their application to industrial-scale hardware designs, the paper contributes to the advancement of design automation and the improvement of system reliability. The methods are applied to industrial-scale designs.