The pyEDAA.OSVVM Documentation
Parser and converters for OSVVM-specific data models and report formats.
Main Goals
This package provides OSVVM-specific data models and parsers. The data models can be used as-is or converted to generic
data models of the pyEDAA data model family. This includes parsing OSVVM’s *.pro-files and translating them to a
pyEDAA.ProjectModel instance as well as reading OSVVM’s reports in
YAML format like test results, alerts or functional coverage.
Frameworks consuming these data models can build higher level features and services on top of these models, while using one parser that’s aligned with OSVVM’s data formats.
Use Cases
OSVVM Project
OSVVM describes its projects using imperative TCL code in so called *.pro files. These contain
lots of information like VHDL library names, used VHDL standard, or compile order. Besides compilation
information, these files also contain information about grouping testcases into testsuites as well as variants of
a test by applying top-level generics to a simulation. In addition various tool options can be enabled and
disabled, e.g. code coverage collection. These options can be set globally, locally or per item.
pyEDAA.OSVVM provides an artificial TCL environment, so OSVVM’s *.pro files can be
executed and contained information is collected in a data model representing builds,
VHDL libraries, VHDL source files,
testsuites, and testcases.
Afterwards, the OSVVM project model can be used as-is, or it can be converted to other data or file formats. One unified data model is pyEDAA.ProjectModel.
from pathlib import Path
from pyEDAA.OSVVM.Project.TCL import OsvvmProFileProcessor
processor = OsvvmProFileProcessor()
processor.LoadBuildFile(Path("OSVVM/OSVVMLibraries/OsvvmLibraries.pro"))
processor.LoadBuildFile(Path("OSVVM/OSVVMLibraries/RunAllTests.pro"))
project = processor.Context.ToProject("OsvvmLibraries")
for buildName, build in project.Builds.items():
for libraryName, lib in build.Libraries.items():
for file in lib.Files:
...
for testsuiteName, ts in build.Testsuites.items():
for tc in ts.Testcases.values():
...
graph TD;
P[Project<br/>"OSVVM"]:::clsPrj-->B1[Build<br/>"OsvvmLibraries"]:::clsBld
P -->B2[Build<br/>"RunAllTests"]:::clsBld
B1 -->Lib1[VHDLLibrary<br/>"osvvm"]:::clsLib
B1 -->Lib2[VHDLLibrary<br/>"osccm_common"]:::clsLib
Lib1-->F1[VHDLSourceFile<br/>"file1.vhdl"]:::clsFile
Lib1-->F2[VHDLSourceFile<br/>"file2.vhdl"]:::clsFile
Lib2-->F3[VHDLSourceFile<br/>"file3.vhdl"]:::clsFile
Lib2-->F4[VHDLSourceFile<br/>"file4.vhdl"]:::clsFile
B2 -->Lib4[VHDLLibrary<br/>"osvvm_uart"]:::clsLib
Lib4-->F7[VHDLSourceFile<br/>"file7.vhdl"]:::clsFile
Lib4-->F8[VHDLSourceFile<br/>"file8.vhdl"]:::clsFile
B2 -->TS1[Testsuite<br/>"UART"]:::clsTS
B2 -->TS2[Testsuite<br/>"AXI4_Lite"]:::clsTS
TS1 -->TC1[Testcase<br/>"SendGet"]:::clsTC
TS1 -->TC2[Testcase<br/>"SetOption"]:::clsTC
TS2 -->TC3[Testcase<br/>"ReadWrite"]:::clsTC
TS2 -->TC4[Testcase<br/>"SetOption"]:::clsTC
classDef clsPrj fill:#bf80ff
classDef clsBld fill:#9f9fdf
classDef clsLib fill:#ffdf80
classDef clsFile fill:#d5ff80
classDef clsTS fill:#8080ff
classDef clsTC fill:#80ff80
OSVVM Reports
OSVVM provides multiple reports in YAML files.
Reading OSVVM’s reports from
*.yamlfiles.Convert to other data or file format.
Investigate reports.
Merge reports.
News
June 2025 - Reading AlertLog and Testsuites
Reading OSVVM Testsuites in YAML format and XML format (Ant+JUnit format).
Reading OSVVM AlertLog hierarchies in YAML format.
March 2025 - Reading *.pro Files
Previously, reading OSVVM’s
*.profiles was achieved via pyEDAA.ProjectModel, but OSVVM’s file format became more complicated, so a new approach was needed. Moreover, OSVVM created more data formats, thus this package was outsourced frompyEDAA.ProjectModel.Thus, OSVVM became a new citizen of EDA² and got integrated into the
pyEDAAnamespace at PyPI.
Contributors
Patrick Lehmann (Maintainer)
License
This Python package (source code) is licensed under Apache License 2.0.
The accompanying documentation is licensed under Creative Commons - Attribution 4.0 (CC-BY 4.0).