Updated 8/16/06 |
OpenVera is a HVL - hardware verification language. It was originally developed by Sun under the name Vera and implemented by System Science. OpenVera is based on Verilog, C++, and Java, with addtional constructs specifically for verification. It is easy to learn and use, and allows both design and verification engineers to quickly write testbenches without all the low-level Verilog code, or obscure PLI calls that have plagued previous testbenches. The OpenVera language is supported by Synopsys' Vera tool today and for a long time into the future. In addition, the OpenVera language is being added to Synopsys' VCS compiler in a phased approach. See the Synopsys web site for the latest information. In the long term, the OpenVera language is being added to the Accellera proposal for the next generation Verilog language. So the OpenVera code that you write today can be adapted for use by the future Verilog simulators. This is a collection of examples of OpenVera code. If you are looking for code, the first place to head to is the Vera installation: $VERA_HOME/examples directory. Next, try SolvNet where I have put many examples. Also, try the Open-Vera web site.
After that, try the
Verification Central
web site and the book, The Art of Verification With Vera.
Print/messaging class - Obsolete This has been replaced with
the far better
rvm_log class that ships with Vera and Native Testbench. The Reference
Verification Methodology version has better printing, sorting, filtering,
plus promotion / demotion. The later is very useful when you inject errors
into a design. Is a parity error a verification error or just a warning?
Depends on if you are expecting it or not. So don't edit your error
messages - just promote / demote them!
Passing arrays between Vera and C
This is an example of passing static and dynamic arrays from Vera to
C, and back again. Show for Vera's cycle simulator, VCS with static
linking and VCS with dynamic linking.
May 2003
Functional coverage (single) example v1.2
This is an example of instance-based functional coverage with
the coverage group declared in the class. The results of functional
coverage feed back into the random stimulus generator to give 100%
coverage faster than if there was no feedback.
April 2003
Functional coverage (multi) example v1.1
This example runs multiple short jobs to get full coverage.
The parallel testcase runs the same job with different seeds and then
generates a report to measure total coverage. The serial testcase
runs one job with seed=42, writes a coverage database, then runs a
second with seed=99 that reads in the database. By using the
previous results, it can get to full coverage in fewer cycles than
if it started from scratch.
April 2003
Vera mode for Emacs. A Vera mode for use
with Emacs. Also check $VERA_HOME/examples for support of the newest
language additions. Learn Emacs
from my examples.
Readmemh for Vera. This routine will load
dynamic and associative arrays with hex data. Let's you specify
addresses more flexibly than Verilog! Parameterized type with self
checking testbench.
Coding Tip What is the difference between default arguments and
optional arguments? Default arguments have values in case they are
not specified when the routine is called. For example, define the task:
Home SystemVerilog OpenVera PLI Verilog Verification PMC Emacs Bicycling Personal Viewlogic |