makararasi / UVM_AXI4-Stream

MIT License
12 stars 4 forks source link

UVM based AMBA 4 AXI-Stream protocol

Introduction

This is for now is a simple master-slave AXI-stream Environment where support for default signals are present for both Master and Slave. Optional Signals like TID,TLAST,TDEST,TKEEP are supported partially for the master. These will be changed when there are more sequences that covers different types of data streams, hand-shakes.

NOTE : Here by default signals I mean TDATA,TVALID,TREADY although naming convention is from AXI-Stream Specification

File Structure

dv
|agent
|             |
axi4_master_agent.sv
|             |_axi4_slaveagent.sv
|             |
axi4_master_driver.sv
|             |_axi4_slavedriver.sv
|             |
README.md
|
|__env
|             |
axi4_env.sv
|             |_axi4_test.sv
|             |_axiintf.sv
|
|
sequence
|             |_
axi4_master_seq_item.sv
|             |_axi4_mastersequence.sv
|             |
axi4_slave_seq_item.sv
|             |_axi4_seqr.sv
|             |_axi4_slave_sequence.sv
|
|___
tb
             |top.sv
sim
|__Makefile

verilog-uart-master
|__
rtl
             |uart.v
             |
uart_tx.v
             |___uart_tx.v


Feature Set

Running a testcase

Xilinx Vivado 2020.02 is supporting UVM. To Know More follow this.

Install vivado 2020.02

follow this for linux users. Install only vivado 2020.02. Other versions not allowed

Sourcing tool

Example command :- ``` source /tools/Xilinx/Vivado/2020.02/settings64.sh


(source /path/to/vivado/settings64.sh). I guess 64 means 64bit computer. This worked for me. Users should Workout theirs.  <br />
Makefile inside sim folder has all the options for tool like **sv_seed**,**master_sequence_count**,**DATA_WIDTH**(which is parameter on interface and DUT).  <br />
**Example command :-** ``` make vivado count=10 dataw=32 seed=$(random)``` runs "**basic_test**" which is a common ready-valid handshake where for each count 1 packet of transfers occur.for now it is sparse data stream. <br />
UVM Environment has been tested for only 32 bit DATA_WIDTH. <br />

There is define for UART in **top.sv** which is when turned off then AXI_stream Master and Slave Communicates. Users can also replace their Slaves and Masters for testing <br />
## Waveform <br />
![Alt text](./images/axi.png?raw=true" "Valid_Before_Ready") <br />

***MORE TO COME***
:)<br />