shine2828
-
Posts
3 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Events
Posts posted by shine2828
-
-
Hi Peter,
Thanks for your valued answer.
Regards,
Joy
-
Hi all,
How to determine that how many agents are required for any UVM environment working with SVTB techniques.
bye,
joy
Help Required for Scoreboard Code
in UVM SystemVerilog Discussions
Posted
Rsepected All,
I found that there are many senior & well rich (by knowledge) engineers/ scientists exist over here in this forum. So I thought to take a chance to share my doubt in area of UVM as a student.
I understand that I may not be even competant upto your level or you may find my doubt as silly. But your guidance & help is highly expected to my studies.
A portion of code I have pasted below. Can anybody please guide me that what exactly this code means (especially run phase) ?
I expect that senior/junior fellow in a group will justify my humble request.
Thanks,
Code :
function void ram_scoreboard::memory_write(wr_xtn wd);
if(wd.write)
begin
ref_data[wd.addr] = wd.data;
end
endfunction : memory_write
//------- memory_read() method -------//
function bit ram_scoreboard::memory_read(ref rd_xtn rd);
if(rd.read)
begin
if(ref_data.exists(rd.addr))
begin
rd.data = ref_data[rd.addr] ;
return(1);
end
else
begin
return(0);
end
end
endfunction : memory_read
//----------------- run() phase -------------------//
task ram_scoreboard::run_phase(uvm_phase phase);
fork
forever begin
fifo_wrh.get(wr_data);
memory_write(wr_data);
end
forever begin
fifo_rdh.get(rd_data);
check_data(rd_data);
end
join
endtask
//Explore method check_data
function void ram_scoreboard::check_data(rd_xtn rd);
rd_xtn ref_xtn;
// Copy of read XTN
$cast( ref_xtn, rd.clone());
if(mem_read(ref_xtn))
begin
//compare
if(rd.compare(ref_xtn))
begin
`uvm_info(get_type_name(), $sformatf("Scoreboard - Data Match successful"), UVM_MEDIUM)
end
else
`uvm_error(get_type_name(), $sformatf("\n Scoreboard Error [Data Mismatch]: \n Received Transaction:\n %s \n Expected Transaction: \n %s",rd.sprint(), ref_xtn.sprint()))
end
else
uvm_report_info(get_type_name(), $psprintf("No Data written in the address=%d \n %s",rd.addr, rd.sprint()));
endfunction