Semantic Analysis for Case Splitting in C/C++ to RTL Equivalence Checking
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional formal verification techniques are limited in synthesizing software specifications written using advanced language features, particularly in designs that evolve over time, due to language enhancements and new standard libraries, which hampers their usability in equivalence checking between C/C++ and RTL designs.
Innovation Solution
A computer-implemented method for generating invariants through semantic analysis, which automatically produces case splitting candidates for equivalence checking, utilizing these invariants as hints, helper assertions, or cut points to derive structural properties of programs, thereby facilitating equivalence checking between software specifications and implementation models.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If conventional formal verification techniques are used, then equivalence checking between C/C++ and RTL designs can be performed, but the ability to synthesize software specifications written using advanced language features is limited
Solution Approach 1:
The patent introduces an intermediary formal verification model that acts as a bridge between the C/C++ software specification and the RTL implementation model. This intermediate model enables the translation and verification of advanced language features by converting them into a formal representation that can be systematically analyzed, thereby expanding language coverage while maintaining verification reliability.
Solution Approach 2:
The verification process is segmented into distinct phases: generating the formal verification model from the C/C++ specification, performing semantic analysis to extract invariants, and conducting equivalence checking against the RTL model. This segmentation allows each phase to handle specific aspects of the verification, improving the system's ability to process advanced language features systematically.
2Manufacturing precision
If manual case splitting is performed in equivalence checking, then verification coverage can be improved, but the complexity and time required for verification increases
Solution Approach 1:
The system performs self-service by automatically generating case splitting candidates through semantic analysis of the formal verification model. The tool autonomously identifies invariants and derives case splitting strategies without requiring manual intervention, thereby maintaining high verification coverage while significantly reducing the time and effort required compared to manual case splitting.
Solution Approach 2:
Case splitting candidates are generated in advance as part of the formal verification model generation process, before the actual equivalence checking begins. This preliminary action prepares the verification framework with pre-analyzed invariants and case splitting strategies, enabling more efficient execution of the equivalence checking process.
3Adaptability or versatility
If advanced language features are used in software specifications, then design functionality and adaptability improve, but the ability to perform formal verification and equivalence checking deteriorates
Solution Approach 1:
The formal verification model serves as an intermediary that translates advanced C/C++ language features into a formal representation suitable for verification. This intermediary layer preserves the functionality and adaptability enabled by advanced language features while making the specification amenable to systematic formal verification and equivalence checking.
Solution Approach 2:
The system changes the parameter representation by transforming high-level language constructs into formal verification parameters through semantic analysis. This parameter transformation enables the verification tool to handle advanced language features by converting them into a standardized formal representation that can be systematically analyzed.
Data Source
AI summary
The present disclosure relates to a method for use in a formal verification of an electronic design. Embodiments may include receiving, using a processor, a reference model including a software specification and an implementation model at a register transfer level. Embodiments may also include generating one or more invariants based upon, at least in part, the reference model, wherein generating one or more invariants includes applying a semantic analysis. Embodiments may further include automatically generating at least one case splitting candidate based upon, at least in part, the one or more generated invariants.


