.. include:: shields.inc
.. image:: _static/logo_on_light.svg
:height: 90 px
:align: center
:target: https://GitHub.com/edaa-org/pyEDAA.OSVVM
.. raw:: html
.. raw:: latex
\part{Introduction}
.. only:: html
| |SHIELD:svg:OSVVM-github| |SHIELD:svg:OSVVM-src-license| |SHIELD:svg:OSVVM-ghp-doc| |SHIELD:svg:OSVVM-doc-license|
| |SHIELD:svg:OSVVM-pypi-tag| |SHIELD:svg:OSVVM-pypi-status| |SHIELD:svg:OSVVM-pypi-python|
| |SHIELD:svg:OSVVM-gha-test| |SHIELD:svg:OSVVM-lib-status| |SHIELD:svg:OSVVM-codacy-quality| |SHIELD:svg:OSVVM-codacy-coverage| |SHIELD:svg:OSVVM-codecov-coverage|
.. Disabled shields: |SHIELD:svg:OSVVM-lib-dep| |SHIELD:svg:OSVVM-req-status| |SHIELD:svg:OSVVM-lib-rank|
.. only:: latex
|SHIELD:png:OSVVM-github| |SHIELD:png:OSVVM-src-license| |SHIELD:png:OSVVM-ghp-doc| |SHIELD:png:OSVVM-doc-license|
|SHIELD:png:OSVVM-pypi-tag| |SHIELD:png:OSVVM-pypi-status| |SHIELD:png:OSVVM-pypi-python|
|SHIELD:png:OSVVM-gha-test| |SHIELD:png:OSVVM-lib-status| |SHIELD:png:OSVVM-codacy-quality| |SHIELD:png:OSVVM-codacy-coverage| |SHIELD:png:OSVVM-codecov-coverage|
.. Disabled shields: |SHIELD:png:OSVVM-lib-dep| |SHIELD:png:OSVVM-req-status| |SHIELD:png:OSVVM-lib-rank|
--------------------------------------------------------------------------------
The pyEDAA.OSVVM Documentation
##############################
Parser and converters for `OSVVM-specific `__ data models and report formats.
.. _GOALS:
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.
.. _USECASES:
Use Cases
*********
.. _USECASE/Project:
OSVVM Project
=============
.. grid:: 2
.. grid-item::
:columns: 5
OSVVM describes its :ref:`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 :ref:`artificial TCL environment `, so OSVVM's ``*.pro`` files can be
executed and contained information is collected in a data model representing :ref:`builds `,
:ref:`VHDL libraries `, :ref:`VHDL source files `,
:ref:`testsuites `, and :ref:`testcases `.
Afterwards, the :ref:`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 `__.
.. grid-item::
:columns: 7
.. tab-set::
.. tab-item:: Usage
:sync: usage
.. code-block:: Python
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():
...
.. tab-item:: Data Model
:sync: datamodel
:selected:
.. mermaid::
graph TD;
P[Project
"OSVVM"]:::clsPrj-->B1[Build
"OsvvmLibraries"]:::clsBld
P -->B2[Build
"RunAllTests"]:::clsBld
B1 -->Lib1[VHDLLibrary
"osvvm"]:::clsLib
B1 -->Lib2[VHDLLibrary
"osccm_common"]:::clsLib
Lib1-->F1[VHDLSourceFile
"file1.vhdl"]:::clsFile
Lib1-->F2[VHDLSourceFile
"file2.vhdl"]:::clsFile
Lib2-->F3[VHDLSourceFile
"file3.vhdl"]:::clsFile
Lib2-->F4[VHDLSourceFile
"file4.vhdl"]:::clsFile
B2 -->Lib4[VHDLLibrary
"osvvm_uart"]:::clsLib
Lib4-->F7[VHDLSourceFile
"file7.vhdl"]:::clsFile
Lib4-->F8[VHDLSourceFile
"file8.vhdl"]:::clsFile
B2 -->TS1[Testsuite
"UART"]:::clsTS
B2 -->TS2[Testsuite
"AXI4_Lite"]:::clsTS
TS1 -->TC1[Testcase
"SendGet"]:::clsTC
TS1 -->TC2[Testcase
"SetOption"]:::clsTC
TS2 -->TC3[Testcase
"ReadWrite"]:::clsTC
TS2 -->TC4[Testcase
"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
.. _USECASE/Reports:
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:
News
****
.. only:: html
June 2025 - Reading AlertLog and Testsuites
===========================================
.. only:: latex
.. rubric:: Reading AlertLog and Testsuites
* Reading OSVVM Testsuites in YAML format and XML format (Ant+JUnit format).
* Reading OSVVM AlertLog hierarchies in YAML format.
.. only:: html
March 2025 - Reading ``*.pro`` Files
====================================
.. only:: latex
.. rubric:: 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:
Contributors
************
* :gh:`Patrick Lehmann ` (Maintainer)
* `and more... `__
.. _LICENSE:
License
*******
.. only:: html
This Python package (source code) is licensed under `Apache License 2.0 `__. |br|
The accompanying documentation is licensed under `Creative Commons - Attribution 4.0 (CC-BY 4.0) `__.
.. only:: latex
This Python package (source code) is licensed under **Apache License 2.0**. |br|
The accompanying documentation is licensed under **Creative Commons - Attribution 4.0 (CC-BY 4.0)**.
.. toctree::
:hidden:
Used as a layer of EDA² ➚
.. toctree::
:caption: Introduction
:hidden:
Installation
Dependency
.. raw:: latex
\part{Main Documentation}
.. toctree::
:caption: Main Documentation
:hidden:
Project/index
Testsuite/index
Testcase/index
AlertLog/index
Scoreboard/index
FunctionalCoverage/index
Requirements/index
.. raw:: latex
\part{OSVVM Sphinx Domain}
.. toctree::
:caption: OSVVM Sphinx Domain
:hidden:
OSVVM/index
OSVVM/BuildSummary
.. raw:: latex
\part{OSVVM Report}
.. toctree::
:caption: OSVVM Report
:hidden:
RunAllTests/index
.. raw:: latex
\part{References and Reports}
.. toctree::
:caption: References and Reports
:hidden:
Python Class Reference
unittests/index
coverage/index
CodeCoverage
Doc. Coverage Report
Static Type Check Report ➚
.. raw:: latex
\part{Appendix}
.. toctree::
:caption: Appendix
:hidden:
License
Doc-License
Glossary
genindex
Python Module Index
TODO