_images/logo_on_light.svg
Sourcecode on GitHub Code license Documentation - Read Now! Documentation License
PyPI - Tag PyPI - Status PyPI - Python Version
GitHub Workflow - Build and Test Status Libraries.io status for latest release Codacy - Quality Codacy - Line Coverage Codecov - Branch Coverage

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/>&quot;OSVVM&quot;]:::clsPrj-->B1[Build<br/>&quot;OsvvmLibraries&quot;]:::clsBld
  P   -->B2[Build<br/>&quot;RunAllTests&quot;]:::clsBld
  B1  -->Lib1[VHDLLibrary<br/>&quot;osvvm&quot;]:::clsLib
  B1  -->Lib2[VHDLLibrary<br/>&quot;osccm_common&quot;]:::clsLib

  Lib1-->F1[VHDLSourceFile<br/>&quot;file1.vhdl&quot;]:::clsFile
  Lib1-->F2[VHDLSourceFile<br/>&quot;file2.vhdl&quot;]:::clsFile
  Lib2-->F3[VHDLSourceFile<br/>&quot;file3.vhdl&quot;]:::clsFile
  Lib2-->F4[VHDLSourceFile<br/>&quot;file4.vhdl&quot;]:::clsFile

  B2  -->Lib4[VHDLLibrary<br/>&quot;osvvm_uart&quot;]:::clsLib
  Lib4-->F7[VHDLSourceFile<br/>&quot;file7.vhdl&quot;]:::clsFile
  Lib4-->F8[VHDLSourceFile<br/>&quot;file8.vhdl&quot;]:::clsFile
  B2  -->TS1[Testsuite<br/>&quot;UART&quot;]:::clsTS
  B2  -->TS2[Testsuite<br/>&quot;AXI4_Lite&quot;]:::clsTS
  TS1 -->TC1[Testcase<br/>&quot;SendGet&quot;]:::clsTC
  TS1 -->TC2[Testcase<br/>&quot;SetOption&quot;]:::clsTC
  TS2 -->TC3[Testcase<br/>&quot;ReadWrite&quot;]:::clsTC
  TS2 -->TC4[Testcase<br/>&quot;SetOption&quot;]:::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 from pyEDAA.ProjectModel.

  • Thus, OSVVM became a new citizen of EDA² and got integrated into the pyEDAA namespace at PyPI.

Contributors

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).