In this paper, we describe a completely automated framework for iterative abstraction refinement that is fully integrated
into a formal-verification environment. This environment consists of three basic software tools: Forecast, a BDD-based model
checker, Thunder, a SAT-based bounded model checker, and MCE, a technology for multiple-counterexample analysis. In our framework,
the initial abstraction is chosen relative to the property under verification. The abstraction is model checked by Forecast;
in case of failure, a counterexample is returned. Our framework includes an abstract counterexample analyzer module that applies
techniques for bounded model checking to check whether the abstract counterexample holds in the concrete model. If it does,
it is extended to a concrete counterexample. This important capability is provided as a separate tool that also addresses
one of the major problems of verification by manual abstraction. If the counterexample is spurious, we use a novel refinement
heuristic based on MCE to guide the refinement. After the part of the abstract model to be refined is chosen, our refinement
algorithm computes a new abstraction that includes as much logic as possible without adding too many new variables, therefore
striking a balance between refining the abstraction and keeping its size manageable. We demonstrate the effectiveness of our
framework on challenging Intel designs that were not amenable to BDD-based model-checking approaches.
Supported in part by NSF grants CCR-9700061, CCR-9988322, IIS-9908435, IIS-9978135, and EIA-0086264, by BSF grant 9800096,
and by a grant from the Intel Corporation.