Skip to content

Commit

Permalink
axi_tdd: Add testbench for the Generic TDD engine
Browse files Browse the repository at this point in the history
  • Loading branch information
podgori committed Feb 13, 2023
1 parent c8d1a2a commit 40e1598
Show file tree
Hide file tree
Showing 8 changed files with 1,052 additions and 0 deletions.
54 changes: 54 additions & 0 deletions axi_tdd/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
####################################################################################
####################################################################################
## Copyright 2022(c) Analog Devices, Inc.
####################################################################################
####################################################################################

# All test-bench dependencies except test programs
SV_DEPS += ../common/sv/utils.svh
SV_DEPS += ../common/sv/logger_pkg.sv
SV_DEPS += ../common/sv/reg_accessor.sv
SV_DEPS += ../common/sv/m_axis_sequencer.sv
SV_DEPS += ../common/sv/s_axis_sequencer.sv
SV_DEPS += ../common/sv/m_axi_sequencer.sv
SV_DEPS += ../common/sv/s_axi_sequencer.sv
SV_DEPS += ../common/sv/adi_regmap_pkg.sv
SV_DEPS += ../common/sv/adi_regmap_tdd_gen_pkg.sv
SV_DEPS += ../common/sv/test_harness_env.sv
SV_DEPS += system_tb.sv

ENV_DEPS += system_project.tcl
ENV_DEPS += system_bd.tcl
ENV_DEPS +=../scripts/adi_sim.tcl
ENV_DEPS +=../scripts/run_sim.tcl

LIB_DEPS += axi_tdd

# default test program
TP := test_program

# config files should have the following format
# cfg_<param1>_<param2>.tcl
CFG_FILES := $(notdir $(wildcard cfgs/cfg*.tcl))
#$(warning $(CFG_FILES))

# List of tests and configuration combinations that has to be run
# Format is: <configuration>:<test name>
TESTS := $(foreach cfg, $(basename $(CFG_FILES)), $(cfg):$(TP))
#TESTS += cfg1_mm2mm_default:directed_test
#TESTS += cfg1:test_program
#TESTS += cfg2_fsync:test_program
#TESTS += cfg2_fsync:test_frame_delay

include ../scripts/project-sim.mk

# usage :
#
# run specific test on a specific configuration in gui mode
# make CFG=cfg2_fsync TST=test_frame_delay MODE=gui
#
# run all test from a configuration
# make cfg1_mm2mm_default

####################################################################################
####################################################################################
27 changes: 27 additions & 0 deletions axi_tdd/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Usage :

Run all tests in batch mode:

make


Run all tests in GUI mode:

make MODE=gui


Run specific test on a specific configuration in gui mode:

make CFG=<name of cfg> TST=<name of test> MODE=gui


Run all test from a configuration:

make <name of cfg>


Where:

* <name of cfg> is a file from the cfgs directory without the tcl extension of format cfg\*
* <name of test> is a file from the tests directory without the tcl extension

13 changes: 13 additions & 0 deletions axi_tdd/cfgs/cfg1.tcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
global ad_project_params

set tdd_cfg [list \
ID 0 \
CHANNEL_COUNT 8 \
REGISTER_WIDTH 32 \
BURST_COUNT_WIDTH 32 \
SYNC_EXTERNAL 1 \
SYNC_INTERNAL 1 \
SYNC_EXTERNAL_CDC 1 \
SYNC_COUNT_WIDTH 64 \
]

69 changes: 69 additions & 0 deletions axi_tdd/system_bd.tcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# ***************************************************************************
# ***************************************************************************
# Copyright 2022 (c) Analog Devices, Inc. All rights reserved.
#
# In this HDL repository, there are many different and unique modules, consisting
# of various HDL (Verilog or VHDL) components. The individual modules are
# developed independently, and may be accompanied by separate and unique license
# terms.
#
# The user should read each of these license terms, and understand the
# freedoms and responsibilities that he or she has by using this source/core.
#
# This core is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE.
#
# Redistribution and use of source or resulting binaries, with or without modification
# of this file, are permitted under one of the following two license terms:
#
# 1. The GNU General Public License version 2 as published by the
# Free Software Foundation, which can be found in the top level directory
# of this repository (LICENSE_GPL2), and also online at:
# <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
#
# OR
#
# 2. An ADI specific BSD license, which can be found in the top level directory
# of this repository (LICENSE_ADIBSD), and also on-line at:
# https://github.com/analogdevicesinc/hdl/blob/master/LICENSE_ADIBSD
# This will allow to generate bit files and not release the source code,
# as long as it attaches to an ADI device.
#
# ***************************************************************************
# ***************************************************************************

