Accelerated Verification Process Automation


Abstract


A wide variety of technology is available today to describe and model the behavior of system-level devices, from high-level and abstract architectural modeling languages, to hardware description languages running in software simulators, to hardware acceleration and beyond. At the same time, with verification so often the bottleneck to design release, it is the aim of verification engineers to develop effective verification environments, to do so quickly, and to save time by leveraging the development effort in as many places as possible. This document details a merging of the best-known methods for verification environment design with state-of-the-art acceleration technology to provide an optimized solution for running powerful verification cycles at acceleration speeds.


The Verification Problem


There has never been a time when verification solutions have had to be faster or smarter than they need to be now. Where engineers previously had the luxury of working in small domains and in hardware models with limited interactions, the growing momentum in system-on-chip (SoC) development has meant a tremendous growth in the amount of verification required for a given design.

System design projects are extremely large and complex, an average design today is over one million gates, with 5-9 increasingly complex interfaces, and short design schedules. This is creating a verification crisis, causing teams to run orders of magnitude more simulation cycles. In addition, directed tests are not easily created or maintained and the interface interactions have grown exponentially. The team must also verify that the design adheres to the specification at each abstraction level, and each level requires a different execution engine.

Considering all this, combined with the ever-increasing cost of implementation as geometries continue to shrink, the cost of failure has never been higher.


VPA: Maximizing Verification Effectiveness


The approach to tackling the ever-increasing verification problem is twofold: verification engineers need to focus on verification infrastructure and verification methodology.

In recent years, HDL simulation technology itself has matured to the point where order-of-magnitude performance gains are no longer being seen. This has led savvy verification engineers to focus on getting more verification value from available simulation cycles. Furthermore, the development of sophisticated verification environments means additional time at the front end of verification, and as these environments become more sophisticated, time-to-simulation increases as well.

Verisity's Verification Process Automation (VPA) solutions address both of these concerns; their aim is to simplify and automate the creation and maintenance of sophisticated, scalable, unit- to system-level verification environments, and enable a coverage-driven methodology which focuses the verification effort on those areas of the design which have been inadequately exercised, eliminating brute-force verification efforts which rely on quantity of testing rather than quality to determine verification thoroughness.

In addition to a fundamental constrained-random, coverage-driven methodology, VPA comprises Verisity's e Reuse Methodology (eRM), which simplifies the creation of reusable verification IP and the System Verification Methodology (sVM), which encapsulates sophisticated system-level verification technology targeted at SoC verification and hardware/software co-verification.

At the same time, verification engineers have long recognized the need to move beyond software logic simulators for particular verification problems. Among these are:

  • Long simulations requiring extensive run-time to get the device under test (DUT) to a particular state;
  • Large DUTs with so much HDL that they have prohibitively slow performance in a software simulator, in terms of cycles per second;
  • The need for in-circuit emulation of the DUT in its target hardware system.

Acceleration and emulation technologies for this target space have shown impressive gains over software simulation speeds, but at the same time the verification methodology employed for acceleration hasn't shown a great deal of improvement. Obviously, the way to maximize verification effort is the combination of both approaches: the development of an accelerated VPA methodology.

Reuse of verification IP is an important aspect of VPA. Reuse improves not only verification productivity (reuse drastically cuts development time), but also quality (the experience gained in developing a verification IP tracks with it) and predictability (the application and time it takes to apply a verification component to a problem is well known).

Two different aspects of reuse are well known: vertical, or within various integration models of a design, from unit- to system-level; and horizontal, from one project to another which share follow-on protocols and modules. VPA introduces a third axis of reuse, one that runs through the various technologies employed across the life of a project, through high-level architectural modeling, HDL simulation technology, acceleration and post-silicon verification, as shown in Figure 1.




Figure 1 Verification Environment Reuse


But how do we develop effective accelerated environments that can be used along the length of all three axes, while still leveraging the power of VPA? To start answering this question, let's look at how accelerated environments have evolved.


The Evolution of Accelerated Verification Methodology


Probably the most common approach to accelerated verification is to develop a testbench which runs entirely on the accelerator or emulator. Even among teams developing sophisticated environments for the simulation phase of verification, the difficulty in applying these environments to acceleration often results in separate development of a simpler testbench to run on the accelerator. While this generally produces the best-performing solution - there are no context switches to run software outside of the accelerator - it limits the quality of verification that can be done and results in the development of multiple environments intended to ensure the design's adherence to the specification.

Pure accelerated testbenches require coding the testbench in synthesizable HDL, such as Verilog or VHDL, which restricts the constructs available. These limitations make all three aspects of an effective verification environment difficult: sophisticated stimulus generation, automated checking and functional coverage. Without these aspects, synthesizable HDL testbenches are likely to verify less of the design, not detect errors when they do occur and give ineffective feedback about how much of the design has been verified, and therefore the very long and fast runs they enable can give a false sense of security.

