# Patent

## Title
Formal verification of temporal properties expressed using local variables

## Abstract

A certain subset of temporal properties defined using local variables can be formally verified with complexity of PSPACE or less. A subset with this characteristic, referred to as a practical subset, is therefore feasible to formally verify. For example, it can be shown that temporal properties that possess an alternating automaton with no conflicts fall within a practical subset. Temporal properties are analyzed to determine whether they are a member of the practical subset. Members of the practical subset can then be feasibly formally verified.

## Background
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates generally to the formal verification of a logic design, and more particularly, to the formal verification of temporal properties defined using local variables.
2. Description of the Related Art
SystemVerilog is a hardware design and verification language. SystemVerilog Assertions (SVA) is a subclass of SystemVerilog, used to declaratively specify functional behaviors of hardware designs. Similarly, Property Specification Language (PSL) is used to declaratively specify functional behaviors of hardware designs independent of the design language. Typically, SVA and PSL properties are validated during dynamic simulation or are formally verified.
SystemVerilog Assertions (SVA), as well as Property Specification Language (PSL) are linear temporal logics, extended with regular expressions and local variables. Moreover, it is known that the complexity of the verification problem for PSA or SVA is PSPACE-complete in the absence of (a) time windows, (b) intersection and (c) local variables. In addition, the verification problem for PSA or SVA with any one of these three renders the problem to the higher complexity class EXPSPACE. Furthermore, local variables create a complexity hurdle more easily. An upper bound is achieved by constructing an alternating Büchi automaton of size proportional to the size of the property and the size of the Cartesian product of the domains of the local variables. Seeing local variables of large domain is very common, for instance, when asserting data consistency on bus protocols. Thus, a 64-bit bus results in a single variable domain of size 264. Building an alternating automaton of more than 264 states may be possible, but for model checking it is translated into a non-deterministic Büchi automaton of more than 2^(264) states, represented by 264 state variables, which is infeasible.
The addition of local variables renders the verification problem of SVA and PSL formulae EXPSPACE-complete and therefore unpractical. Thus, there is a need for a practical method for formally verifying SVA and PSL formulae defined using local variables.
SUMMARY OF THE INVENTION
The present invention is based on the recognition that the verification complexity of a certain subset of temporal properties defined using local variables has complexity PSPACE or less. A subset with this characteristic, referred to generically as a practical subset, is therefore feasible to formally verify. Temporal properties are analyzed to determine whether they are a member of a practical subset. Members of a practical subset can then be feasibly formally verified.
In one aspect, verifying whether a hardware design satisfies a temporal property includes the following steps. An HDL description of the hardware design and the temporal property to be verified, which is expressed using a local variable, are both received as inputs to the process. It is determined whether the temporal property is a member of a “practical subset” of temporal properties. The practical subset has the characteristic that every member of the practical subset possesses an alternating automaton with no conflicts. An alternating automaton has no conflicts if none of its run-trees has a node with two descendants on the same depth that disagree on the value of the local variable. Temporal properties with this characteristic can be formally verified with complexity PSPACE or less. In one approach, formal verification is applied to all temporal properties that are determined to be members of the practical subset. In another approach, formal verification is not applied to all temporal properties that are determined not to be members of the practical subset.
In another aspect of the invention, whether a hardware design D satisfies a temporal property P is formally verified by constructing a non-deterministic automaton N and a deterministic satellite machine S, wherein the product N×S recognizes the negation of P, and determining whether the product D×N×S is empty. If the product is empty, then D satisfies P. Otherwise D does not satisfy P. In one approach, the deterministic satellite machine S handles updates of the local variable.
Other aspects of the invention include methods, devices, systems, applications, refinements, implementations and improvements related to the concepts described above.