source ../../scripts/adi_env.tcl

# Device clk
ad_ip_instance clk_vip device_clk_vip [ list \
INTERFACE_MODE {MASTER} \
FREQ_HZ 250000000 \
]
adi_sim_add_define "DEVICE_CLK=device_clk_vip"

set device_clk device_clk_vip/clk_out

# ------------------
#
# Blocks under test
#
# ------------------

global tdd_cfg
ad_ip_instance axi_tdd dut_tdd $tdd_cfg

ad_connect $device_clk dut_tdd/clk
ad_connect $sys_cpu_resetn dut_tdd/resetn

create_bd_port -dir I sync_in
create_bd_port -dir O sync_out
ad_connect sync_in dut_tdd/sync_in
ad_connect sync_out dut_tdd/sync_out

set num_ch [lindex $tdd_cfg 3]
create_bd_port -from 0 -to [expr $num_ch-1] -dir O tdd_channel
ad_connect tdd_channel dut_tdd/tdd_channel

ad_cpu_interconnect 0x7c420000 dut_tdd

40 changes: 40 additions & 0 deletions axi_tdd/system_project.tcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
source ../scripts/adi_sim.tcl
source ../../scripts/adi_env.tcl
source $ad_hdl_dir/projects/scripts/adi_board.tcl

if {$argc < 1} {
puts "Expecting at least one argument that specifies the test configuration"
exit 1
} else {
set cfg_file [lindex $argv 0]
}

# Read config file
source "cfgs/${cfg_file}"

# Set the project name
set project_name [file rootname $cfg_file]

# Create the project
adi_sim_project_xilinx $project_name "xcvu9p-flga2104-2L-e"

# Add test files to the project
adi_sim_project_files [list \
"../common/sv/utils.svh" \
"../common/sv/logger_pkg.sv" \
"../common/sv/reg_accessor.sv" \
"../common/sv/m_axis_sequencer.sv" \
"../common/sv/s_axis_sequencer.sv" \
"../common/sv/m_axi_sequencer.sv" \
"../common/sv/s_axi_sequencer.sv" \
"../common/sv/adi_regmap_pkg.sv" \
"../common/sv/adi_regmap_tdd_gen_pkg.sv" \
"../common/sv/test_harness_env.sv" \
"tests/test_program.sv" \
"system_tb.sv" \
]

#set a default test program
adi_sim_add_define "TEST_PROGRAM=test_program"

adi_sim_generate $project_name
56 changes: 56 additions & 0 deletions axi_tdd/system_tb.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// ***************************************************************************
// ***************************************************************************
// Copyright 2014 - 2022 (c) Analog Devices, Inc. All rights reserved.
//
// In this HDL repository, there are many different and unique modules, consisting
// of various HDL (Verilog or VHDL) components. The individual modules are
// developed independently, and may be accompanied by separate and unique license
// terms.
//
// The user should read each of these license terms, and understand the
// freedoms and responsabilities that he or she has by using this source/core.
//
// This core is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
// A PARTICULAR PURPOSE.
//
// Redistribution and use of source or resulting binaries, with or without modification
// of this file, are permitted under one of the following two license terms:
//
// 1. The GNU General Public License version 2 as published by the
// Free Software Foundation, which can be found in the top level directory
// of this repository (LICENSE_GPL2), and also online at:
// <https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
//
// OR
//
// 2. An ADI specific BSD license, which can be found in the top level directory
// of this repository (LICENSE_ADIBSD), and also on-line at:
// https://github.com/analogdevicesinc/hdl/blob/master/LICENSE_ADIBSD
// This will allow to generate bit files and not release the source code,
// as long as it attaches to an ADI device.
//
// ***************************************************************************
// ***************************************************************************

`timescale 1ns/1ps

`include "utils.svh"

module system_tb();

logic sync_in = 1'b0;
logic [31:0] tdd_channel;

`TEST_PROGRAM test();

test_harness `TH (

.sync_in (sync_in), //-dir I
.sync_out (sync_out), //-dir O

.tdd_channel (tdd_channel)

);

endmodule

0 comments on commit 40e1598

Please sign in to comment.