Another approach is to couple an accelerator with an effective verification engine running in software, and to treat the accelerator as the DUT in this mixed environment. In this model, the verification environment can employ engines which powerfully enable generation, coverage and checking. The verification environment interacts with the DUT on the accelerator when necessary, to drive stimulus or monitor device output behavior or internal state.

One limitation of this approach is that in most cases, interaction with the DUT is of high frequency, generally at the base frequency of the device or a small multiple thereof. A verification environment running in software and interacting with the device on every clock does not allow the accelerator to run at anywhere near a speed at which it is capable.

These limitations lead naturally to transaction-based interfaces to acceleration, where a software environment is coupled with HDL transactors in the accelerator to enable a more efficient communication between software and the accelerator. On the positive side, this approach does enable faster execution; on the downside they require a "roll your own" interface and a verification environment that's an amalgam of synthesizable HDL and high-level software. In addition to the difficulty in synchronizing verification environment changes with the custom accelerated transactors, there are now two different environments for verifying specification adherence: one for simulation, one for acceleration. Additionally, of course, there is still a lack of sophisticated constructs on the acceleration side for protocol checking and functional coverage.

Verisity's eCelerator was developed to address these limitations. eCelerator implements a buffer-port based approach to interacting with the DUT; this decoupled communication enables the accelerator to run for longer periods, at higher speeds between interactions with the verification environment. High-frequency VE components are still written in the e verification language, but are then compiled to hardware modules, which can then run alongside the DUT in the accelerator; buffer ports convey generated stimulus into the DUT and observed data back to the verification environment.

eCelerator represents the state-of-the-art in combining powerful e-language verification environments and high-speed acceleration boxes; while other accelerated verification approaches remain stuck in the past, it enables optimizing acceleration cycles through coverage-driven methodology. And coupled with eRM, this solution allows reuse vertically, horizontally and along the infrastructure axis as well. But the underlying technology in typical accelerators can still be limiting to the verification engineer.

Limitations of Cycle-based Accelerators
In discussing the development of an accelerated verification environment, we're not just describing environments made from scratch, but also existing software-only environments newly targeted at accelerated platforms. Whether we're developing or converting such an environment, we need to be aware of the underlying simulation, acceleration or emulation platform infrastructure since this will determine what capabilities can be migrated from the verification environment.

Many accelerators on the market today are cycle-based in nature and require any accelerated code to be written within that paradigm. DUT and testbench components targeted for acceleration must do all their work within the span of a fundamental clock tick; the longest path within this clock is one determining factor of overall accelerator speed.

This can constrain what can be done in a verification environment which is to be mapped to the hardware. While an intelligent compiler can optimize the translation of verification language code into accelerated units, there are hard limits on what it can do before the constructs available to the verification engineer are restricted.

One fundamental limitation of cycle-based technology is the inability to allow a relaxation of events to occur. In a typical Specman Elite verification environment, for example, many events can happen in zero simulator time; these events may be emitted manually - in a time-consuming method (TCM), for example - or as the result of a temporal expression, and relaxation proceeds. But in a cycle-based accelerator, it's not possible to have an indefinite relaxation of events; rather, the testbench compilation software is forced to choose one event evaluation paradigm.

The SpeXtreme Solution


Verisity's SpeXtreme combines the system-level VPA technology of SpeXsim with state-of-the-art acceleration technology of Xtreme-II, and comprises the following elements:
  • An e RCC compiler which translates e units into accelerated modules;
  • A buffered transaction-based interface to communicate between accelerated and non-accelerated units;
  • ReConfigurable Computing (RCC) acceleration technology with event-based behavioral processors;
  • Acceleration methodology guidelines to simplify development and reuse of accelerated verification environments.

The testbench compiler translates a verification environment which has been partitioned between accelerated and non-accelerated modules; what follows is an introduction to the partitioning process.

Designing for Acceleration
The primary consideration when developing an accelerated verification environment is the hardware-software interface. Every task switch between the accelerator and the software verification environment is detrimental to performance; the worst case is a software module which accesses the DUT on every clock. Such an environment is unlikely to run any faster than one running purely in software. Effective partitioning on the e side, therefore, is essential to high-performance accelerated environments. A properly partitioned verification environment has these properties:

  • Units with high-frequency access to the DUT are compiled into the accelerator;
  • These units are connected to the rest of the environment on the software side through buffer ports;
  • As much as possible, access to the DUT should be restricted to accelerated e units.

Figure 2 shows a typical Specman Elite verification environment structured in accordance with eRM. The units of the environment run at various speeds relative to the device under test (DUT): interface checking and coverage run at the same order of magnitude as the DUT; sequence drivers and high-level checkers run at a slower transaction speed; and the highest-level checking and coverage units run even slower. Bus functional models (BFMs) and transaction collectors bridge the world between the DUT and the lower-frequency components, and so it is here that partitioning between accelerated and unaccelerated units occurs.




