I am looking to use some fields of the driver in my monitor to facilitate the data collection in the monitor. I instantiated a “tlm_analysis_fifo” in my monitor and hooked it up as shown but it doesn’t seem to be working. Any help is appreciated.
class my_driver extends ovm_driver#(my_pkt);
ovm_analysis_port #(my_pkt) driver_ap;
function void build(); driver_ap = new(“driver_ap”, this); endfunction
virtual task run();
driver_ap.write(my_pkt);
…
endtask
endclass
class my_monitor extends ovm_monitor;
ovm_analysis_port #(my_pkt) monitor_ap;
local tlm_analysis_fifo #(my_pkt) monitor_af;
function void new();
super.new();
monitor_ap = new(“monitor_ap”, this);
monitor_af = new(“monitor_af”, this);
endfunction
function void connect();
super.connect();
monitor_ap.connect(monitor_af.get_ap);
endfunction
task run();
monitor_af.get(my_pkt);
…
endtask
endclass
class my_agent extends ovm_agent;
my_driver driver;
my_monitor monitor;
function void connect();
super.connect();
driver.driver_ap.connect(monitor.monitor_ap);
endfunction
…
endclass
Am I using the tlm_analysis_fifo correctly? I tried printing one of “my_pkt” fields and the field is wrong.