BRIEF DESCRIPTION OF THE DRAWINGS
The invention has other advantages and features which will be more readily apparent from the following detailed description of the invention and the appended claims, when taken in conjunction with the accompanying drawings, in which:
FIG. 1 illustrates one embodiment of components of an example machine able to read instructions from a machine-readable medium and execute them in a processor (or controller).
FIG. 2 is one embodiment of a flowchart illustrating various operations in the design and fabrication of an integrated circuit.
FIG. 3 is a flowchart for formally verifying a design against a temporal property defined using local variables.
FIG. 4 is a block diagram of a system architecture for formally verifying a design against a temporal property defined using local variables.
FIG. 5A illustrates an annotated alternating automaton for an exemplary temporal logic formula.
FIG. 5B illustrates an un-annotated non-deterministic automaton for the automaton of FIG. 5A.
FIG. 6A illustrates four automata for sub regular expressions for a second and a third exemplary temporal logic formula.
FIG. 6B illustrates an automaton after combining three automata from FIG. 6A, needed for the second exemplary temporal logic.
FIG. 6C illustrates an optimized automaton for the automaton illustrated in FIG. 6B.
FIG. 6D illustrates an automaton after combining three automata from FIG. 6A, needed for the third exemplary temporal logic.
FIG. 6E illustrates two complete annotated alternating automata for the second and third exemplary temporal logic formulae.



