Hi,
-Monitor analysis port is connected scoreboard export
-scoreboard export is connected to scoreboard’s analysis fifo.
From my monitor i am writing only once, but from analysis fifo, i recive the same item twice. Can anyone tell me what is the mistake i am doing ?
UVM_INFO …/PSRAMTBsrc/PsramMaster_PsramMon.sv(68) @ 153855000 ps: uvm_test_top.env.ps_mon [PSRAM_MON] PKT TYPE : SYNC_WR(80H)
UVM_INFO …/PSRAMTBsrc/PsRamSco.sv(349) @ 153855000 ps: uvm_test_top.env.sb [uvm_test_top.env.sb] GOT PSRAM ITEM : PKT TYPE : SYNC_WR(80H)
UVM_INFO …/PSRAMTBsrc/PsRamSco.sv(349) @ 153855000 ps: uvm_test_top.env.sb [uvm_test_top.env.sb] GOT PSRAM ITEM : PKT TYPE : SYNC_WR(80H)
In reply to saravanantvs:
Check that you only made one connection.
In reply to dave_59:
Hi Dave,
I found out the issue. socreboard is getting item only once. But the uvm_info is getting printed two times. May i know how to solve this.
task PsRamSco::psram_rcv();
PsramTrns psram_item_h;
forever begin
uvm_info(get_full_name(),$psprintf("Size of fifo is-1 : %0d",f_mon_analysis_exp.size()),UVM_LOW) f_mon_analysis_exp.get(psram_item_h); $display("JUST CHECKING");
uvm_info(get_full_name(),$psprintf(“Size of fifo is-2 : %0d”,f_mon_analysis_exp.size()),UVM_LOW)
`uvm_info(get_full_name(),$psprintf(" GOT PSRAM ITEM : %0s",psram_item_h.sprint()),UVM_LOW)
if(psram_item_h.is_sync_wr()) begin
processSyncWr(psram_item_h);
end
JUST CHECKING
UVM_INFO …/PSRAMTBsrc/PsRamSco.sv(351) @ 153135000 ps: uvm_test_top.env.sb [uvm_test_top.env.sb] Size of fifo is-2 : 0
UVM_INFO …/PSRAMTBsrc/PsRamSco.sv(351) @ 153135000 ps: uvm_test_top.env.sb [uvm_test_top.env.sb] Size of fifo is-2 : 0
In reply to saravanantvs:
Hi Dave,
I have found out the problem.
In report_severity_action, if i specify UVM_DISPLAY | UVM_LOG. then i am getting same info messages more than once. but once i change it to only UVM_LOG. Then i am getting only once.
Any idea why it is happening like this.
axi_fd = $fopen(“AXI_MON_LOG.log”,“w”);
set_report_id_file(“AXI_MON”, axi_fd );
//set_report_severity_action(UVM_LOW, (UVM_DISPLAY | UVM_LOG) );
set_report_severity_action(UVM_LOW, UVM_LOG );
In reply to saravanantvs:
Your problem is you used
set_report_id_file(“AXI_MON”, axi_fd );, but your message ID is
`uvm_info(get_full_name(),…), so your message ID don’t match. The default log file is the display.
You can
- use set_report_default_file() instead of set_report_id_file()
- make the IDs match by using set_report_id_file(get_full_name(),axi_fd);
- make the IDs match by using `uvm_info(“AXI_MON”,…)
I prefer options 1 or 3. I don’t like using get_full_name for the message ID. It is duplicate information in the message. You should use more unique message IDs for fine-grain control.