Formal verification has become an essential component in the verification process of complex protocols. By employing formal verification tool, the process of verifying High-Quality Protocol has been significantly enhanced. This blog explores the advanced formal verification techniques and the technical challenges encountered during the verification of the High-Quality Protocol.
Formal Verification Environment
The formal verification environment is meticulously designed to handle the complexities of the High-Quality Protocol. This environment facilitates the parallel proving of properties, ensuring that all critical properties are verified simultaneously. Each property is categorized as either under computation, proven, or found to have counterexamples. This categorization helps in prioritizing and managing the verification process effectively.Figure 1. formal verification environment
Tackling the Top Challenge: Bound Proof
One of the significant challenges in formal verification is the bound proof. This involves proving properties up to a certain bound, beyond which the proof becomes impractically complex. To address this, the formal verification team employed various strategies, such as:- Assumptions Management: Properly managing assumptions to avoid conflicts and ensuring they align with the design.
- Engine Selection: Choosing the appropriate verification engines to maximize efficiency and coverage.
- Complexity Reduction: Breaking down complex assertions into smaller, manageable properties to reach deeper proofs.
A disciplined coding style is crucial for effective formal verification. For instance, in the High-Quality Protocol verification, specific coding practices were followed to ensure data integrity:
- Stable Properties: Ensuring that properties remain stable across clock cycles.
- Boundary Conditions: Verifying boundary conditions to prevent errors during edge cases.
- Assertions: Utilizing assertions to verify the integrity of data paths and control signals.
Error Cases and Formal Checks
Formal verification excels in identifying various error cases that traditional simulation might miss. For example, the High-Quality Protocol verification identified errors such as data loss, duplication, and switching. These error cases were meticulously covered through formal checks, ensuring that the design handled all possible scenarios robustly.Proof Accelerator and Initial Value Abstraction
The proof accelerator in formal verification tool significantly enhances the verification process by speeding up the proof of complex properties. Formal verification tool, combined with initial value abstraction, helps in verifying properties from an initial state to their eventual state, ensuring thorough coverage. The relationship between the link layer and the protocol layer is verified using these advanced techniques, providing a comprehensive verification solution.Managing Over-Constraints
Over-constraining the design can lead to false positives or missed bugs. The verification process involves carefully managing constraints to ensure that they do not overly restrict the design space. By balancing constraints, the verification team can explore a broader range of scenarios, leading to a more robust verification process.Figure 2. managing over-constraints
Bound Proof and Bug Hunting
Bound proof is a compromise between verification effort and quality. The verification team employed techniques to push the boundaries as deeplyas possible, ensuring critical features are thoroughly verified. Additionally, extensive bug hunting within the bounded proof case revealed several environmental and RTL problems, which were then addressed in subsequent design iterations.Figure 3. bound proof and bug hunting