|
 |
SynthWorks' VHDL Papers
Published Papers

Conference |
Paper Title |
Date |
Core topic for several conferences:
SEFUW 2023 (ESA)
OSDA 2023 (Open Source DA)
MAPLD 2023 (NASA)
FPGA Conference Europe 2023 |
OSVVM in a Nut Shell: A Quick Overview of VHDL’s #1 Verification Methodology
OSVVM is an advanced verification methodology that defines a VHDL verification framework, verification utility library, verification component library, scripting API, and co-simulation capability that simplifies your FPGA or ASIC verification project from start to finish. Using these libraries, you can create a simple, readable, and powerful testbench that is suitable for either a simple FPGA block or a complex ASIC.
OSVVM is developed by the same VHDL experts who have helped develop VHDL standards. We have used our expert VHDL skills to create advanced verification capabilities that provide:
- A structured transaction-based verification framework using verification components.
- A common, shared transaction API for address bus (AXI4, Axi4Lite, Avalon, …) and streaming (AXI Stream, UART) verification components.
- Improved readability and reviewability by the whole team including software and system engineers.
- Improved reuse and reduced project schedules.
- Buzz word features including Constrained Random, Functional Coverage, Scoreboards, FIFOs, Memory Models, error logging and reporting, and message filtering that are simple to use and work like built-in language features.
- A common scripting API to run all simulators. OSVVM scripting supports GHDL, NVC, Aldec Riviera-PRO and ActiveHDL, Siemens Questa and ModelSim, Synopsys VCS, and Cadence Xcelium.
- A Co-simulation capability that supports running software (C++) in a hardware simulation environment.
- Unmatched test reporting with HTML based test suite reports, test case reports, and logs that facilitate debug and test artifact collection.
- Support for continuous integration (CI/CD) with JUnit XML test suite reporting.
- A rival to the verification capabilities of SystemVerilog + UVM.
OSVVM has grown rapidly during the COVID years, giving us better capability, better test reporting (HTML and Junit), and scripting that is simple to use (and works with most VHDL simulators). This presentation will show how these advances fit into the overall OSVVM Methodology.
Looking to improve your VHDL verification methodology? OSVVM provides a complete solution for VHDL ASIC or FPGA verification. There is no new language to learn. It is simple, powerful, and concise. Each piece can be used separately. Hence, you can learn and adopt pieces as you need them.
Maybe your EDA vendor has suggested that you should be using SystemVerilog for verification. According to the
2022 Wilson Verification Survey, for both FPGA design and verification, VHDL is used more often than Verilog or SystemVerilog. Likewise, in the survey you will find that OSVVM is the #1 VHDL verification methodology.
|
Last Updated: July 2023 |
FPGA Conference Europe 2023 |
OSVVM Testbenches: Level Up Your Tests and Testbenches
A slower paced, indepth background writing tests and testbenches using OSVVM.
A good companion to our other presentations.
|
July 5, 2023 |
FPGA Conference Europe 2023 |
Faster than "Lite" Verification Component Development with OSVVM
Verification components are a fundamental part of an advanced testbench framework. OSVVM creates verification components with three steps: create the transaction interface, create the transaction API, and create the VC functionality.
OSVVM has codified (internally standardized) the transaction interface and the transaction API for address bus interfaces (such as AXI, APB, Avalon, …) as well as for stream interfaces (such as UART, AxiStream, …). We call these our Address Bus and Stream Model Independent Transactions and provide these as part of our “osvvm_common” VC support library.
The benefit to VC developers creating an OSVVM address bus or streaming VC is that there is only one step to create a VC – create the VC functionality. For a basic implementation of the VC, this step is no more complex than creating the functionality in a procedure.
The benefit to test developers is that verification components of the same class (address bus or stream) either implement all or a subset of the OSVVM Model Independent Transactions – hence, test developers already know the API (call interface) to write tests. This makes writing tests easier. It also facilitates the re-use of test sequences between interfaces of the same class.
At the end of the day, OSVVM does not need a "Lite" of our verification framework because we make writing verification components as simple as writing a procedure. Furthermore, any of OSVVM's growing library of verification components can be used as a template for getting started.
|
July 5, 2023 |
FPGA Conference Europe 2023 (presentation)
MAPLD 2023 (poster) |
OSVVM’s Test Reports and Simulator Independent Scripting
According to the 2022 Wilson Verification Survey FPGA verification engineers spend 47% of their time debugging. As a result, we need good scripting to simplify running tests and good reports to simplify debug and help find problems quickly.
Scripting can be complicated no matter what language – particularly with EDA tools that need to stay rooted in one directory while it is advantageous co-locate the user scripts with the verification IP they support. As a result, the scripts must manage the file source locations relative to the simulator directory. Further complicating the scripts is that each simulator API has a different way of specifying commands and command options. No wonder it is frustrating and messy.
With OSVVM scripting, it is ok to hate TCL as it is unlikely you will be use it directly. OSVVM creates a procedure-based API on top of TCL. User scripts are based on the OSVVM simple simulator command API that uses paths that are relative to the script's location. The messy TCL stuff is handled internally by the OSVVM command API. The result is that scripts include just a little be more than a source file list. Generally, the most TCL that user scripts need is a simple if statement – but even this is rare (and there are examples in the OSVVM library).
Not meaning to name drop, but OSVVM scripting supports Aldec's Active-HDL and Riviera-PRO, Siemens' ModelSim and QuestaSim, GHDL, NVC, Synopsys' VCS, and Cadence's Xcelium.
With respect to reports, when we run a set of tests, we need to be able to assess whether all test cases passed or quickly identify which test cases failed. Once we have determined which test case failed, we need to have detailed information for each test case in a separate report that helps reveal the source of the issue.
OSVVM's test reporting capability adds another reason as to why OSVVM should be your VHDL Verification Methodology. Our test reporting includes:
- An HTML Build Summary Report for human inspection that summarizes the completion status of each test case in a test suite.
- A JUnit XML Build Summary Report for use with continuous integration (CI/CD) tools.
- A separate HTML Test Case Detailed report for each test case with Alert, Functional Coverage, and Scoreboard reports.
- An HTML based simulator transcript/log files (simulator output).
- A text-based test case transcript file (from OSVVM's TranscriptOpen).
- Links to tool generated code coverage reports.
Why do we go to all this trouble? When OSVVM runs its full regression suite, our build includes 22 test suites with a total of 524 test cases. The log file is 170K lines long. Without good tools we could not easily run our regressions and quickly assess whether it passed or failed – and if it fails, quickly find which test case failed.
How well does OSVVM work with continuous integration tools? OSVVM uses our scripts and JUnit XML output when running our verification component regression suite on GitHub using GHDL. See See github.com/OSVVM/OsvvmLibraries/actions.
This session was done as a poster. OSVVM’s Test Reports and Simulator Independent Scripting as a poster.
Report Description |
Link |
Run of OsvvmLibraries/RunAllTestsWithCoverage.pro |
OsvvmLibraries_RunAllTestsWithCoverage.html |
Run of OsvvmLibraries/RunErrorTestsWithCoverage.pro which has test case errors |
sim_RunDemo.html |
Run of Coverage on Public and Private OSVVM Test Suites |
sim_RunAllTestsWithCoverage.html |
Alternately, run the OSVVM demo and create your own |
Directions to run the demo. |
|
July 4, 2023 |
Stopped uploading presentations for a while. Getting back to it now. |
FPGAs: Establishing a 'Fit for Purpose' Design Flow |
VHDL Testbench Techniques that Leapfrog SystemVerilog
Verification can consume a good portion of a design cycle.
What we need is a methodology that facilitates thorough testing
and timely completion.
Attempting to achieve this, other verification methodologies
(such as SystemVerilog's UVM) have gone in a direction that
requires OO techniques and a specialist in verification.
This presentation, on the other hand, provides an overview of a
VHDL methodology that is simple, powerful, and readable by both
design and verification engineers.
In addition, it supports all important testbench features:
TLM (transaction level modeling), constrained random, functional coverage,
intelligent testbenches, OSVVM, reuse, interfaces, scoreboards,
concurrency and synchronization, and memory models.
Slides: VHDL Testbench Techniques that Leapfrog SystemVerilog
To learn more, attend our
Advanced VHDL Testbenches and Verification - OSVVM Boot Camp class.
Also see our blog posts at
SynthWorks OSVVM Blog
and
OSVVM Community and Forums.
|
September 11, 2013 |
Webinar with Aldec |
VHDL Intelligent Coverage Using Open Source VHDL Verification Methodology (OSVVM)
The Open Source VHDL Verification Methodology (OSVVM) provides
a concise, powerful approach to advanced VHDL testbenches.
OSVVM's "Intelligent Coverage™" is a intelligent testbench
methodology that randomly selects holes in the functional
coverage model and uses these for stimulus generation.
This presentation shows the basics of adding
functional coverage, Intelligent Coverage, and constrained
random methods to your current testbench.
In addition, it shows how Intelligent Coverage is
2X less work, 5X or more faster in simulation, and
more capable than a constrained random approach using
either SystemVerilog/UVM or 'e'.
Slides
Audio recording on Aldec's site
For more, see
SynthWorks OSVVM Blog
and
OSVVM Community and Forums.
To learn more, attend our
Advanced VHDL Testbenches and Verification - OSVVM Boot Camp class.
OSVVM is based on methodology and packages we developed for the class.
In this class, we provide a super set of the OSVVM packages that
facilitate transaction level modeling (tlm), self-checking,
scoreboards, memory modeling, synchronization methods, functional
coverage, and randomization. Our modeling approach is accessible by
both verification and RTL designers.
|
July 18, 2013 |
MAPLD 2013 |
VHDL's OSVVM, the Death of SystemVerilog?
A shorter version of the July webinar.
Slides
|
April 2013 |
MAPLD 2013 |
VHDL-2008, The End of Verbosity!
VHDL-2008 removed verbosity from VHDL.
This presentation contrasts the verbose syntax
with the "new VHDL" given to us by VHDL-2008.
Slides
|
April 2013 |
Numerous |
IEEE-1076 2008 aka VHDL-200X. Approved by IEEE REVCOM in September 2008
The IEEE VASG started this work as the VHDL-200x project in early 2003.
Good technical progress was made, however, there was no funding to do
the language editing. Accellera’s VHDL Technical Subcommittee took
over the work in fall of 2005, funded the technical editing, did
super-human work to finalize it, and in July 2006 standardized
Accellera revision 3.0. This is viewed as a trail standard. After a
number of vendors worked on their implementations and provided feedback,
a final revision was created and passed back to VASG for IEEE standardization.
VHDL 2008, Update 2012:
Slides
If you are interested on older papers on VHDL-2008 and/or Accellera 3.0, the links
are near the bottom of this page
|
2012 |
DATE 2007 |
What's Next in VHDL
Slides
|
April 2007 |
DATE 2007 |
Fixed and Floating Point Packages
Slides
|
April 2007 |
DVCon 2004 |
"IEEE 1076.6-2004: VHDL Synthesis Coding Styles for the Future"
1076.6 seeks to gain portability of VHDL RTL coding styles
by standardizing coding styles that compliant EDA vendors are required to
implement. It also specifies coding styles that compliant IP/model
developers must use to achieve portability.
This paper presents effective coding styles that have resulted from
the 1076.6-2004 effort. This effort brings you multiple edge
register coding styles (to match today's FPGAs), more effective/
efficient register coding styles (concurrent code, subprograms, and
expanded usage of wait),
ROM and RAM coding styles, and
additional attributes to control the intent of coding styles.
Slides
Paper
|
March 2-3, 2004 |
MAPLD 2003 |
"VHDL Math Tricks of the Trade"
A mini-tutorial on VHDL types (esp. unsigned and signed), packages,
strong typing rules, conversions, ambiguous expressions,
and math tricks.
Slides
|
September 9-11, 2003 |
DesignCon 2003 |
"Accelerating Verification Through Pre-Use of
System-Level Testbench Components"
Presents a methodology for "pre-using" system-level testbench
components and shows an implementation of the corresponding
system-level, transaction-based testbench.
Paper
Slides
|
January 28, 2003 |
MAPLD 2002 |
"Coding a 40 x 40 Multipler"
Explores coding styles for coding a pipelined multiplier.
Paper
Slides-Color
Slides-B&W
|
September 2002 |
HDLCON 2002 |
"Extensions to the VHDL RTL Synthesis Standard"
VHDL RTL Coding styles were first standardized in 1999.
This paper gives insight into the future direction of the standard.
Co-authored paper with Vinaya Singh of Cadence.
Paper
|
March 2002 |
Archive Of VHDL-2008 Papers

Conference |
Title |
Date |
DASC, October 2008 Meeting |
"Accellera VHDL 2006 Standard 3.0"
Slides
|
October, 2008 |
DATE 2007 |
"Accellera VHDL 2006 Standard 3.0"
Slides
|
April, 2007 |
MARLUG 2006 |
"Accellera VHDL 2006 Standard 3.0"
Slides Color
Slides B&W
|
October, 2006 |
MARLUG 2006 |
"Fixed and Floating Point Packages"
Slides Color
Slides B&W
|
October, 2006 |
DesignCon East 2005 |
"VHDL-200X: The Future of VHDL"
Slides
|
September 2005 |
MAPLD 2005 |
"VHDL-200X: The Future of VHDL"
Slides
|
September 2005 |
MAPLD 2005 |
"Fixed and Floating Point Packages"
A mini-tutorial on VHDL Fixed and Floating Point Math Packages.
Slides Color
Slides B&W
|
September, 2005 |
Mentor User2User 2005 |
"VHDL-200X: The Future of VHDL"
Slides
Paper
|
April 2005 |
DVCon 2005 |
"VHDL-200X: The Future of VHDL"
Slides
Paper
|
February 2005 |
MARLUG 2004 |
"VHDL-200X & The Future of VHDL"
Slides
|
October 2004 |
DesignCon 2004 |
"VHDL-200X & The Future of VHDL"
Slides
Paper
|
February 2004 |
MAPLD 2003 |
"VHDL-200X & The Future of VHDL"
Slides
|
September 2003 |
DVCon 2003 |
"Enhancements to VHDL's Packages"
Gives updates on upcomming changes to packages Numeric_Std (IEEE 1076.3)
and Std_Logic_1164 (IEEE 1164).
Paper
Slides
|
February 25, 2003 |
Published Tutorials (not available for download)

Conference |
Tutorial Title |
Date |
DVCon 2004 and DesignCon 2004 |
"VHDL Transaction Based Verification" |
March 2004 February 2004 |
FDL 2001 |
"VHDL Coding Styles for Hardware Design" |
September 2001 |
HDLCON 2001 |
VHDL Coding Styles for Hardware Design |
March 2001 |
IHDL 1999 |
Hardware Verification with VHDL |
March 1999 |
|
 |