Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

@shraddha_pawankar

Date:24/07/2023

@shraddha_pawankar

DESIGN.SV
module apb_ram (

input presetn,
input pclk,
input psel,
input penable,
input pwrite,
input [31:0] paddr, pwdata,
output reg [31:0] prdata,
output reg pready, pslverr
);

reg [31:0] mem [32];


typedef enum {idle = 0, setup = 1, access = 2, transfer = 3} state_type;
state_type state = idle;
always@(posedge pclk)
begin

if(presetn == 1'b0) //active low


begin
state <= idle;
prdata <= 32'h00000000;
pready <= 1'b0;

pslverr <= 1'b0;


for(int i = 0; i < 32; i++)
begin
@shraddha_pawankar
Date:24/07/2023

mem[i] <= 0;
end
end

else
begin
case(state)
idle :
begin

prdata <= 32'h00000000;


pready <= 1'b0;
pslverr <= 1'b0;
state <= setup;
end

setup: ///start of transaction


begin
if(psel == 1'b1)
state <= access;
else

state <= setup;


end
access:
begin
if(pwrite && penable)

begin
if(paddr < 32)
begin
mem[paddr] <= pwdata;
state <= transfer;
pslverr <= 1'b0;
@shraddha_pawankar
Date:24/07/2023

pready <= 1'b1;


end
else

begin
state <= transfer;
pready <= 1'b1;
pslverr <= 1'b1;
end

end
else if (!pwrite && penable)
begin
if(paddr < 32)
begin

prdata <= mem[paddr];


state <= transfer;
pready <= 1'b1;
pslverr <= 1'b0;
end

else
begin
state <= transfer;
pready <= 1'b1;
pslverr <= 1'b1;

prdata <= 32'hxxxxxxxx;


end
end
else
state <= setup;
end
@shraddha_pawankar
Date:24/07/2023

transfer: begin
state <= setup;
pready <= 1'b0;

pslverr <= 1'b0;


end
default : state <= idle;
endcase
end

end
endmodule
///////////////////////////////////////////////////////////////////////////////////////////////

apb_intf.sv
interface apb_if ();

// Signals
logic pclk;
logic presetn;
logic [31:0] paddr;
logic pwrite;

logic [31:0] pwdata;


logic penable;
logic psel;
logic [31:0] prdata;
logic pslverr;

logic pready;
endinterface
///////////////////////////////////////////////////////////////////////////////////////////

apb_seq_item.sv
typedef enum bit [1:0] {readd = 0, writed = 1, rst = 2} oper_mode;
class apb_seq_item extends uvm_sequence_item;
@shraddha_pawankar
Date:24/07/2023

`uvm_object_utils(apb_seq_item)

rand oper_mode op;

rand logic PWRITE;


rand logic [31 : 0] PWDATA;
rand logic [31 : 0] PADDR;
logic PREADY;
logic PSLVERR;

logic [31: 0] PRDATA;


constraint addr_c { PADDR <= 31; }

function new(string name = "apb_seq_item");


super.new(name);

endfunction
endclass
//////////////////////////////////////////////////////////////////////////////////////////////

apb_seq.sv
class write_data extends uvm_sequence#(apb_seq_item);

`uvm_object_utils(write_data)

apb_seq_item tx;
function new(string name ="write_data");
super.new(name);

endfunction

virtual task body();


repeat(15)
begin
tx = apb_seq_item::type_id::create("tx");
@shraddha_pawankar
Date:24/07/2023

start_item(tx);
tx.randomize();

tx.op = writed;
finish_item(tx);
end
endtask

endclass
///////////////////////////////////////////////////////////////////
class read_data extends uvm_sequence#(apb_seq_item);
`uvm_object_utils(read_data)

apb_seq_item tx;
function new(string name ="read_data");
super.new(name);
endfunction

virtual task body();


repeat(15)
begin

tx = apb_seq_item::type_id::create("tx");

start_item(tx);
tx.randomize();
tx.op = readd;
@shraddha_pawankar
Date:24/07/2023

finish_item(tx);
end
endtask

endclass
////////////////////////////////////////////////////////////////////
class write_read extends uvm_sequence#(apb_seq_item); //////read after write
`uvm_object_utils(write_read)

apb_seq_item tx;
function new(string name = "write_read");
super.new(name);
endfunction

virtual task body();


repeat(15)
begin
tx = apb_seq_item::type_id::create("tx");

start_item(tx);
tx.randomize;
tx.op = writed;
finish_item(tx);

start_item(tx);
tx.randomize();
tx.op = readd;
finish_item(tx);
end
@shraddha_pawankar
Date:24/07/2023

endtask

endclass

////////////////////////////////////////////////////////////////////////////////////

apb_sqr.sv
class apb_sqr extends uvm_sequencer#(apb_seq_item);
`uvm_component_utils(apb_sqr)

function new(string name="",uvm_component parent);


super.new(name,parent);
endfunction
endclass
////////////////////////////////////////////////////////////////////////////////////////////

apb_drv.sv
class apb_drv extends uvm_driver #(apb_seq_item);
`uvm_component_utils(apb_drv)

virtual apb_if vif;


apb_seq_item tx;

function new(string name="",uvm_component parent);


super.new(name,parent);
endfunction

function void build_phase(uvm_phase phase);


super.build_phase(phase);
tx = apb_seq_item::type_id::create("tx");

uvm_config_db#(virtual apb_if)::get(this,"","intf",vif);
@shraddha_pawankar
Date:24/07/2023

endfunction

task run_phase(uvm_phase phase);


forever
begin
seq_item_port.get_next_item(tx);
if(tx.op == rst)

begin
vif.presetn <= 1'b0;
vif.paddr <= 'h0;
vif.pwdata <= 'h0;
vif.pwrite <= 'b0;

vif.psel <= 'b0;


vif.penable <= 'b0;
@(posedge vif.pclk);
end

else if(tx.op == writed)


begin
vif.psel <= 1'b1;
vif.paddr <= tx.PADDR;
vif.pwdata <= tx.PWDATA;

vif.presetn <= 1'b1;


vif.pwrite <= 1'b1;
@(posedge vif.pclk);
vif.penable <= 1'b1;
@(negedge vif.pready);
vif.penable <= 1'b0;
@shraddha_pawankar
Date:24/07/2023

end

else if(tx.op == readd)

begin
vif.psel <= 1'b1;
vif.paddr <= tx.PADDR;
vif.presetn <= 1'b1;
vif.pwrite <= 1'b0;

@(posedge vif.pclk);
vif.penable <= 1'b1;
@(negedge vif.pready);
vif.penable <= 1'b0;
end

seq_item_port.item_done();

end
endtask

endclass
///////////////////////////////////////////////////////////////////////////////////////////////

apb_mon.sv
class apb_mon extends uvm_monitor;
`uvm_component_utils(apb_mon)

uvm_analysis_port#(apb_seq_item) mon_ap;

apb_seq_item tx;

virtual apb_if vif;


@shraddha_pawankar
Date:24/07/2023

function new(string name="",uvm_component parent);


super.new(name,parent);

endfunction

function void build_phase(uvm_phase phase);


super.build_phase(phase);
tx=apb_seq_item::type_id::create("tx");

mon_ap=new("mon_ap",this);

if(!uvm_config_db#(virtual apb_if)::get(this,"","intf",vif))
`uvm_error("MON","Unable to access Interface");
endfunction

task run_phase(uvm_phase phase);


forever
begin
@(posedge vif.pclk);

if(!vif.presetn)
begin
tx.op = rst;
mon_ap.write(tx);
end

else if (vif.presetn && vif.pwrite)


begin
@(negedge vif.pready);
tx.op = writed;
tx.PWDATA = vif.pwdata;
@shraddha_pawankar
Date:24/07/2023

tx.PADDR = vif.paddr;
tx.PSLVERR = vif.pslverr;
mon_ap.write(tx);

end

else if (vif.presetn && !vif.pwrite)


begin
@(negedge vif.pready);

tx.op = readd;
tx.PADDR = vif.paddr;
tx.PRDATA = vif.prdata;
tx.PSLVERR = vif.pslverr;
mon_ap.write(tx);

end

end
endtask
endclass

///////////////////////////////////////////////////////////////////////////////////////

apb_agent.sv
class apb_agent extends uvm_agent;
`uvm_component_utils(apb_agent)

function new(string name="",uvm_component parent);


super.new(name,parent);
endfunction

apb_sqr sqr;
apb_drv drv;
@shraddha_pawankar
Date:24/07/2023

apb_mon mon;

function void build_phase(uvm_phase phase);

super.build_phase(phase);
sqr=apb_sqr::type_id::create("sqr",this);
drv=apb_drv::type_id::create("drv",this);
mon=apb_mon::type_id::create("mon",this);
endfunction

function void connect_phase(uvm_phase phase);


super.connect_phase(phase);
drv.seq_item_port.connect(sqr.seq_item_export);
endfunction

endclass
///////////////////////////////////////////////////////////////////////////////////////////////

apb_scb.sv
class apb_scb extends uvm_scoreboard;
`uvm_component_utils(apb_scb)

uvm_analysis_imp#(apb_seq_item,apb_scb) scb_ip;

bit [31:0] array[32] = '{default:0};


bit [31:0] addr = 0;

bit [31:0] data_rd = 0;

function new(string name="",uvm_component parent);


super.new(name,parent);
endfunction
@shraddha_pawankar
Date:24/07/2023

function void build_phase(uvm_phase phase);


super.build_phase(phase);
scb_ip=new("scb_ip",this);

endfunction

function void write(apb_seq_item tx);


//////////////////////////////////////////////

if(tx.op == rst)
begin
`uvm_info("SCB", "SYSTEM RESET DETECTED", UVM_NONE);
end
////////////////////////////////////

else if (tx.op == writed)


begin
if(tx.PSLVERR == 1'b1)
begin
`uvm_info("SCB", "SLV ERROR during WRITE OP", UVM_NONE);

end
else
begin
array[tx.PADDR] = tx.PWDATA;
`uvm_info("SCB", $sformatf("DATA WRITE OP addr:%0d, wdata:%0d
arr_wr:%0d",tx.PADDR,tx.PWDATA, array[tx.PADDR]), UVM_NONE);
end

end
/////////////////////////////////////////////////////////

else if (tx.op == readd)


@shraddha_pawankar
Date:24/07/2023

begin
if(tx.PSLVERR == 1'b1)
begin

`uvm_info("SCO", "SLV ERROR during READ OP", UVM_NONE);


end
else
begin
data_rd = array[tx.PADDR];

if (data_rd == tx.PRDATA)
`uvm_info("SCO", $sformatf("DATA MATCHED : addr:%0d,
rdata:%0d",tx.PADDR,tx.PRDATA), UVM_NONE)
else
`uvm_info("SCB",$sformatf("TEST FAILED : addr:%0d, rdata:%0d
data_rd_arr:%0d",tx.PADDR,tx.PRDATA,data_rd), UVM_NONE)
end
end

endfunction
endclass
//////////////////////////////////////////////////

apb_env.sv
class apb_env extends uvm_env;
`uvm_component_utils(apb_env)

function new(string name="",uvm_component parent);


super.new(name,parent);
endfunction

apb_agent agent;
apb_scb scb;
@shraddha_pawankar
Date:24/07/2023

function void build_phase(uvm_phase phase);


super.build_phase(phase);

agent = apb_agent::type_id::create("agent",this);
scb = apb_scb::type_id::create("scb",this);
endfunction

function void connect_phase(uvm_phase phase);

super.connect_phase(phase);
agent.mon.mon_ap.connect(scb.scb_ip);
endfunction

endclass

////////////////////////////////////////////////////////////////////

apb_test.sv
class apb_test extends uvm_test;
`uvm_component_utils(apb_test)

function new(string name="",uvm_component parent);


super.new(name,parent);
endfunction

apb_env env;

write_data seq1;
read_data seq2;
write_read seq3;

function void build_phase(uvm_phase phase);


super.build_phase(phase);
@shraddha_pawankar
Date:24/07/2023

env = apb_env::type_id::create("env",this);
seq1 = write_data::type_id::create("seq1");
seq2 = read_data::type_id::create("seq2");

seq3 = write_read::type_id::create("seq3");
endfunction

function void end_of_elaboration_phase(uvm_phase phase);


super.end_of_elaboration_phase(phase);

`uvm_info("TEST",sprint(),UVM_LOW)
endfunction

task run_phase(uvm_phase phase);


phase.raise_objection(this);

seq1.start(env.agent.sqr);
seq2.start(env.agent.sqr);
seq3.start(env.agent.sqr);
#20
phase.drop_objection(this);

endtask
endclass
////////////////////////////////////////////////////////////////////////////////////////

testbench.sv
`include "uvm_macros.svh"

import uvm_pkg::*;
`include "apb_intf.sv"
`include "apb_seq_item.sv"
`include "apb_seq.sv"
`include "apb_sqr.sv"
`include "apb_drv.sv"
@shraddha_pawankar
Date:24/07/2023

`include "apb_mon.sv"
`include "apb_agent.sv"
`include "apb_scb.sv"

`include "apb_env.sv"
`include "apb_test.sv"

module tb;
apb_if pif();

apb_ram dut (.presetn(pif.presetn),


.pclk(pif.pclk),
.psel(pif.psel),
.penable(pif.penable),

.pwrite(pif.pwrite),
.paddr(pif.paddr),
.pwdata(pif.pwdata),
.prdata(pif.prdata),
.pready(pif.pready),

.pslverr(pif.pslverr));

initial begin
pif.pclk <= 0;
end

always #10 pif.pclk <= ~pif.pclk;

initial begin
uvm_config_db#(virtual apb_if)::set(null, "*", "intf", pif);
run_test("apb_test");
@shraddha_pawankar
Date:24/07/2023

end
initial begin
$dumpfile("dump.vcd");

$dumpvars;
end
endmodule

OUTPUT:
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 10: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:29, wdata:3518879974 arr_wr:3518879974
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 70: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:19, wdata:1223309303 arr_wr:1223309303
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 130: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:0, wdata:927135257 arr_wr:927135257
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 190: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:4, wdata:2630357836 arr_wr:2630357836
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 250: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:30, wdata:2038009744 arr_wr:2038009744
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 310: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:14, wdata:3445058277 arr_wr:3445058277
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 370: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:21, wdata:2556536139 arr_wr:2556536139
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 430: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:19, wdata:3667410626 arr_wr:3667410626
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 490: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:7, wdata:2482714442 arr_wr:2482714442
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 550: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:17, wdata:3297414883 arr_wr:3297414883
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 610: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:18, wdata:1816544653 arr_wr:1816544653
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 670: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:10, wdata:2335071048 arr_wr:2335071048
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 730: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:24, wdata:558026772 arr_wr:558026772
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 790: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:28, wdata:780379121 arr_wr:780379121
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 850: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:23, wdata:3002128095 arr_wr:3002128095
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 910: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:12, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 970: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:2, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 1030: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:15, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 1090: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:19, rdata:3667410626
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 1150: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:13, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 1210: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:29, rdata:x data_rd_arr:3518879974
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 1270: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:4, rdata:2630357836
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 1330: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:2, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 1390: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:22, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 1450: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:0, rdata:927135257
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 1510: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:1, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 1570: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:25, rdata:x data_rd_arr:0
@shraddha_pawankar
Date:24/07/2023
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 1630: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:7, rdata:2482714442
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 1690: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:11, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 1750: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:6, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 1810: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:29, wdata:527641457 arr_wr:527641457
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 1870: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:19, rdata:3667410626
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 1930: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:0, wdata:2230864036 arr_wr:2230864036
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 1990: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:4, rdata:2630357836
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 2050: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:30, wdata:3341738523 arr_wr:3341738523
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 2110: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:14, rdata:3445058277
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 2170: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:21, wdata:3860264918 arr_wr:3860264918
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 2230: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:19, rdata:3667410626
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 2290: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:7, wdata:3786443221 arr_wr:3786443221
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 2350: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:17, rdata:3297414883
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 2410: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:18, wdata:3120273432 arr_wr:3120273432
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 2470: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:10, rdata:2335071048
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 2530: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:24, wdata:1861755551 arr_wr:1861755551
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 2590: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:28, rdata:780379121
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 2650: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:23, wdata:10889578 arr_wr:10889578
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 2710: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:9, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 2770: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:17, wdata:1862642809 arr_wr:1862642809
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 2830: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:15, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 2890: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:4, wdata:3122047948 arr_wr:3122047948
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 2950: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:16, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 3010: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:18, wdata:3789104995 arr_wr:3789104995
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 3070: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:10, rdata:2335071048
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 3130: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:25, wdata:3863813950 arr_wr:3863813950
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 3190: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:31, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 3250: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:27, wdata:3346174813 arr_wr:3346174813
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(54) @ 3310: uvm_test_top.env.scb [SCB]
TEST FAILED : addr:13, rdata:x data_rd_arr:0
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 3370: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:22, wdata:2236187584 arr_wr:2236187584
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 3430: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:22, rdata:2236187584
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(36) @ 3490: uvm_test_top.env.scb [SCB]
DATA WRITE OP addr:12, wdata:533852263 arr_wr:533852263
# KERNEL: UVM_INFO /home/runner/apb_scb.sv(52) @ 3550: uvm_test_top.env.scb [SCO]
DATA MATCHED : addr:24, rdata:1861755551
# KERNEL: UVM_INFO /home/build/vlib1/vlib/uvm-1.2/src/base/uvm_objection.svh(1271)
@ 3570: reporter [TEST_DONE] 'run' phase is ready to proceed to the 'extract' phase
# KERNEL: UVM_INFO /home/build/vlib1/vlib/uvm-
1.2/src/base/uvm_report_server.svh(869) @ 3570: reporter [UVM/REPORT/SERVER]
# KERNEL: --- UVM Report Summary ---
@shraddha_pawankar
Date:24/07/2023
# KERNEL:
# KERNEL: ** Report counts by severity
# KERNEL: UVM_INFO : 64
# KERNEL: UVM_WARNING : 0
# KERNEL: UVM_ERROR : 0
# KERNEL: UVM_FATAL : 0

https://www.edaplayground.com/x/dMch

You might also like