Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
f1e88cc
infrastructure refactorization
IstvanZsSzekely Dec 16, 2024
e0e4835
infrastructure refactorization: Fixes
IstvanZsSzekely Dec 16, 2024
836fbe3
infrastructure refactorization: Refactoring
IstvanZsSzekely Dec 16, 2024
c99cfd7
infrastructure refactorization: Generalized scoreboard
IstvanZsSzekely Dec 16, 2024
a463503
infrastructure refactorization: Updated DMA loopback project
IstvanZsSzekely Dec 16, 2024
fb7eadf
infrastructure refactorization: Fixed address value in DMA loopback f…
IstvanZsSzekely Dec 16, 2024
5ee6bb3
infrastructure refactorization: Updated IP level testbenches
IstvanZsSzekely Jan 17, 2025
29b8873
infrastructure refactorization: IP level updates
IstvanZsSzekely Jan 20, 2025
53c1327
infrastructure refactorization: Updated Project level testbenches
IstvanZsSzekely Jan 20, 2025
d2aa755
infrastructure refactorization: Updates and fixes
IstvanZsSzekely Jan 20, 2025
1670e8e
ad7616: Fixes
IstvanZsSzekely Jan 20, 2025
269401b
dma_flock: Fixed testbench after rebase
IstvanZsSzekely Jan 20, 2025
41dfa6f
adi_datatypes: Added FIFO and LIFO class implementation
IstvanZsSzekely Jan 21, 2025
2991e44
infrastructure refactorization: Minor fixes
IstvanZsSzekely Jan 30, 2025
1fe651d
util_axis_fifo_asym: Initial testbench commit
IstvanZsSzekely Oct 18, 2024
fc60809
util_axis_fifo_asym: Updated after rebase
IstvanZsSzekely Jan 22, 2025
2693a75
util_axis_fifo_asym: Updates and fixes
IstvanZsSzekely Jan 22, 2025
98691b5
util_axis_fifo_asym: Updated waveform configuration
IstvanZsSzekely Jan 22, 2025
2f11dc9
util_axis_fifo: Initial testbench commit
IstvanZsSzekely Jan 22, 2025
76665e5
util_axis_fifo: Updated ADI AXI and AXIS agents
IstvanZsSzekely Jan 22, 2025
30018ba
util_axis_fifo: Fixed ADI AXI agent run call
IstvanZsSzekely Jan 22, 2025
8ee0dee
General updates:
IstvanZsSzekely Jan 27, 2025
a5337ee
SPI VIP update
IstvanZsSzekely Jan 30, 2025
a888f41
General updates: Updated VIP clocking and reset calls
IstvanZsSzekely Feb 11, 2025
46b53bb
general: Change while(1) calls to forever
IstvanZsSzekely Feb 11, 2025
afcd1be
ADI AMD agent abstractization
IstvanZsSzekely Feb 12, 2025
e87f281
ADI AMD agent abstractization: Added linker macro to simplify VIP lin…
IstvanZsSzekely Feb 13, 2025
a6483d7
ADI AMD agent abstractication: Updated testbenches for the base envir…
IstvanZsSzekely Feb 13, 2025
a8c9d2d
library/vip/amd/axi/s_axi_sequencer: Added memory access functions
IstvanZsSzekely Feb 13, 2025
bf9ae58
library/vip/amd/axi/s_axi_sequencer: Cosmetic change
IstvanZsSzekely Feb 13, 2025
85d89c1
library/vip/amd: Updated ADI agent function calls to fix a null-objec…
IstvanZsSzekely Feb 20, 2025
13863e7
scoreboard: Simplified to AXIS datastream verification
IstvanZsSzekely Feb 20, 2025
1961396
scoreboard: Commented test program
IstvanZsSzekely Feb 20, 2025
c248807
scoreboard: Added source and destination agent names
IstvanZsSzekely Feb 25, 2025
f817186
scoreboard: Fixed stream clearing and relation with the subscriber class
IstvanZsSzekely Feb 26, 2025
1cafcfb
docs: Scoreboard
IstvanZsSzekely Feb 26, 2025
c2f1bdf
docs: Scoreboard pack
IstvanZsSzekely Feb 26, 2025
3ad786a
docs: Scoreboard and scoreboard pack - diagrams
IstvanZsSzekely Feb 28, 2025
1748da2
docs: Scoreboard testbench
IstvanZsSzekely Mar 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions docs/library/drivers/common/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ Contents

.. toctree::
:maxdepth: 1
:glob:

Monitor <monitor/index>
Scoreboard <scoreboard/index>
Watchdog <watchdog/index>
*/index
104 changes: 104 additions & 0 deletions docs/library/drivers/common/scoreboard/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,107 @@
Scoreboard
================================================================================

Overview
-------------------------------------------------------------------------------