The figures depict embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
The figures and the following description relate to preferred embodiments by way of illustration only. It should be noted that from the following discussion, alternative embodiments of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the principles of what is claimed.
FIG. 1 is a block diagram illustrating components of an example machine able to read instructions from a machine-readable medium and execute them in a processor (or controller). Specifically, FIG. 1 shows a diagrammatic representation of a machine in the example form of a computer system 100 within which instructions 124 (e.g., software) for causing the machine to perform any one or more of the methodologies discussed herein may be executed. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
The machine may be a server computer, a client computer, a personal computer (PC), or any machine capable of executing instructions 124 (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute instructions 124 to perform any one or more of the methodologies discussed herein.
The example computer system 100 includes a processor 102 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), one or more application specific integrated circuits (ASICs), a main memory 104, a static memory 106, and a storage unit 116 which are configured to communicate with each other via a bus 108. The storage unit 116 includes a machine-readable medium 122 on which is stored instructions 124 (e.g., software) embodying any one or more of the methodologies or functions described herein. The instructions 124 (e.g., software) may also reside, completely or at least partially, within the main memory 104 or within the processor 102 (e.g., within a processor's cache memory) during execution thereof by the computer system 100, the main memory 104 and the processor 102 also constituting machine-readable media.
While machine-readable medium 122 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store instructions (e.g., instructions 124). The term “machine-readable medium” shall also be taken to include any medium that is capable of storing instructions (e.g., instructions 124) for execution by the machine and that cause the machine to perform any one or more of the methodologies disclosed herein. The term “machine-readable medium” includes, but not be limited to, data repositories in the form of solid-state memories, optical media, and magnetic media.
FIG. 2 is a flowchart 200 illustrating the various operations in the design and fabrication of an integrated circuit. This process starts with the generation of a product idea 210, which is realized during a design process that uses electronic design automation (EDA) software 212. When the design is finalized, it can be taped-out 234. After tape-out, a semiconductor die is fabricated 236 to form the various objects (e.g., gates, metal layers, vias) in the integrated circuit design. Packaging and assembly processes 238 are performed, which result in finished chips 240.
The EDA software 212 may be implemented in one or more computing devices such as the computer 100 of FIG. 1. For example, the EDA software 212 is stored as instructions in the computer-readable medium which are executed by a processor for performing operations 214-232 of the design flow, which are described below. This design flow description is for illustration purposes. In particular, this description is not meant to limit the present disclosure. For example, an actual integrated circuit design may require a designer to perform the design operations in a difference sequence than the sequence described herein.
During system design 214, designers describe the functionality to implement. They can also perform what-if planning to refine the functionality and to check costs. Note that hardware-software architecture partitioning can occur at this stage. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include: Model Architect®, Saber®, System Studio®, and Designware® products.
During logic design and functional verification 216, VHDL or Verilog code for modules in the circuit is written and the design is checked for functional accuracy. More specifically, the design is checked to ensure that it produces the correct outputs. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include: VCS®, Vera®, 10 Designware®, Magellan®, Formality®, ESP® and Leda® products.
During synthesis and design for test 218, VHDL/Verilog is translated to a netlist. This netlist can be optimized for the target technology. Additionally, tests can be designed and implemented to check the finished chips. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include: Design Compiler®, Physical Compiler®, Test Compiler®, Power Compiler®, FPGA Compiler®, Tetramax®, and Designware® products.
During netlist verification 220, the netlist is checked for compliance with timing constraints and for correspondence with the VHDL/Verilog source code. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include: Formality®, Primetime®, and VCS® products.
During design planning 222, an overall floor plan for the chip is constructed and analyzed for timing and top-level routing. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include: Astro® and IC Compiler® products.
During physical implementation 224, the placement (positioning of circuit elements) and routing (connection of the same) occurs. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include: the Astro® and IC Compiler® products.
During analysis and extraction 226, the circuit function is verified at a transistor level, which permits refinement. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include: Astrorail®, Primerail®, Primetime®, and Star RC/XT® products.
During physical verification 228, the design is checked to ensure correctness for: manufacturing, electrical issues, lithographic issues, and circuitry. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include the Hercules® product.
During resolution enhancement 230, geometric manipulations of the layout are performed to improve manufacturability of the design. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include: Proteus®, Proteus®AF, and PSMGED® products.
During mask-data preparation 232, the ‘tape-out’ data for production of masks to produce finished chips is provided. Example EDA software products from Synopsys, Inc. of Mountain View, Calif. that can be used at this stage include the CATS® family of products.
Various embodiments can be used during one or more of the above-described stages. Specifically, most if not all embodiments can be used in EDA software 212 that includes operations from stage 216: functional verification.
One form of functional verification is known as formal verification. In formal verification, the functionality of a hardware design is formally determined to be equivalent to the desired functionality. One subset of formal verification problems is the formal verification of properties. That is, the user defines a property that the hardware design is supposed to have. Formal verification then determines in a formally rigorous manner whether the hardware design actually conforms to the defined property. One subset of properties is temporal properties that are defined using a local variable. A local variable is one that is used only locally within the property definition. Unfortunately, the problem of formal verification of the class of all temporal properties defined using local variables is EXPSPACE-complete, which usually is computationally infeasible.
However, FIG. 3 illustrates a flowchart for verifying a hardware design against a temporal property defined using local variables. The system reads or otherwise accesses 310 a description of a hardware design D, which is to be formally verified. The design D can be specified in a hardware description language (HDL) such as VHDL or Verilog. The system also reads or otherwise accesses 320 a temporal property P defined using a local variable. A temporal property is a property that is defined using temporal logic. The temporal property P can also be specified in a plurality of languages, such as SVA or PSL. The property P is analyzed to determine 330 if the property P is a member of a practical subset of temporal properties. Every member in the practical subset possesses an alternating automaton with no conflicts, and formal verification of these types of temporal properties can be shown to have complexity PSPACE or less so that they can be feasibly formally verified. Examples of practical subsets and how to determine whether a property is a member of a practical subset are given below and in the Appendix.
If the system determines that the temporal property P is a member of the practical subset, then it formally verifies whether the hardware design satisfies the property (steps 350-390). In an alternate approach, if the property P is not a member of the practical subset, then the system does not apply formal verification (step 340). In one embodiment, the system returns an error message indicating that the verification is not going to be performed or that the property is not supported by the system. In other embodiments, the system does not analyze the property but rather, it attempts to verify regardless of the verification complexity. In this case, if, during the verification process, the system determines that the verification is impractical (e.g. it is using more than a threshold amount of memory space, and/or it has been running longer than a threshold amount of time), then the verification is aborted and an error message can be sent to the user.
FIG. 3 shows one approach to formal verification of properties P that are in the practical subset. In this embodiment, an alternating automaton A, recognizing the negation of property P, is constructed 350. This automaton A is converted 360 into a non-deterministic automaton N and a deterministic satellite machine S such that the product N×S recognizes the same set of words (i.e. same language) as A. In one approach, the construction 350 of alternating automaton A includes annotations, which identify which portions of the automaton A are used to construct the non-deterministic automaton N and which portions are used to construct the deterministic satellite machine S. The portion involving local variables is used to construct the deterministic satellite machine S and the remaining portion is used to construct the non-deterministic automaton N. The portion involving local variables essentially controls or determines the updates of the local variables. From that portion, one can deduce the exact value of each local variable at each time point. The satellite machine S can look at the non-deterministic automaton N. That is, N's current state can be treated as part of the inputs to satellite machine S. The non-deterministic machine N, on the other hand, cannot look at the satellite S. That is, S's current state is not part of N's input. The value of the local variables before the current update took place, however, may be part of N's input.
The design D is formally verified by determining 370 whether the Cartesian product D×N×S is empty. On the one hand, if the product is empty 380, then D satisfies P. In one embodiment, a message is returned indicating the successful formal verification of the design against the property. On the other hand, if the product is not empty 390, then D does not satisfy P. In one embodiment, an error message is returned indicating the unsuccessful verification of the design against the property. In one approach, a negative answer 390 is accompanied by a counter example, such as one of the words in D×N×S.
The determination of the complexity of the verification process is performed by determining whether the property lies within the practical subset. A formal proof for an example of a practical subset (denoted PSLpract) is attached as an Appendix. In that example, any temporal property that is defined with local variables where the local variables are limited to {the temporal operators next!, until!, releases and suffix implication} belongs to the practical subset, as long as there are no assignments to local variables on either the right operand of until! or the left operand of releases. Furthermore, in order to deal with negation applied to temporal operators, a pre-processing step that transforms a PSL formula to an equivalent formula in positive normal form, by using duality rules, can be added. In one embodiment, the determination whether a property is a member of the practical subset PSLpract is performed by constructing a parse tree and traversing the parse tree to search for possibly problematic operators, which in this example are until! and releases. If a possibly problematic operator is found, then its operands can be analyzed to determine if an assignment to a local variable was performed in the operand (e.g. an assignment to local variables on the right operand of until! or the left operand of release). If an assignment to local variables is found, then the property is determined to not be in the practical subset. Otherwise, the property is in the practical subset.
Other approaches to the practical subset are possible. For example, in one approach, the following uses of local variables is permitted: (a) use of local variables in non-temporal operators; (b) the use of local variables in temporal operators, so long as there are no uses that would result in conflicts in the corresponding alternating automaton. A property can be traversed, with each local variable usage checked to confirm that it falls within one of the permitted uses. If all local variable usage is permitted, then the property is in the practical subset. Alternately, the property can be traversed to determine if any local variable usage is not permitted, for example if there is an assignment to a local variable that would result in a conflict for the corresponding alternating automaton. In yet another approach, one can build the annotated alternating automaton and check directly on the automaton if there are conflicts. This approach might be useful, for example, if it is difficult to determine whether there is a conflict solely by examining the operators and operands (or the parse tree).
FIG. 4 is a block diagram of a system architecture for formally verifying a design against a temporal property defined using local variables, in accordance with an embodiment of the invention. The formal verification module 430 receives as an input a temporal property P 420 and an HDL design D 410. The formal verification module 430 includes a parser 440, a practicality module 450, an automata construction module 460, an automata decomposition module 470 and a formal verification engine 480. In other embodiments, the formal verification module 430 may include additional, fewer, or different modules for various applications.
The parser 440 analyzes the temporal property P 420 according to the grammar or rules of the language used to define it (e.g. SVA, PSL, etc). In some embodiments, the parser performs a lexical analysis to obtain a list of tokens contained in the temporal property 420. During the lexical analysis, the temporal properly P 420 is divided into meaningful symbols (e.g. operators, operands, parenthesis, etc). The parser 440 can then perform a syntactic analysis. During the syntactic analysis, the parser analyzes the tokens to understand the meaning of the temporal logic 420 in order to create a parse tree. In some embodiments, the parser first searches for an operator. After an operator is found, the parser searches for the operands of the operator. For example, for the temporal logic expression “a until b,” during the lexical analysis, the parser 440 will obtain the tokens “a,” “until,” and “b.” Then during the syntactic analysis the parser will determine that the token “until” is an operator and the tokens “a” and “b” are its operands. In one embodiment, the parser 440 distinguishes the different types of operands that an operator has. For instance, in the previous example, “a” is a left operand, and “b” is a right operand. In some embodiments, the parser searches for operators in a hierarchical order. In one embodiment, the parser may additionally analyze the temporal logic 420 for syntax error. If a syntax error if found by the parser 440, an error can be return prompting the user to correct the syntax error.
The practicality module 450 analyzes the output of the parser 440 and determines whether it is feasible to formally verify the property P. In one approach, the practicality module 450 does this by determining whether the temporal property P 420 is a member of a practical subset of temporal properties, where it is known that all members of the practical subset can be formally verified with complexity PSPACE or less. For example, the practical subset may contain all temporal properties that possess an alternating automaton with no conflicts.
In one approach, to determine whether a temporal property 420 is in the practical subset, the practicality module 450 traverses the parse tree constructed by the parser 440 and searches for problematic operators. If a problematic operator is found, then the practicality module 450 determines whether there is an assignment to a local variable in one of the operands. If the practicality module 450 finds an assignment to a local variable on a problematic operator (e.g. on the right operand of until!, the left operand of release, etc), then the temporal property is not in the practical subset and the practicality module 450 returns an appropriate message, possibly an error message. If the temporal property 420 is in the practical subset, the practicality module 450 instructs the formal verification module 430 that formal verification for the temporal property P 420 is possible.
In another approach, the practicality module 450 builds the alternating automaton (or has the automata construction module 460 build the alternating automaton) and then looks for conflicts directly in the alternating automaton.
The automata construction module 460 constructs an alternating automaton A recognizing the negation of the temporal property P 420. In some embodiments, A is an annotated alternating automaton.
The automata decomposition module 470 converts the annotated alternating automaton A into a non-deterministic un-annotated automaton N and a deterministic satellite machine S such that the product N×S recognizes the same set of words as A. As a result, the automata decomposition module 470 separates the part responsible for local variable updates from the alternating automaton and constructs a satellite that monitors the automaton to determine the local variables' next state. In order to transform the alternating automaton into a non-deterministic automaton, the automata decomposition module 470 applies the Miyano-Hayashi construction on A by disregarding the local variables, thus avoiding the exponential penalty of the Miyano-Hayashi construction on the local-variables-part of A.
The formal verification engine 480 verifies the HDL design D 410 by analyzing the product D×N×S. If the product is empty, then the HDL design 410 satisfies the temporal property P 420. Otherwise, the HDL design D 410 does not satisfy the temporal property P 420 and the formal verification module 430 returns a message indicating the result of the analysis.
Although the detailed description contains many specifics, these should not be construed as limiting the scope of the invention but merely as illustrating different examples and aspects of the invention. It should be appreciated that the scope of the invention includes other embodiments not discussed in detail above. Various other modifications, changes and variations which will be apparent to those skilled in the art may be made in the arrangement, operation and details of the method and apparatus of the present invention disclosed herein without departing from the spirit and scope of the invention as defined in the appended claims. Therefore, the scope of the invention should be determined by the appended claims and their legal equivalents.
In alternate embodiments, the invention is implemented in computer hardware, firmware, software, and/or combinations thereof. Apparatus of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. The invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Generally, a computer will include one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. Any of the foregoing can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits) and other forms of hardware.

