Papers
A Giant, Baby Step Forward: Agile Techniques for Hardware DesignAuthors: N. Johnson, B. Morris
This paper explores the reasons for introducing Agile Planning techniques into an ASIC/FPGA development flow to improve RTL design and functional verification with the focus on regularly producing release caliber deliverables. Taking a page from software management, Agile Planning creates a disciplined, continuously adaptable approach to plan and develop challenging projects that can scale from small to large development teams. The paper provides an overview of agile development as it has been applied in software development with plans for how it may be adapted for use in the hardware domain.
Authors: B. Morris, R. Saxe
Agile Programming is a highly disciplined methodology used in software engineering. One aspect of the Agile methodology that is applicable to ASIC/FPGA functional verification and particularly important when creating verification environments using an Object Oriented paradigm is the Test Driven Development [2]. This process encourages the creation of a separate unit test for every critical class that is defined in a system. This paper describes the value of using a SystemVerilog unit test framework when creating a functional verification environment. Applying this Agile aspect may help achieve improvements in both quality and productivity. The usage model, the design of a unit test framework created for SystemVerilog (called svunit), and a concrete example of its usage are also presented.
Authors: N. Johnson
This paper proposes a method called implicit encapsulation for creating layered stimulus models for use in constrained random verification environments. The proposed method relies heavily on the VMM class library – the atomic generator and scenario generator in particular – along with techniques typical of transaction level modeling. A set of generic components and a scalable structure is described that enables the creation of layered protocol stacks in a variety of arrangements. The intended audience includes those verifying medium to large RTL blocks that process layered protocols.
Authors: K. Muma, B. Morris
Generic programming can be used to create highly reusable and maintainable code. Reuse and maintainability are crucial elements of verification. Creating highly reusable verification components can cut verification times and time-to-market. Parameterized classes are an example of generic programming. Common methods may be implemented in a parameterized class, independent of the parameterized type(s) of the class. This paper describes how parameterized classes in SystemVerilog are used to create reusable verification data types and a common verification design pattern. In particular, we define a smart_q class that extends the functionality of the built-in queue object. This smart_q provides a set of common, useful methods, which operate on elements of any arbitrary type. In addition, the paper shows a scoreboard verification component that also uses parameterized classes effectively. Parameterized classes can be used to reduce testbench development time by creating commonly used verification components. Open-source verification component libraries exist that use parameterized classes heavily (e.g., [1]). While these libraries provide many generally useful verification components, they are not exhaustive. We encourage the use of parameterized classes in the development of new, company-specific, reusable verification IP. Three common use-cases of a scoreboard are presented, using a parameterized class-based solution.
Authors: J. Keithan, D. Landoll, P. Marriott and Bill Logan
This paper covers a project that is using advanced functional verification methods to verify a RTCA DO-254/EUROCAE ED80 Level A/B design. These methods include Constrained Random Simulation, Design Intent Specification (designer-added assertions), the Total Coverage Model (Unified Coverage Database), and Formal Verification (formal model checking). The project is a real design currently being developed at Rockwell Collins
Authors: David Jones
This paper describes VFlect, a system that facilitates object communication between C++, SystemC and SystemVerilog. Given an interface definition written in a variable of the CORBA IDL, VFlect will generate the required stubs and libraries to support cross-language method calls and object transport. The VFlect libraries use standard IEEE 1800 DPI-C library features; no proprietary features are required in the simulator. Although the current system supports SystemC and SystemVerilog, there is no reason why support for other hardware verification languages could not be added.
Authors: N. Aklilu (Scanmetrics), A. Redhead (XtremeEDA), P. Trehan (Synopsys)
Winner of the Technical Committee Award at SNUG San Jose (2008)
This paper discusses the implementation of synchronous resets. We identify the Verilog coding styles recognized by Design Compiler (DC) and the variables that can be used by DC to control this recognition. We will also discuss the structuring of reset distribution to avoid any special handling in PD. We introduce the Tcl functions developed to analyze the reset trees, as well as cover the reporting provided by DC. We will look at the timing impact of reset recognition using both wire-load and topographical synthesis. Finally, we provide some recipes to drive the recognition of synchronous resets by Design Compiler.
Authors: P. Girodias, H. van der Schoot, A. Sultan
This paper explores the use of transaction scenarios for the generation of complex stimulus in a constrained random verification environment. Using a simple riddle as an example, typical design verification issues related to stimulus generation are identifed and practical solutions are suggested.
Authors: A. Sultan, P. Girodias, H. van der Schoot
This paper aims to shed light on how to develop a basic VMM-based verification environment with the most commonly used VMM components. Drawing from real VMM-based project experiences applying the various VMM principles, we provide readers with the most useful things to know about the VMM to hit the ground running on their first VMM-based project. After reading this paper the reader should be able to answer the following questions: What does a VMM-based environment look like? What are a transaction and a transactor? What is a VMM channel? What is the built-in run flow? How do I implement constrained random stimulus generation, and functional coverage? The reader will be able to see through examples how the VMM guidelines are applied. After reading this paper, the user can take advantage of the concepts presented to ensure his first participation in a VMM-based project is both productive and successful.
Autor: A. Sutton
This paper provides an introduction to the SystemVerilog assertion language and a tutorial on writing assertions. Examples are used to explain the concepts of sequences and properties, and the behaviour of several SystemVerilog temporal operators. This example also demonstrates that a bus protocol can be thoroughly verified using assertions.
Authors: P. Marriott, S. Bailey
This paper describes how the coverage constructs in SystemVerilog can be used to architect an advanced CDV environment. The differences between basic item, cross and transition coverage must be understood in order to answer the three most important coverage questions: "What?", "When?", and "How much?".
Authors: H. van der Schoot, J. Bergeron
This paper presents several recommended practices for implementing transaction-level functional coverage in SystemVerilog. The coverage model is implemented within the methodology defined by the Verification Methodology for SystemVerilog, resulting in a number of additional useful implementation techniques.
Author: D. Jones
This paper introduces the verification engineer to the world of object-oriented design patterns. A design pattern is a conceptual model of a solution to an object-oriented programing problem. Patterns describe not algorithms, but ways of organzing ones' code to enhance resuse and comprehension. Although patterns have been part of the software engineering world for some time, they are equally applicable to verification sproblemsin hardware verification languages (HVL). This paper will discuss the motivations for patterns in general, and present three specific exampes of design apttersn as applied to real-world verification problemss. Although code exampes are given in SystemVerilog, they are equally applicable to Vera and e. For engineers migrating to SystemVerilog, design patterns will assist in converting aspect-oriented (AOP) constructs to well-structured object-oriented (OOP) constructs.
Author: D. Jones
SystemVerilog offers an exciting new environment in which to construct testbenches. Language features support constrained random generation, object-oriented programming, assertions, coverage, and more. Verification engineers new to this environment may not know wher to start or how to use these features. This paper presents a complete testbench for verifying a rock, scissors, paper arbitration module, based on a methodology developed at Mentor Graphics and XtremeEDA, aimed at building effective verification environments with minimal complexity. Due to the simplicity of the device under test (DUT) we can present the complete testbench, as it totals fewer than 300 lines of code. The first section of this paper briefly describes the motivations behind the major verification features of the SystemVerilog. The paper then proceeds to present a high-level verification environment and describe the components that comprise it.
Presentations and Tutorials VMM Register Abstraction Layer
Authors: A. Sultan (XtremeEDA), J. Bergeron (Synopsys)
This San Jose SNUG 2008 presentation provides a detailed view of the usage model of the Verification Methodology Manual (VMM) Register Abstraction Layer (RAL). The RAL provides all the necessary verification components to define and access an ASIC/FPGA's register map. This in-depth tutorial provides a great overview on how to use this valuable new component of the VMM.
Authors: A. Sultan, H. van der Schoot, P. Girodias
This San Jose SNUG 2007 tutorial provides a great overview of the Verification Methodology Manual (VMM) verification components. This presentation identifies the key elements of a reusable verification environment using the VMM library and the SystemVerilog language.
Authors: P. Marriott, H. Van der Schoot
This presentation was given to a Mentor Users' Conference in 2006. It outlines the necesary elements to create a reusable, maintainable verification environment in System Verilog.
Web Seminars System Verilog for Verification
A seminar with an overview of everything verification professionals need to create advanced constrained-random, coverage-driven, self-checking testbenches in SystemVerilog