Kindly help to resolve the basic stuff of mailbox error.
Transaction class:
class transaction;
rand bit [7:0] data;
function void display();
$display ("[%0t] Data = 0x%0h", $time, data);
endfunction
endclass
Generator class:
class generator;
`include "transaction.sv"
mailbox mbx;
function new(mailbox mbx);
this.mbx = mbx;
endfunction
task genData();
transaction trns = new();
void'(trns.randomize());
void'(trns.display());
$display ("[%0t] [Generator] Going to put data packet into mailbox", $time);
mbx.put(trns);
$display ("[%0t] [Generator] Data put into mailbox", $time);
endtask
endclass
driver class:
class driver;
`include "transaction.sv"
mailbox mbx;
function new(mailbox mbx);
this.mbx = mbx;
endfunction
task drvData ();
transaction drvTrns = new();
$display ("[%0t] [Driver] Waiting for available data", $time);
mbx.get(drvTrns);
$display ("[%0t] [Driver] Data received from Mailbox", $time);
void'(drvTrns.display());
endtask
endclass
tb top module:
module tb;
`include "transaction.sv"
`include "generator.sv"
`include "driver.sv"
mailbox mbx;
generator Gen;
driver Drv;
initial begin
mbx = new();
Gen = new(mbx);
Drv = new(mbx);
fork
#5 Gen.genData();
#10 Drv.drvData();
join_none
end
endmodule
It is not runnning.