Zuspec provides a set of tools for working with action relation level (ARL) models, primarily those described using the Accellera Portable Test and Stimulus (PSS) language. ARL models are used today to specify system-level tests for digital designs, but they lend themselves to many more applications as well. Zuspec has a very modular design to support rapidly exploring new applications for this modeling methodology.
The bulk of Zuspec components are implemented in C++, with functionality available via both a C++ API and a Python API. Components are designed such that they can be integrated via Python, but interact at full speed via the C++ implementation.
Applications are how most users will experience Zuspec. Applications connect one or more Zuspec components, together with some integration code, to address a specific need.
- Zuspec -- Support for code generation
- Zuspec-SV -- Integration support for SystemVerilog testbench environments
- Zuspec-Py -- Integration support for running ARL models in Python
- langserver -- VSCode language server
Front-ends process and input description (such as Accellera PSS), typically with the goal of populating Zuspec's ARL data model for further processing and evaluation
- Parser -- ANTLR-based parser and AST for Accellera PSS (with language extensions)
- FE-Parser -- AST to ARL datamodel converter
- Python Dataclasses -- Python-based DSL for capturing ARL descriptions. Mostly used for testing
ARL models are typically primarily declarative descriptions. In other words, they are heavily constraint-based. Evaluation tools process the data model to execute it and to optimize it.
arl-dm -- Core data model capturing ARL modeling semantics arl-eval -- Core evaluator, enabling interpretive evaluation of an ARL model vsc-dm -- External data model for constrained-random descriptions vsc-solvers -- Bundle of constraint solvers used by the evaluator
Backends integrate Zuspec evaluation into specific environments or directly produce executable representations of ARL models.
- be-sv -- SystemVerilog integration and code generators
- be-sw -- Code generators for C and C++ outputs
- be-py -- Python integration for evaluating ARL models in Python
- be-pss -- Emit ARL as lowered Accellera PSS
Zuspec is under active development, but not yet ready for use. Watch this space for updates on the project's status.