Verifying a Multiprocessor Cache Controller Using Random Case Generalization

David A. Wood, Garth A. Gibson and Randy H. Katz

EECS Department
University of California, Berkeley
Technical Report No. UCB/CSD-89-490
January 1989

http://www2.eecs.berkeley.edu/Pubs/TechRpts/1989/CSD-89-490.pdf

The newest generation of cache controller chips provide coherency to support multiprocessor systems, i.e., the controllers coordinate access to the cache memories to guarantee a single global view of memory. The cache coherency protocols they implement complicate the controller design, making design verification difficult. In the design of the cache controller for SPUR, a shared memory multiprocessor designed and built at U.C. Berkeley, we developed a random tester to generate and verify the complex interactions between multiple processors in the functional simulation. Replacing the CPU model, the tester generates memory references by randomly selecting from a script of actions and checks. The checks verify correct completion of their corresponding actions. The tester was easy to develop, and detected over half of the functional bugs uncovered during simulation. We used an assembly language version of the random tester to verify the prototype hardware. A multiprocessor system is operational; it runs the Sprite operating system and is being used for experiments in parallel programming.


BibTeX citation:

@techreport{Wood:CSD-89-490,
    Author = {Wood, David A. and Gibson, Garth A. and Katz, Randy H.},
    Title = {Verifying a Multiprocessor Cache Controller Using Random Case Generalization},
    Institution = {EECS Department, University of California, Berkeley},
    Year = {1989},
    Month = {Jan},
    URL = {http://www2.eecs.berkeley.edu/Pubs/TechRpts/1989/6169.html},
    Number = {UCB/CSD-89-490},
    Abstract = {The newest generation of cache controller chips provide coherency to support multiprocessor systems, i.e., the controllers coordinate access to the cache memories to guarantee a single global view of memory. The cache coherency protocols they implement complicate the controller design, making design verification difficult. In the design of the cache controller for SPUR, a shared memory multiprocessor designed and built at U.C. Berkeley, we developed a random tester to generate and verify the complex interactions between multiple processors in the functional simulation. Replacing the CPU model, the tester generates memory references by randomly selecting from a script of actions and checks. The checks verify correct completion of their corresponding actions. The tester was easy to develop, and detected over half of the functional bugs uncovered during simulation. We used an assembly language version of the random tester to verify the prototype hardware. A multiprocessor system is operational; it runs the Sprite operating system and is being used for experiments in parallel programming.}
}

EndNote citation:

%0 Report
%A Wood, David A.
%A Gibson, Garth A.
%A Katz, Randy H.
%T Verifying a Multiprocessor Cache Controller Using Random Case Generalization
%I EECS Department, University of California, Berkeley
%D 1989
%@ UCB/CSD-89-490
%U http://www2.eecs.berkeley.edu/Pubs/TechRpts/1989/6169.html
%F Wood:CSD-89-490