New Capability Summary
- Link OSVVM Functional Coverage to a simulator’s UCIS database
- Data checking using scoreboards
- Transaction interfaces using records
- Testbench synchronization utility
This adds the packages VendorCovApiPkg, ScoreboardGenericPkg, TbUtilPkg, and ResolutionPkg.
Link OSVVM Functional Coverage to a Simulator’s UCIS Database
When a simulator records functional coverage it gains the ability the ability to correlate the functional coverage with its verification planning tools and share that information with safety critical tools.
The 2016.11 release adds an API to record OSVVM Functional Coverage a simulator’s UCIS database.
This task has been on our todo list for quite some time. UCIS is complicated. Fortunately the engineers at Aldec were up to creating an initial implementation. Together we revised it. Currently there are two packages in OSVVM: VendorCovApiPkg.vhd (a nominal implementation which leaves OSVVM and the simulator disconnected) and VendorCovApiPkg_Aldec.vhd (which connects OSVVM Functional Coverage to Aldec simulators).
The operation of the API is simple. Within OSVVM, all calls to create a functional coverage model (AddBins and AddCross) and record coverage (ICover) are forwarded to a simulator via VendorCovApiPkg. The simulator can use these calls to create an internal version of the functional coverage model and record the coverage.
Now that we have an implementation pattern I look forward to working with other simulator vendors to integrate in their tools. The heart of VendorCovApiPkg is covered in two pages of VendorCovApiPkg_user_guide.pdf.
I will be doing a webinar on December 15 titled, “From OSVVM VHDL Functional Coverage to UCIS-based database” with Aldec. An announcement will follow shortly.
Data Checking Using Scoreboards
A scoreboard is a data structure used to simplify self-checking in an environment where inputs are closely related to outputs, such as in data transmission (serial ports, networking, …). Scoreboards are particularly useful when data transmission has latency between the source and destination of the information.
I will be doing a more detailed blog on scoreboards at a later date. For now you can consult the ScoreboardPkg_user_guide.pdf
Transaction Interfaces Using Records
Currently a record is the only VHDL abstraction that groups different types together. The problem is, how, do we create a bidirectional transaction interface using records. Do we use one record as inout or separate records for each direction of communication?
The OSVVM methodology is to use a single record whose elements use a resolution function that is defined in ResolutionPkg. ResolutionPkg defines resolution functions and subtypes that apply the resolution functions to common VHDL types. The 2016.11 implementation of ResolutionPkg takes a step forward by introducing “maximum” style resolution functions that work well with the VHDL default initialization of type’left (and do not require any other initialization – such as would be required if you used std_logic or std_logic_vector).
I will be doing a more detailed blog on using records for transaction interfaces at a later date. For now you can consult ResolutionPkg_user_guide.pdf.
Testbench Synchronization Utility
To further simplify transaction level modeling, SynthWorks’ has released its TbUtilPkg into OSVVM. This package provides synchronization and handshaking utilities for transaction interfaces and independently running processes.
I will be doing a more detailed blog on transaction and process syncrhonization at a later date. For now you can consult TbUtilPkg_user_guide.pdf.
What is Really New?
ScoreboardPkg, ResolutionPkg, and TbUtilPkg have been used in SynthWorks’ classes for quite some time now. For students in our classes, these packages represent the latest evolutionary refinement of our methodology. To me, even though they had yet to be released in OSVVM, I have always considered these to be a fundamental part of the OSVVM methodology.
OSVVM™ Boot Camp
SynthWorks primary business is training. Our class, Advanced VHDL Testbenches and Verification – OSVVM™ Boot Camp will bring your team up to speed on using OSVVM. Follow this link to our current class schedule.
Getting the release
OSVVM release 2016.11 is available as a zip at OSVVM Downloads.
OSVVM release 2016.11 is available via git at OSVVM GitHub. Note the repository just moved to an organizational account so if you are already linking to the OSVVM github, be sure to update to the new links (the old ones will work for a short amount of time).