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.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
*.yaml
files.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
*.pro
files 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
pyEDAA
namespace 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).