OSVVM 2020.10: AXI Stream: Bursting + Full Signaling Support
The OSVVM 2020.10 release is finally out.
Why 2020.10?
Yes I realize it is now late November. So why 2020.10? In late October, the code was done and marked as 2020.10 with the expectation that the documentation would be done before the end of the month. The documentation took much longer than I expected and a few other items intervened. Rather than take more time and re-mark the code as 2020.11, it has been released as 2020.10.
Updates to the AxiStream Verification Component
The OSVVM AxiStreamTransmitter and AxiStreamReceiver Verification Components (VCs) facilitate testing the interface and functionality of AxiStream devices. These verification components are intended to be part of a structured test environment.
The AxiStream verification components implement the complete AxiStream interface capability. They support bursting capability via BurstFifos in the verification components as well as through direct and algorithmic control of TLast during single word transfers. They support setting of TStrb and TKeep for either single word transfers or burst transfers. Within a burst transfer, they support sparse data streams (ie: TKeep=0 and/or TStrb=0). They support setting of TID, TDest, and TUser. These can either be set from defaults in the VC or supplied as values to the transaction call. For Bursting, TID and TDest maintain their value throughout the entire transfer, and TUser can be set either for the entire transfer or on a word by word basis.
For the test case programming API (used in a test sequencer), the AxiStream VCs support the complete set of OSVVM Stream Model Independent Transactions. Using this interface ensures uniformity and consistency with other OSVVM VCs and improves verification test case reuse.
For more details see the AxiStream_user_guide.pdf.
Getting OSVVM
The OsvvmLibraries repository contains all other OSVVM repositories as a submodule. Hence, when you get OsvvmLibraries, you get everything you need. You can get OsvvmLibraries by calling git clone with the “–recursive” option:
$ git clone --recursive https://github.com/osvvm/OsvvmLibraries
A zip file is available at osvvm.org/downloads.
Documentation
Once you have downloaded OSVVM (see Getting OSVVM), you will find the documentation in the directory, OsvvmLibraries/Documentation. In this directory you will find:
- User guide for AxiStream
- User guide for Stream Model Independent Transactions (used by AxiStream and UART).
- User guide for Address Bus Model Independent Transactions (Used by Axi4 full and Axi4Lite).
- User guides and/or quick reference cards for all packages in the OSVVM Utility library (aka OSVVM library).
Additional information about OSVVM verification components can be found in the following two presentations.
- Creating an AXI4 Lite, Transaction Based VHDL Testbench with OSVVM
- Creating Better Self-Checking FPGA Verification Tests with Open Source VHDL Verification Methodology (OSVVM)
Writing OSVVM documentation has taken a tremendous effort. While the code is available under the Apache license, the documentation is available under a free use and distribution, but no derivatives license (Copyright with verbatim copies allowed). Hence, if you see the OSVVM use guide examples in a training class not affiliated with SynthWorks, please let me know.
Using OSVVM Verification Components
A great way to learn about the OSVVM Verification Components is to run its associated testbenches.
Prior to starting the OSVVM scripting environment, create a directory named sim in the same directory as the OsvvmLibraries directory. Start your simulator and go to the sim directory. Once there, use the steps below to compile and run the tests for the AxiStream verification components in Mentor QuestaSim/ModelSim or Aldec RivieraPRO.
cd sim
do ../OsvvmLibraries/startup.tcl
build ../OsvvmLibraries
build ../OsvvmLibraries/AXI4/AxiStream/testbench.pro
For more details and Aldec ActiveHDL directions see Script_user_guide.pdf.
The intent of the OSVVM scripting is to make compiling and running your simulations independent of the simulator you are using. We hope to update the scripting environment to support Synopsys and Cadence tools in the first half of 2021. We are also working on supporting GHDL – we can currently run GHDL under tclsh, however, it is messy and it does not feel like a real solution.
About OSVVM
Open Source VHDL Verification Methodology (OSVVM) is a methodology and libraries that simplify the creation of structured testbenches that are readable and powerful. OSVVM supports the same capabilities that other verification languages (such as SystemVerilog + UVM) support – from a structured testbench framework using transaction level modeling, to functional coverage and randomized test generation, to scoreboards and FIFOs, to error handling utilities, to synchronization utilities, to memory modeling, and to verification components – All you need is OSVVM.
OSVVM verification components are a growing set of open source verification components. They now include:
- AXI4 Master – supports single word and burst transfers
- AXI4 Memory – supports single word and burst access to an internal memory
- AXI4 Lite Responder – supports single word transfers
- AXI4 Lite Master
- AXI4 Lite Memory
- AXI4 Lite Responder
- AXI Stream Transmitter
- AXI Stream Receiver
- UART Transmitter (with error injection)
- UART Receiver (with error injection)
Testbenches and OSVVM simulation scripts for each model are distributed with the verification components, so you can run a simulation and see a live example of how to use the verification components.
Getting Started with OSVVM
The fastest way to get started with OSVVM is SynthWorks’ Advanced VHDL Testbenches and Verification which is available world wide either on-line or on-site (once we can travel again). Here is our current class schedule.
Contract OSVVM Development
Looking to accelerate your OSVVM testbench / verification component development? Contact the author for contract development availability.
1 Comment
Leave a Reply
You must be logged in to post a comment.
Torsten
One of the main things what OSVVM models differentiate from other available solutions is the extensive documentation. I like that very much.
I remember closed source models which only have very little documentation and second, were written very poor. I used an FPGA-vendors eMMC model some years ago which was created in addition to the MMC controller unit we use. The model was only very basic and without doc, only the controller had some basic docs. After digging through the (Verilog) code I added some fundamental things like an associative array to allow data write/read checks coverage and assertions. Even with my little knowledge of (System) Verilog I was able to do that better.