Figure 2 Specman Elite verification environment


The same environment partitioned for acceleration is pictured in Figure 3. The frequency-bridging units have been partitioned into unaccelerated and accelerated units, with the latter compiled into accelerated modules and placed alongside the DUT in the accelerator.




Figure 3 Verification environment partitioned for acceleration


But it's not partitioning alone which results in optimal performance, but also the addition of buffer ports. Buffer ports are e constructs which serve to minimize the frequency of task switches between the accelerator and the software environment; they buffer the stimulus driven to the DUT and the monitored data returned to the verification environment. A well-partitioned verification environment can generate stimulus in batch, producing multiple data items to be driven into the DUT, and do its checking in batch with the monitored DUT output. In this way, the accelerator can run several transactions before requiring interaction with the software environment.

Enabling an Incremental Migration Path
Partitioning an existing verification environment for acceleration must be accomplished for optimal performance. However, it is possible to start migrating an environment to acceleration without doing all the work it takes to achieve the optimal partitioning. SpeXtreme employs a mixed-access capability which allows verification environment units on the software side to access the DUT directly, without requiring buffer ports or a corresponding accelerated unit.

In this way, SpeXtreme provides a faster path to performance for existing verification environments; by allowing both accelerated and non-accelerated modules access to the DUT, SpeXtreme enables the incremental migration of the environment to the optimal methodology. This allows engineers to migrate units to acceleration over time, choosing those first whose migration would represent the largest performance gain.

This technology also allows units which access the DUT at a reasonably low frequency to do so easily; examples of this might be:

  • Initial device setup by direct access;
  • Corner case stimulus where occasionally data items may be generated based on the DUT state;
  • Final white-box device checking where additional visibility may be required.

To enable this migration, the SpeXtreme solution includes profiling tools to identify critical-path blocks. The principle behind these profilers is that verification environment units which access DUT signals most frequently are primary targets for acceleration. The profiler therefore samples a typical run and determines which blocks would be best migrated immediately, and which can wait. From this, the verification engineer can make an intelligent choice not only about effort prioritization, but about leaving some blocks unaccelerated for the flexibility of accessing DUT signals on the software side.

The Benefits of Behavioral Technology
SpeXtreme employs Verisity's ReConfigurable Computing (RCC) technology. With RCC's behavioral processors, behavioral code can be mapped directly into accelerated technology. Since high-frequency portions of the e environment are compiled into accelerated technology, RCC technology translates directly into new possibilities for writing high-level verification environments; not only do behavioral processors enable a wider range of coding styles to be employed, but the event-based nature of the technology enables a higher-fidelity correspondence between the execution of the verification environment in software vs. on the accelerator.

In addition to broadening the range of what can be implemented in hardware for both the DUT description and the verification environment, SpeXtreme's e behavioral processors can make the hardware that is synthesized faster and more efficient. While cycle-based accelerators often require creating long-path hardware to implement functionality in one clock cycle, with event-based technology, an iterative module can be compiled which has a shorter path and smaller footprint.

All of this means that not only will existing verification environment code be easier to migrate to accelerated technology, but methodologies for accelerated verification will be less restrictive, easier to learn and implement, and they will fit better in acceleration than ever before.

Acceleration Methodology
SpeXtreme, like all Verisity products, is developed along with a methodology for effective implementation. As part of Verisity's VPA vision, SpeXtreme comes paired with an acceleration methodology, with recommendations on best practices in order to easily implement solutions optimized for performance, reuse, and ease of implementation. By developing the acceleration methodology in cooperation with our users, it provides an encapsulation of all best-known methods, accelerating environment development and further easing the adoption of effective accelerated verification environments.

Acceleration methodology applies the time-proven best-known methods developed in eRM and sVM, and extends them to include:

  • Partitioning methodology for acceleration;
  • Guidelines for reuse, for developing verification environments which can move from architectural modeling through simulation and into acceleration;
  • Acceleration-specific guidelines on optimizing the interface between software and acceleration.

These guidelines can be used to simplify the crafting of verification environments which can be easily moved between acceleration and simulation. Just as important, it improves the quality of verification by eliminating multiple verification environment development, ensuring a single model for verifying specification adherence across all technologies


Summary


With verification consuming the majority of the design cycle and most often the bottleneck to closure, it's vital for verification teams develop effective accelerated verification environments. A successful methodology simplifies and automates the creation and maintenance of sophisticated, scalable environments and enables reuse throughout the verification process.

Verisity's SpeXtreme greatly simplifies the migration and creation of verification environments for accelerated technology. With its e behavioral processors and e RCC compilation technology, more flexibility than ever is available to verification engineers for accelerated environments, and in acceleration methodology, verification engineers have the tools they need to maximize the quality, productivity and predictability of their efforts.

© Copyright 2005 Verisity Design, Inc. All rights reserved. Privacy Policy.