The scoreboard class is designed for transaction comparison in a verification
environment. This class extends adi_component and is parameterized by a
datatype data_type, which allows the verification of different datatypes without
the need of inheriting this class. The scoreboard class contains an inner class
subscriber_class which extends adi_subscriber and is responsible for receiving
and storing data streams. The scoreboard can operate in oneshot or in
cyclic mode, which allows the verification of repeating sequence verification.

.. svg:: library/drivers/common/scoreboard/scoreboard.svg
:align: center

Variables
-------------------------------------------------------------------------------

The scoreboard class itself has two instances of subscriber_class, named
subscriber_source and subscriber_sink, which represent the source and sink of
the data streams. These are subscribed to a publisher, which calls the
respective functions when new data is available.

Functions
-------------------------------------------------------------------------------

function new(input string name, input adi_component parent = null);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Creates the scoreboard object. The name gives the scoreboard a name that is
relevant in the current environment it is instantiated in and the parent sets
the parent object in which it resides.

task run();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Enables the scoreboard and clears the data streams.

task stop();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Disables the scoreboard and clears the data streams.

function void set_sink_type(input bit sink_type);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Allows the setting of the sink type, which defines if the output data may or may
not repeat. If set to oneshot, then the source data is verified only once. If
set to cyclic, then the source data is verified against the sink data as long as
new data is coming in on the sink side. This value can only be set when the
scoreboard is disabled.

function bit get_sink_type();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Get the sink type.

protected function void clear_streams();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Clear the source and sink data streams.

task wait_until_complete();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wait until the source and the sink datastreams are clear of data, which means
that all source data was verified against all sink data.

virtual function void compare_transaction();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Compares the source and the sink datastreams against each other. This method is
called by the subscriber when new data arrives. If the scoreboard is disabled,
the comparison is ommited.

Usage and recommendations
-------------------------------------------------------------------------------

Basic usage of the scoreboard:

* Declare the scoreboard
* Link the source and sink subscribers to the publishers where you want to
verify data
* Optional: set the sink type; default is oneshot
* Call the run function to start the verification
* Wait until the scoreboard completes verification
* Stop the scoreboard

.. important::

* The scoreboard must be started before the data transmission begins,
otherwise, data will be lost and the verification will fail!

Other use-cases:

* The scoreboard can be dynamically reconfigured to use other inputs. Stop the
scoreboard, unsubscribe the subscribers from the publishers and subscribe them
to the other publisher where you want to verify data.

.. important::

* The datatype cannot be changed during runtime, only the publisher, to which
they are subscribed to.

.. include:: ../../../../common/support.rst
102 changes: 102 additions & 0 deletions docs/library/drivers/common/scoreboard/scoreboard.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions docs/library/drivers/common/scoreboard/scoreboard.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Classes

# Base
adi_reporter: {shape: class}
adi_component: {shape: class}

# Component
adi_subscriber: {shape: class}

# Scoreboard
scoreboard: {
shape: class
+subscriber_source
+subscriber_sink
\#sink_type
\#enabled
\#bytestream_empty_sig
\#byte_streams_empty
\#stop_scoreboard
+run()
+stop()
+set_sink_type()
+get_sink_type()
\#clear_streams()
+wait_until_complete()
+compare_transaction()
}

# Inheritances

# Base
adi_reporter <- adi_component: {shape: triangle; source-arrowhead.style.filled: false}

# Scoreboard
adi_component <- scoreboard: {shape: triangle; source-arrowhead.style.filled: false}

# Aggregations

# Scoreboard
scoreboard <- adi_subscriber: {source-arrowhead: 2 {shape: diamond; style.filled: true}}
46 changes: 46 additions & 0 deletions docs/library/drivers/common/scoreboard_pack/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
.. _scoreboard_pack:

Scoreboard Pack
================================================================================

Overview
-------------------------------------------------------------------------------

This class is a specialized version of a generic scoreboard class, parameterized
by the data type and packer mode. The scoreboard pack class is designed to
handle and compare data streams in a verification environment.

.. svg:: library/drivers/common/scoreboard_pack/scoreboard_pack.svg
:align: center

Variables
-------------------------------------------------------------------------------

No additional variables are available for direct external access.

Functions
-------------------------------------------------------------------------------

function new(...);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Creates the scoreboard object. The name gives the scoreboard a name that is
relevant in the current environment it is instantiated in, the channels set the
number of channels that are present on the packer module, the sample value sets
the number of samples that are set in the converter, the width specifies the
width of one sample for one channel, the mode is set based on the current pack
module, which can be a packer or unpacker and the parent sets the parent object
in which it resides.

virtual function void compare_transaction();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The compare module's base functionality is the same as the base class, but it
specifically verifies the input and output of the packer and unpacker modules.

Usage and recommendations
-------------------------------------------------------------------------------

Same as the base class.

.. include:: ../../../../common/support.rst
Loading