Reorganization of files

This commit is contained in:
2025-08-23 15:08:23 -07:00
parent 800e9c4008
commit 3e82cd5455
12 changed files with 40 additions and 30 deletions

View File

@@ -18,8 +18,8 @@ CPP_BUILD_LOG=logs/$(PROJ)_build_cpp.log
SIM_LOG=$(PROJ)_sim.log
SV_FILES=$(shell ls common/* src/*.sv tb/*.sv)
SV_SRC=$(UVM_HOME)/src/uvm_pkg.sv common/common_pkg.sv src/design_pkg.sv tb/tb_types.sv tb/tb_pkg.sv
SV_FILES=$(shell ls common/*.sv src/axi/*.sv tb/*.sv)
SV_SRC=$(UVM_HOME)/src/uvm_pkg.sv common/common_pkg.sv src/axi/axi_types.sv src/axi/axi_pkg.sv tb/tb_pkg.sv
DPI_SRC=$(UVM_HOME)/src/dpi/uvm_dpi.cc
DPI_INC=-I/usr/share/verilator/include
SV_DEPS=$(SV_FILES)
@@ -44,7 +44,7 @@ BUILD_ARGS=-I$(UVM_HOME)/src -I. \
+define+SVA_ON \
$(UVM_DEFINES) \
$(DISABLED_WARNINGS) \
+incdir+common +incdir+src +incdir+tb \
+incdir+common +incdir+src/axi +incdir+tb \
$(SV_SRC)
ifndef TEST_NAME

8
common/common_macros.svh Normal file
View File

@@ -0,0 +1,8 @@
// Convenience macros for AXI interfaces
`define AXI_INTF axi_intf #(.ADDR_WIDTH(`ADDR_WIDTH), \
.CEIL_DATA_WIDTH_DIV_128(`CEIL_DATA_WIDTH_DIV_128), \
.CEIL_DATA_WIDTH_DIV_128_TMS_4(`CEIL_DATA_WIDTH_DIV_128_TMS_4), \
.CEIL_DATA_WIDTH_DIV_64(`CEIL_DATA_WIDTH_DIV_64), \
.DATA_WIDTH(`DATA_WIDTH), \
.DATA_WIDTH_DIV_8(`DATA_WIDTH_DIV_8))

View File

@@ -29,11 +29,3 @@
// `define USER_DATA_WIDTH 1
// `define USER_REQ_WIDTH 1
// `define USER_RESP_WIDTH 1
// Defines
`define AXI_INTF axi_intf #(.ADDR_WIDTH(`ADDR_WIDTH), \
.CEIL_DATA_WIDTH_DIV_128(`CEIL_DATA_WIDTH_DIV_128), \
.CEIL_DATA_WIDTH_DIV_128_TMS_4(`CEIL_DATA_WIDTH_DIV_128_TMS_4), \
.CEIL_DATA_WIDTH_DIV_64(`CEIL_DATA_WIDTH_DIV_64), \
.DATA_WIDTH(`DATA_WIDTH), \
.DATA_WIDTH_DIV_8(`DATA_WIDTH_DIV_8))

View File

@@ -1,3 +1,5 @@
`include "axi.intf.sv"
`include "common_params.svh"
`include "common_macros.svh"
package common_pkg;
endpackage

View File

@@ -5,7 +5,7 @@
typedef axi_sequencer;
class axi_agent extends uvm_agent;
agent_type_t agent_type;
axi_agent_type_t agent_type;
virtual `AXI_INTF.MANAGER m_if;
virtual `AXI_INTF.SUBORDINATE s_if;
@@ -15,7 +15,7 @@ class axi_agent extends uvm_agent;
axi_monitor monitor;
`uvm_component_utils_begin(axi_agent)
`uvm_field_enum(agent_type_t, agent_type, UVM_DEFAULT)
`uvm_field_enum(axi_agent_type_t, agent_type, UVM_DEFAULT)
`uvm_component_utils_end
// --------------------------------------------------
@@ -26,7 +26,7 @@ class axi_agent extends uvm_agent;
// --------------------------------------------------
// Set agent type
function void set_agent_type(agent_type_t atype);
function void set_agent_type(axi_agent_type_t atype);
agent_type = atype;
`uvm_info("set_agent_type", $sformatf("Agent type set to %s", agent_type.name()), UVM_LOW)
endfunction

View File

@@ -4,7 +4,7 @@
class axi_driver extends uvm_driver; // #(axi_transaction);
virtual `AXI_INTF.MANAGER m_if;
virtual `AXI_INTF.SUBORDINATE s_if;
agent_type_t agent_type;
axi_agent_type_t agent_type;
`uvm_component_utils(axi_driver)
@@ -16,7 +16,7 @@ class axi_driver extends uvm_driver; // #(axi_transaction);
// --------------------------------------------------
// Set agent type
function void set_agent_type(agent_type_t atype);
function void set_agent_type(axi_agent_type_t atype);
agent_type = atype;
`uvm_info("set_agent_type", $sformatf("Agent type set to %s", agent_type.name()), UVM_LOW)
endfunction

View File

@@ -4,7 +4,7 @@
class axi_monitor extends uvm_monitor; // #(axi_transaction);
virtual `AXI_INTF.MANAGER m_if;
virtual `AXI_INTF.SUBORDINATE s_if;
agent_type_t agent_type;
axi_agent_type_t agent_type;
// Declare the analysis export
uvm_analysis_port ap;
@@ -23,7 +23,7 @@ class axi_monitor extends uvm_monitor; // #(axi_transaction);
// --------------------------------------------------
// Set agent type
function void set_agent_type(agent_type_t atype);
function void set_agent_type(axi_agent_type_t atype);
agent_type = atype;
`uvm_info("set_agent_type", $sformatf("Agent type set to %s", agent_type.name()), UVM_LOW)
endfunction

14
src/axi/axi_pkg.sv Normal file
View File

@@ -0,0 +1,14 @@
package axi_pkg;
import uvm_pkg::*;
import axi_types::*;
`include "uvm_macros.svh"
// UVM data items
`include "axi_transaction.sv"
// UVM components
`include "axi_driver.sv"
`include "axi_monitor.sv"
`include "axi_agent.sv"
endpackage

View File

@@ -1,10 +1,10 @@
// Types
package tb_types;
// AXI Types
package axi_types;
// Agent type
typedef enum {
MANAGER,
SUBORDINATE
} agent_type_t;
} axi_agent_type_t;
typedef enum {
AXI_READ,

View File

View File

@@ -1,19 +1,13 @@
`include "tb_params.sv"
`include "tb_intf.sv"
package tb_pkg;
import uvm_pkg::*;
import tb_types::*;
import common_pkg::*;
import axi_pkg::*;
import axi_types::*;
`include "uvm_macros.svh"
// Testbench defines
// UVM data items
`include "axi_transaction.sv"
// UVM components
`include "axi_driver.sv"
`include "axi_monitor.sv"
`include "axi_agent.sv"
`include "tb_env.sv"
// UVM sequences