Functional verification is one of the bottlenecks of hardware design. System verification, the closing phase of the verification process, validates the integration of several previously verified components, and provides the last line of defense against a bug escaping to silicon. System verification deals with highly complex designs, and invariably suffers from tight schedules and scarce resources.
X-Gen is a test-case generator aimed at the system level. As input, it accepts an abstract model of the verified system and a test template (a request file). The abstract model represents the architecture of the verified system, but it also includes testing knowledge – how to increase the chances of exposing a bug and increase the coverage of generated test cases. Given these inputs, X-Gen generates test cases that fulfill the requirements specified by a verification engineer in the test-template, but at the same time uses testing knowledge to form intelligent background noise that increases the test-case quality.
X-Gen: general architecture
The two main technical contributions of X-Gen are the adaptation of model-based stimulus generation to the system level and a powerful test-template language for this domain. Together, these two contributions allow IBM to configure X-Gen for new state-of-the-art hardware systems quickly and at lower cost than previously used solutions, enabling higher levels of verification with fewer resources. In addition, X-Gen required the development of state-of-the-art constraint satisfaction technology, to cope with some of the algorithmic issues arising from the system-level test-case generation.
Model-based test-case generators are partitioned into a generic, system independent engine, and a model that describes the verified system. The notion of model-based test generation was originally developed for processor-level verification and implemented by tools such as Genesys. X-Gen, however, is the first test-case generator to bring this concept to the system level. The open nature of such stimuli generators - their partition of a generator into a generic engine and a system model - carries several advantages. First, test-case generation for new systems becomes an easier (and less costly) task. This is especially true in cases where pieces of the system's model, for example a PowerPC core, can be reused by several systems. Second, there is a structured, well defined way to integrate new knowledge about the verified system into the tool. And third, a generic test program generator can include generic testing-knowledge that applies and that is reused across many systems.
X-Gen was developed by IBM's Haifa Research Lab. It has been a crucial element in the verification of the majority of the PowerPC-based systems in IBM, including the Cell processor, the POWER-based systems used at the heart of IBM's iSeries, pSeries, and OpenPower eServers, and the chip that drives Microsoft's XBOX 360.
Related Publications
R. Emek and Y. Naveh. Scheduling of Transactions for System-Level Test-Case Generation
. Eighth IEEE International High-Level Design Validation and Test Workshop. November 2003.
Roy Emek, Itai Jaeger, Yehuda Naveh, Gadi Bergman, Guy Aloni,
Yoav Katz, Monica Farkash, Igor Dozoretz and Alex Goldin. X-Gen: A Random Test-Case Generator for Systems and SoCs. .
E.Bin, R.Emek, G.Shurek and A.Ziv. Using a Constraint Satisfaction Formulation and Solution Techniques for Random Test Program Generation. IBM Systems Journal 41(3):386-402, 2002.
R.Emek, I.Jaeger, Y.Naveh, G.Bergman, G.Aloni, Y.Katz, M.Farkash, I.Dozoretz and A.Goldin. X-Gen: A Random Test-Case Generator for Systems and SoCs. Seventh IEEE International High-Level Design Validation and Test Workshop. October 2002.
R.Emek, I.Jaeger, Y.Katz and Y.Naveh. Quality Improvement Methods for System-level Stimuli Generation. IEEE International Conference on Computer Design: VLSI in Computers and Processors, ICCD. October 2004.

Yoav Katz Researcher 