## Claims

1. A method for verifying whether a hardware design satisfies a temporal property, the method comprising a processor executing the steps of:
accessing a hardware description language (HDL) description of the hardware design;
accessing the temporal property, the temporal property expressed using a local variable;
creating a parse tree for the temporal property;
determining whether the temporal property is a member of a practical subset of temporal properties based on analyzing the parse tree, wherein every member of the practical subset possesses an alternating automaton with no conflicts; and
(a) formally verifying whether the hardware design satisfies the temporal property for all such temporal properties that are determined to be members of the practical subset; or (b) not formally verifying whether the hardware design satisfies the temporal property for all such temporal properties that are determined not to be members of the practical subset.

2. The method of claim 1 wherein the practical subset of temporal properties includes any temporal property in which all local variables are limited to temporal operators next!, until!, releases and suffix implication, as long as there are no assignments to local variables on either the right operand of until! or the left operand of releases.

3. The method of claim 2 wherein the step of determining whether a temporal property is a member of the practical subset of temporal properties comprises determining that the temporal property is not a member of the practical subset if the temporal property includes an assignment to a local variable on the right operand of until!.

4. The method of claim 2 wherein the step of determining whether a temporal property is a member of the practical subset of temporal properties comprises determining that the temporal property is not a member of the practical subset if the temporal property includes an assignment to a local variable on the left operand of releases.

