Professional Documents
Culture Documents
E Reuse Methodology (eRM) Developer Manual
E Reuse Methodology (eRM) Developer Manual
This chapter includes a general introduction to this manual, to eRM, and to eVCs. It contains the
following sections:
Most of the guidelines herein apply to any scale or type of verification environment. Since e Verification
Components (eVCs) are an ultimate form of reusable verification environment, the majority of this book
relates to creating eVCs.
A key factor for reusing code is arranging it as an independent and easy-to-use code package. When
developing verification code in e, the reusable package is typically organized as an eVC (e Verification
Component). For this reason, eRM speaks a lot about eVCs: standardizing eVC development practices,
defining a common eVC user model, and ensuring that eRM-compliant eVCs are plug-and-play. In
short, this manual also explains how to develop verification components that will provide eVC users
with consistent and superior verification experiences.
The intended audience for this book includes eVC developers, verification environment developers, and
technical managers responsible for these environments.
evc_util This package includes the infrastructure syntax, types, and utilities needed
for writing eVCs. It is the core module of the eRM library.
Documents This directory contains all of the main eRM documentation. It also contains
(in the erm_docs eRM presentations in PDF format.
directory)
Golden eVCs These are example eVC packages, constructed according to eRM guidelines.
They are designed to teach eRM methodology and concepts and to provide a
starting point for eVC development. Two examples are included. One
represents a bus-based environment (vr_xbus), and the other represents a
serial data stream environment (vr_xserial). You can find the two golden
eVCs in directories with their respective names (vr_xbus, vr_xserial).
Example These are minipackages that demonstrate use of some specific features
directories provided by the eRM library, such as sequences and packaging. They all have
an ex_ prefix (for example, ex_atm, ex_soc, ex_c_bus).
Each of these packages and subdirectories has its own PACKAGE_README.txt or README.txt file
in it, giving details on the content.
Each eVC consists of a complete set of elements for stimulating, checking, and collecting coverage
information for a specific protocol or architecture. You can apply the eVC to your device under test
(DUT) to verify your implementation of the eVC protocol or architecture. eVCs expedite creation of a
more efficient test bench for your DUT. They can work with both Verilog and VHDL devices and with
all HDL simulators that are supported by Specman®.
You can use an eVC as a full verification environment or add it to a larger environment. The eVC
interface is viewable and thus can be the basis for user extensions. We recommend doing such
extensions in a separate file. Maintaining the eVC in its original form facilitates possible upgrades.
eVC implementation is often partially encrypted, especially in commercial eVCs where authors want to
protect their intellectual property. Most commercial eVCs require a specific feature license to enable
them.
This manual takes a fairly liberal approach to the question of what is an eVC. For the purposes of this
manual, an eVC is a significant, productized, modular piece of e code that can be used to verify
something and that has a single owner who is responsible for it (supporting it and possibly selling it).
Notes
• An eVC can depend on another eVC. For example, there could be a TCP/IP eVC that uses (imports)
an Ethernet eVC. That TCP/IP eVC could still be developed and sold separately.
• An eVC must be significant and productized. These are not exact terms, but clearly a 200-line
scoreboard module does not qualify as an eVC. eVCs are usually 5,000 to 20,000 lines in size, and
they embody significant knowledge and work (so that people would be willing to pay money for them).
Regardless of whether the combined VE is itself an eVC or not, when we integrate n eVCs into a VE, we
have n+1 pieces: the n eVCs and the explicitly added code for the VE. The plug-and-play considerations
described below relate to all n+1 items.
For example, there should be no name collisions between eVCs, but there should also be no name
collisions between any of the eVCs and the VE. Therefore names like pci_checks.e would not be
appropriate, because users might want them too.
Note The recommendations in this manual represent the best practices for those using Specman.
Therefore, they apply not just to eVCs but also to regular VEs. For example, unified tracing (as is
recommended for plug-and-play eVCs) is very useful when applied to blocks within a big VE, even if
neither the blocks nor the VE are ever meant to be reused.
To enable this capability, eVCs (and indeed general VEs, which could potentially be turned into eVCs)
should be written as if they are part of a universal verification environment.
Note All of the following recommendations are described in much greater detail throughout the rest of
this manual.
Typeface Represents
courier font Indicates code. For example:
do burst_response keeping {
courier bold Used to highlight important sections of code, like actions. For example:
do burst_response keeping {
bold The bold font indicates keywords in descriptive text. For example, the
following sentence contains keywords for the show ini command and
the get_symbol() routine:
You can display these settings with the show ini setting command
or retrieve them within e code with the get_symbol() routine.
italic The italic font represents user-defined variables that you must provide.
For example, the following line instructs you to type the “write cover”
as it appears, and then the actual name of a file:
[ ] square brackets Square brackets indicate optional parameters. For example, in the
following construct the keywords “list of” are optional:
[ ] bold brackets Bold square brackets are required. For example, in the following
construct you must type the bold square brackets as they appear:
Typeface Represents
cmd-prompt> Denotes the prompt for the tool you are running, including
Specman Elite, vManager, SpeXsim, or SpeXtreme.
C1>, C2>, … Denotes the SpeXsim prompt (VHDL, Verilog or mixed-HDL designs).
Also denotes a third-party Verilog simulator prompt.