|
发表于 2004-9-21 09:08:05
|
显示全部楼层
什么是形式验证
[这个贴子最后由一声叹息在 2004/09/21 09:09am 第 1 次编辑]
下面是Writing Testbenches 1st Edition中关于formal verification的描述:
Formal verifica¬tion does not eliminate the need to write testbenches.
Formal verification is often misunderstood initially. Engineers unfamiliar with the formal verification process often imagine that it is a tool that mathematically determines whether their design is correct, without having to write testbenches. Once you understand what the end points of the formal verification reconvergent paths are, you know what exactly is being verified.
Formal verification falls under two broad categories: equivalence checking and model checking.
Equivalence checking verification process mathematically proves that the origin and output are logically equivalent and that the transformation preserved its functionality.
In its most common use, equivalence checking compares two netlists to ensure that some netlist post-processing, such as scan-chain insertion, clock-tree synthesis, or manual modification1, did not change the functionality of the circuit.
Another popular use is to verify that the netlist correctly imple¬ments the original RTL code. If one trusted the synthesis tool com¬pletely this verification would not be necessary. However, synthesis tools are large software systems that depend on the correctness of algorithms and library information. History has shown that such systems are prone to error. Equivalence checking is used to keep the synthesis tool honest. In some rare instances, this form of equiva¬lence checking is used to verify that manually written RTL code faithfully represents a legacy gate-level design.
Less frequently, equivalence checking is used to verify that two RTL descriptions are logically identical, sometimes to avoid run¬ning lengthy regression simulations when only minor non-func¬tional changes are made to the source code to obtain better synthesis results.
Equivalence checking is a true alternative path to the logic synthe¬sis transformation being verified. It is only interested in comparing boolean and sequential logic functions, not mapping these functions to a specific technology while meeting stringent design constraints.
Model checking is a more recent application of formal verification technology. In it, assertions or characteristics of a design are for¬mally proven or disproved. For example, all state machines in a design could be checked for unreachable or isolated states. A more powerful model checker may be able to determine if deadlock con¬ditions can occur.
|
|