5. The method of claim 2 wherein the step of determining whether a temporal property is a member of the practical subset of temporal properties is based on analyzing operators and operands of the temporal property.

6. The method of claim 2 wherein the step of determining whether a temporal property is a member of the practical subset of temporal properties comprises:
constructing an alternating automaton for the temporal property; and
determining whether the alternating automaton has no conflicts.

7. The method of claim 1 wherein formal verification of any member of the practical subset of temporal properties has complexity PSPACE or less.

8. The method of claim 1 wherein the hardware design is denoted D, the temporal property is denoted P, and the step of formally verifying whether the hardware design D satisfies the temporal property P comprises:
constructing an alternating automaton A recognizing the negation of temporal property P;
converting A into a non-deterministic automaton N and a deterministic satellite machine S such that the product N×S recognizes the same set of words as A; and
formally verifying whether D×N×S is empty.

9. The method of claim 8 wherein the alternating automaton A is annotated, and the step of converting A uses the annotations to identify which portions of A are converted to the non-deterministic automaton N and which portions of A are converted to the deterministic satellite machine S.

10. The method of claim 8 wherein the deterministic satellite machine S handles updates of local variables.

11. The method of claim 1 wherein the step of formally verifying whether the hardware design satisfies the temporal property comprises formally verifying whether a Cartesian product of the hardware design with an automaton for a negation of the temporal property is empty.

