Functional validation of programmable architectures

Validation of programmable architectures, consisting of processor cores, coprocessors, and memory subsystems, is one of the major bottlenecks in current system-on-chip design methodology. A critical challenge in validation of such systems is the lack of a golden reference model. Traditional validation techniques employ different reference models depending on the abstraction level and verification task (e.g., functional simulation or property checking), resulting in potential inconsistencies between multiple reference models. This paper presents a validation methodology that uses an architecture description language (ADL) based specification as a golden reference model for validation of programmable architectures, and generation of executable models such as simulators and hardware prototypes. We present a validation framework that uses the generated hardware as a reference model to verify the hand-written implementation using a combination of symbolic simulation and equivalence checking. We also present functional coverage based test generation techniques for validation of pipelined processor architectures. Finally, the generated simulator and hardware models are also used for early exploration of programmable architectures.

[1]  Nikil D. Dutt,et al.  Functional coverage driven test generation for validation of pipelined processors , 2005, Design, Automation and Test in Europe.

[2]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[3]  David L. Dill,et al.  Automatic verification of Pipelined Microprocessor Control , 1994, CAV.

[4]  Mark Bickford,et al.  Formal verification of a pipelined microprocessor , 1990, IEEE Software.

[5]  Ranjit Jhala,et al.  Microarchitecture Verification by Compositional Model Checking , 2001, CAV.

[6]  Shmuel Ur,et al.  Micro architecture coverage directed generation of test programs , 1999, DAC '99.

[7]  Adrian J. Isles,et al.  Formal verification of pipeline control using controlled token nets and abstract interpretation , 1998, 1998 IEEE/ACM International Conference on Computer-Aided Design. Digest of Technical Papers (IEEE Cat. No.98CB36287).

[8]  Nikil D. Dutt,et al.  Automatic modeling and validation of pipeline specifications driven by an architecture description language [SoC] , 2002, Proceedings of ASP-DAC/VLSI Design 2002. 7th Asia and South Pacific Design Automation Conference and 15h International Conference on VLSI Design.

[9]  Nikil D. Dutt,et al.  Automatic validation of pipeline specifications , 2001, Sixth IEEE International High-Level Design Validation and Test Workshop.

[10]  G.E. Moore,et al.  Cramming More Components Onto Integrated Circuits , 1998, Proceedings of the IEEE.

[11]  Nikil D. Dutt,et al.  Automatic verification of in-order execution in microprocessors with fragmented pipelines and multicycle functional units , 2002, Proceedings 2002 Design, Automation and Test in Europe Conference and Exhibition.

[12]  David Cyrluk,et al.  Microprocessor Verification in PVS - A Methodology and Simple Example , 1993 .

[13]  Aharon Aharon,et al.  Test Program Generation for Functional Verification of PowePC Processors in IBM , 1995, 32nd Design Automation Conference.

[14]  Nikil D. Dutt,et al.  Modeling and Verification of Pipelined Embedded Processors in the Presence of Hazards and Exceptions , 2002, DIPES.

[15]  Nikil D. Dutt,et al.  Processor-memory coexploration using an architecture description language , 2004, TECS.

[16]  Nikil D. Dutt,et al.  EXPRESSION: a language for architecture exploration through compiler/simulator retargetability , 1999, Design, Automation and Test in Europe Conference and Exhibition, 1999. Proceedings (Cat. No. PR00078).

[17]  Nikil D. Dutt,et al.  Graph-based functional test program generation for pipelined processors , 2004, Proceedings Design, Automation and Test in Europe Conference and Exhibition.

[18]  Jun Sawada,et al.  Processor Verification with Precise Exeptions and Speculative Execution , 1998, CAV.

[19]  David L. Dill,et al.  Formal Verification of Out-of-Order Execution Using Incremental Flushing , 1998, CAV.

[20]  Nikil D. Dutt,et al.  Functional abstraction driven design space exploration of heterogeneous programmable architectures , 2001, International Symposium on System Synthesis (IEEE Cat. No.01EX526).

[21]  Ganesh Gopalakrishnan,et al.  Systematic verification of pipelined microprocessors , 2000 .

[22]  Randal E. Bryant,et al.  Formal verification of superscalar microprocessors with multicycle functional units, exceptions, and branch prediction , 2000, Proceedings 37th Design Automation Conference.

[23]  Jian Shen,et al.  Functional verification of the equator MAP1000 microprocessor , 1999, DAC '99.

[24]  Bob Bentley High level validation of next-generation microprocessors , 2002, Seventh IEEE International High-Level Design Validation and Test Workshop, 2002..

[25]  John P. Hayes,et al.  High-level test generation for design verification of pipelined microprocessors , 1999, DAC '99.

[26]  Nikil D. Dutt,et al.  Automatic functional test program generation for pipelined processors using model checking , 2002, Seventh IEEE International High-Level Design Validation and Test Workshop, 2002..

[27]  Nikil D. Dutt,et al.  Towards Automatic Validation of Dynamic Behavior in Pipelined Processor Specifications , 2003, Des. Autom. Embed. Syst..

[28]  Nikil D. Dutt,et al.  Synthesis-driven exploration of pipelined embedded processors , 2004, 17th International Conference on VLSI Design. Proceedings..