Checking Parameterized Promela Models of Cache Coherence Protocols
This paper introduces a method for scalable verification of cache coherence protocols described in the PROMELA language. Scalability means that resources spent on verification (first of all, machine time and memory) do not depend on the number of processors in the system under verification. The method is comprised of three main steps. First, a PROMELA model written for a certain configuration of the system is generalized to the model being parameterized with the number of processors. To do it, some assumptions on the protocol are used as well as simple induction rules. Second, the parameterized model is abstracted from the number of processors. It is done by syntactical transformations of the model assignments, expressions, and communication actions. Finally, the abstract model is verified with the SPIN model checker in a usual way. The method description is accompanied by the proof of its correctness. It is stated that the suggested abstraction is conservative in a sense that every invariant (a property that is true in all reachable states) of the abstract model is an invariant of the original model (invariant properties are the properties of interest during verification of cache coherence protocols). The method has been automated by a tool prototype that, given a PROMELA model, parses the code, builds the abstract syntax tree, transforms it according to the rules, and maps it back to PROMELA. The tool (and the method in general) has been successfully applied to verification of the MOSI protocols implemented in the Elbrus computer systems
Proceedings of the Institute for System Programming, vol. 28, issue 4, 2016, pp. 57-76.
ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).