12. The method of claim 1 wherein the temporal property is expressed using SystemVerilog Assertions.

13. The method of claim 1 wherein the temporal property is expressed using Property Specification Language.

14. The method of claim 1 wherein the HDL description includes a Verilog description of the hardware design.

15. The method of claim 1 wherein the HDL description includes a Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL) description of the hardware design.

16. A system for verifying whether a hardware design satisfies a temporal property, the system comprising:
means for accessing a hardware description language (HDL) description of the hardware design;
means for accessing the temporal property, the temporal property expressed using a local variable;
means for creating a parser tree for the temporal property;
means for determining whether the temporal property is a member of a practical subset of temporal properties based on analyzing the parse tree, wherein every member of the practical subset possesses an alternating automaton with no conflicts; and
means for (a) formally verifying whether the hardware design satisfies the temporal property for all such temporal properties that are determined to be members of the practical subset; or (b) not formally verifying whether the hardware design satisfies the temporal property for all such temporal properties that are determined not to be members of the practical subset.

17. The system of claim 16 further comprising:
means for constructing an alternating automaton A recognizing the negation of temporal property P;
means for converting A into a non-deterministic automaton N and a deterministic satellite machine S such that the product N×S recognizes the same set of words as A; and
means for formally verifying whether D×N×S is empty.