swapnilm Posted April 9, 2013 Report Share Posted April 9, 2013 Hello all UVM geeks, I am getting the following error. Error: monitor71.sv(69): The actual (dataout) and formal (bytestream) for a ref must be equivalent types. Can someone please help me in resolving this error? I want to decode 10bits data received from DUT into 8bits by using 10b8b decoder, which I have used but its giving error when I am trying to put each 10bits received (after collecting them into an array) and then putting each 10bits into decoder to get 8bits and then unpack bytes to create packets. Code is also given below. Its kinda urgent, `include "uvm_macros.svh" import uvm_pkg::*; class monitor extends uvm_monitor; //Registration of monitor with the factory. `uvm_component_utils(monitor) virtual dut_if dut_vi; // uvm_analysis_port #(transaction) Montr2Sb_port; uvm_analysis_port #(transaction) Montr2Agnt_port; //constructor by using keyword new function new(string name, uvm_component parent); super.new(name, parent); endfunction: new function void build_phase(uvm_phase phase); super.build_phase(phase); assert( uvm_config_db #(virtual dut_if)::get(this, "", "dut_vi", dut_vi) ); Montr2Agnt_port = new("Montr2Ag", this); endfunction : build_phase task run_phase(uvm_phase phase); transaction pkt; fork forever begin bit [9:0] bq[$],bytestream[]; bit [9:0] dataout[]; int j; int pkt_len = 13; // bit [9:0] unsigned bq[$]; // bit[9:0] unsigned bytestream[]; //keep it like this as the unpack_bytes take unsigned bytestream[].This works too. $display("san14- Display of the packet contents %h",dut_vi.data); repeat(3)@(dut_vi.clock); //keep repeat(3) at 3 only in order to match the first byte.Its needed for ( int j = 0; j < pkt_len ; j++) begin $display("san- Display of the packet contents %h",dut_vi.data); @(dut_vi.clock); $display("san12- Display of the packet contents %h",dut_vi.data); bq.push_back(dut_vi.data); //getting data from dut_if and putting in queue by pushing in it @( dut_vi.clock); $display("san11- Display of the queue contents %p",bq); uvm_report_info(get_full_name(),"Ready to Get out of the Foreach/For loop ...",UVM_LOW); end uvm_report_info(get_full_name(),"Got out of the Foreach loop ...",UVM_LOW); $display("san31- Display of the queue contents %h",bq.size()); bytestream = new[bq.size()] (bq); //(bq) $display("san32- Display of the bytes array contents %h",bytestream); pkt = transaction::type_id::create("pkt1"); uvm_report_info(get_full_name(),"Started unpacking of received bytes ...",UVM_LOW); decode(bytestream); void'(pkt.unpack_bytes(dataout)); //ERROR IS POINTING AT THIS LINE. pkt.print(); uvm_report_info(get_full_name(),"Completed unpacking of received bytes ...",UVM_LOW); //pkt.print(); Montr2Agnt_port.write(pkt); $display("san34- Display of the bytes array contents %h",bytestream); uvm_report_info(get_full_name(),"Sending received packet from monitor to the Scoreboard ...",UVM_LOW); end join endtask: run_phase virtual function decode(bytestream); bit [9:0]bytestream[]; uvm_report_info(get_full_name(),"Decoding Each 10bits into 8bits ...",UVM_LOW); foreach (bytestream[k]) begin bit dispin ; bit [9:0] dataout ; //output bytes of decoder reg[9:0] datain = bytestream[k]; logic code_err ; logic disp_err ; logic ai = datain[0] ; logic bi = datain[1] ; logic ci = datain[2] ; logic di = datain[3] ; logic ei = datain[4] ; logic ii = datain[5] ; logic fi = datain[6] ; logic gi = datain[7] ; logic hi = datain[8] ; logic ji = datain[9] ; logic aeqb = (ai & bi) | (!ai & !bi) ; logic ceqd = (ci & di) | (!ci & !di) ; logic p22 = (ai & bi & !ci & !di) | (ci & di & !ai & !bi) | ( !aeqb & !ceqd) ; logic p13 = ( !aeqb & !ci & !di) | ( !ceqd & !ai & !bi) ; logic p31 = ( !aeqb & ci & di) | ( !ceqd & ai & bi) ; //logic p40; //datain = pout; logic p40 = ai & bi & ci & di ; logic p04 = !ai & !bi & !ci & !di ; logic disp6a = p31 | (p22 & dispin) ; // pos disp if p22 and was pos, or p31. logic disp6a2 = p31 & dispin ; // disp is ++ after 4 bits logic disp6a0 = p13 & ! dispin ; // -- disp after 4 bits logic disp6b = (((ei & ii & ! disp6a0) | (disp6a & (ei | ii)) | disp6a2 | (ei & ii & di)) & (ei | ii | di)) ; // The 5B/6B decoding special cases where ABCDE != abcde logic p22bceeqi = p22 & bi & ci & (ei == ii) ; logic p22bncneeqi = p22 & !bi & !ci & (ei == ii) ; logic p13in = p13 & !ii ; logic p31i = p31 & ii ; logic p13dei = p13 & di & ei & ii ; logic p22aceeqi = p22 & ai & ci & (ei == ii) ; logic p22ancneeqi = p22 & !ai & !ci & (ei == ii) ; logic p13en = p13 & !ei ; logic anbnenin = !ai & !bi & !ei & !ii ; logic abei = ai & bi & ei & ii ; logic cdei = ci & di & ei & ii ; logic cndnenin = !ci & !di & !ei & !ii ; //non-zero disparity cases: logic p22enin = p22 & !ei & !ii ; logic p22ei = p22 & ei & ii ; //logic p13in = p12 & !ii ; //logic p31i = p31 & ii ; logic p31dnenin = p31 & !di & !ei & !ii ; //logic p13dei = p13 & di & ei & ii ; logic p31e = p31 & ei ; logic compa = p22bncneeqi | p31i | p13dei | p22ancneeqi | p13en | abei | cndnenin ; logic compb = p22bceeqi | p31i | p13dei | p22aceeqi | p13en | abei | cndnenin ; logic compc = p22bceeqi | p31i | p13dei | p22ancneeqi | p13en | anbnenin | cndnenin ; logic compd = p22bncneeqi | p31i | p13dei | p22aceeqi | p13en | abei | cndnenin ; logic compe = p22bncneeqi | p13in | p13dei | p22ancneeqi | p13en | anbnenin | cndnenin ; logic ao = ai ^ compa ; logic bo = bi ^ compb ; logic co = ci ^ compc ; logic d0 = di ^ compd ; logic eo = ei ^ compe ; logic feqg = (fi & gi) | (!fi & !gi) ; logic heqj = (hi & ji) | (!hi & !ji) ; logic fghj22 = (fi & gi & !hi & !ji) | (!fi & !gi & hi & ji) | ( !feqg & !heqj) ; logic fghjp13 = ( !feqg & !hi & !ji) | ( !heqj & !fi & !gi) ; logic fghjp31 = ( (!feqg) & hi & ji) | ( !heqj & fi & gi) ; logic dispout = (fghjp31 | (disp6b & fghj22) | (hi & ji)) & (hi | ji) ; logic ko = ( (ci & di & ei & ii) | ( !ci & !di & !ei & !ii) | (p13 & !ei & ii & gi & hi & ji) | (p31 & ei & !ii & !gi & !hi & !ji)) ; logic alt7 = (fi & !gi & !hi & // 1000 cases, where disp6b is 1 ((dispin & ci & di & !ei & !ii) | ko | (dispin & !ci & di & !ei & !ii))) | (!fi & gi & hi & // 0111 cases, where disp6b is 0 (( !dispin & !ci & !di & ei & ii) | ko | ( !dispin & ci & !di & ei & ii))) ; logic k28 = (ci & di & ei & ii) | ! (ci | di | ei | ii) ; // k28 with positive disp into fghi - .1, .2, .5, and .6 special cases logic k28p = ! (ci | di | ei | ii) ; logic fo = (ji & !fi & (hi | !gi | k28p)) | (fi & !ji & (!hi | gi | !k28p)) | (k28p & gi & hi) | (!k28p & !gi & !hi) ; logic go = (ji & !fi & (hi | !gi | !k28p)) | (fi & !ji & (!hi | gi |k28p)) | (!k28p & gi & hi) | (k28p & !gi & !hi) ; logic ho = ((ji ^ hi) & ! ((!fi & gi & !hi & ji & !k28p) | (!fi & gi & hi & !ji & k28p) | (fi & !gi & !hi & ji & !k28p) | (fi & !gi & hi & !ji & k28p))) | (!fi & gi & hi & ji) | (fi & !gi & !hi & !ji) ; logic disp6p = (p31 & (ei | ii)) | (p22 & ei & ii) ; logic disp6n = (p13 & ! (ei & ii)) | (p22 & !ei & !ii) ; logic disp4p = fghjp31 ; logic disp4n = fghjp13 ; //assign code_err = p40 | p04 | (fi & gi & hi & ji) | (!fi & !gi & !hi & !ji) | (p13 & !ei & !ii) | (p31 & ei & ii) | (ei & ii & fi & gi & hi) | (!ei & !ii & !fi & !gi & !hi) | (ei & !ii & gi & hi & ji) | (!ei & ii & !gi & !hi & !ji) | (!p31 & ei & !ii & !gi & !hi & !ji) | (!p13 & !ei & ii & gi & hi & ji) | (((ei & ii & !gi & !hi & !ji) | (!ei & !ii & gi & hi & ji)) & ! ((ci & di & ei) | (!ci & !di & !ei))) | (disp6p & disp4p) | (disp6n & disp4n) | (ai & bi & ci & !ei & !ii & ((!fi & !gi) | fghjp13)) | (!ai & !bi & !ci & ei & ii & ((fi & gi) | fghjp31)) | (fi & gi & !hi & !ji & disp6p) | (!fi & !gi & hi & ji & disp6n) | (ci & di & ei & ii & !fi & !gi & !hi) | (!ci & !di & !ei & !ii & fi & gi & hi) ; //assign dataout = {ko, ho, go, fo, eo, d0, co, bo, ao} ; // my disp err fires for any legal codes that violate disparity, may fire for illegal codes //assign disp_err = ((dispin & disp6p) | (disp6n & !dispin) | (dispin & !disp6n & fi & gi) | (dispin & ai & bi & ci) | (dispin & !disp6n & disp4p) | (!dispin & !disp6p & !fi & !gi) | (!dispin & !ai & !bi & !ci) | (!dispin & !disp6p & disp4n) | (disp6p & disp4p) | (disp6n & disp4n)) ; uvm_report_info(get_full_name(),"Decoded Each 10bits into 8bits ...",UVM_LOW); $display("SM02- Display of the Decoded data contents %h",dataout); end endfunction: decode endclass: monitor [\code] Thanks, Quote Link to comment Share on other sites More sharing options...
swapnilm Posted April 10, 2013 Author Report Share Posted April 10, 2013 Can someone please help me out in resolving this error? I would appreciate it. Quote Link to comment Share on other sites More sharing options...
mea1201 Posted April 10, 2013 Report Share Posted April 10, 2013 Have you checked the UVM class reference? The function prototype for unpack_bytes is function int unpack_bytes(ref byte unsigned bytestream[], input uvm_packer packer = null); You declared dataout (the actual) as an array of 10-bit values, which does not match in type with the bytestream argument (the formal), which is typed as an array of 8-bit values in the prototype. You need to pass in an array of bytes. You'll probably have to design your own 10b8b conversion in your decoder before unpacking into your packet. Quote Link to comment Share on other sites More sharing options...
swapnilm Posted April 11, 2013 Author Report Share Posted April 11, 2013 Hello mea1201, You are so right. I also sensed that protptype of unpack_bytes and now corrected the error. Now I am trying to pass the array of bytes (the output of decoder) to unpack_bytes, but its not working. I made the changes accordingly in decoder function and created new function drive to create the array of bytes(the output of decoder), as shown in the code below. The issue is drive function is not getting the input from decoder and hence I am not able to pass the array of bytes to unpack_bytes. Also if I try to create the array of bytes in the decode fucntion, it gives me error:- ** Error: monitor711.sv(294): Cannot assign an unpacked type to a packed type. Can u please have a look at it and help me out please. I truly appreciate your help. `include "uvm_macros.svh" import uvm_pkg::*; class monitor extends uvm_monitor; //Registration of monitor with the factory. `uvm_component_utils(monitor) virtual dut_if dut_vi; uvm_analysis_port #(transaction) Montr2Agnt_port; //constructor by using keyword new function new(string name, uvm_component parent); super.new(name, parent); endfunction: new function void build_phase(uvm_phase phase); super.build_phase(phase); assert( uvm_config_db #(virtual dut_if)::get(this, "", "dut_vi", dut_vi) ); Montr2Agnt_port = new("Montr2Ag", this); endfunction : build_phase task run_phase(uvm_phase phase); transaction pkt; fork forever begin bit [7:0] decdrout1; bit [7:0] decdrout2[]; int j; int pkt_len = 8; bit [9:0] bq[$]; bit[9:0] bytes[]; $display("san14- Display of the packet contents %h",dut_vi.data); //%d repeat(2)@(dut_vi.clock); for ( int j = 0; j < pkt_len ; j++) // this gives more than 8 bytes but doesnt print pkts.works with this 8 too begin $display("san- Display of the packet contents %h",dut_vi.data); @(dut_vi.clock); $display("san12- Display of the packet contents %h",dut_vi.data); bq.push_back(dut_vi.data); @( dut_vi.clock); $display("san11- Display of the queue contents %p",bq); //%p uvm_report_info(get_full_name(),"Ready to Get out of the Foreach/For loop ...",UVM_LOW); end uvm_report_info(get_full_name(),"Got out of the Foreach loop ...",UVM_LOW); $display("san31- Display of the queue contents %h",bq.size()); bytes = new[bq.size()] (bq); $display("san32- Display of the bytes array contents %p",bytes); //%h pkt = transaction::type_id::create("pkt1"); decode(bytes); // BYTES ARE THE INCOMING BYTES FROM DRIVER THROUGH INTERFACE drive(decdrout1); //decdrout1 IS THE OUTPUT OF DECODE FUNCTION ABOVE uvm_report_info(get_full_name(),"Started unpacking of received bytes ...",UVM_LOW); void'(pkt.unpack_bytes(decdrout2)); // decdrout2 IS THE OUTPUT OF DRIVE FUNCTION pkt.print(); uvm_report_info(get_full_name(),"Completed unpacking of received bytes ...",UVM_LOW); Montr2Agnt_port.write(pkt); $display("san34- Display of the bytes array contents %p",bytes); //%h uvm_report_info(get_full_name(),"Sending received packet from monitor to the Scoreboard ...",UVM_LOW); end join endtask: run_phase virtual function decode(bytes); //(input bytes, output decdrout2); //,decdrout1); //task bit [9:0]bytes[]; $display("san35- Display of the bytes array received inside the decoder %p",bytes); //%h uvm_report_info(get_full_name(),"Received All 10bits into the Decoder ...",UVM_LOW); // bit [7:0] decdrout2[]; // bit [7:0] decdrout1; uvm_report_info(get_full_name(),"Decoding Each 10bits into 8bits ...",UVM_LOW); foreach (bytes[k]) begin bit dispin ; bit [8:0] dataout ; bit [7:0] decdrout1; bit [7:0] decdrout2[]; bit[7:0]queue[$]; reg[9:0] datain = bytes[k]; logic code_err ; logic disp_err ; logic ai = datain[0] ; logic bi = datain[1] ; logic ci = datain[2] ; logic di = datain[3] ; logic ei = datain[4] ; logic ii = datain[5] ; logic fi = datain[6] ; logic gi = datain[7] ; logic hi = datain[8] ; logic ji = datain[9] ; logic aeqb = (ai & bi) | (!ai & !bi) ; logic ceqd = (ci & di) | (!ci & !di) ; logic p22 = (ai & bi & !ci & !di) | (ci & di & !ai & !bi) | ( !aeqb & !ceqd) ; logic p13 = ( !aeqb & !ci & !di) | ( !ceqd & !ai & !bi) ; logic p31 = ( !aeqb & ci & di) | ( !ceqd & ai & bi) ; //logic p40; //datain = pout; logic p40 = ai & bi & ci & di ; logic p04 = !ai & !bi & !ci & !di ; logic disp6a = p31 | (p22 & dispin) ; // pos disp if p22 and was pos, or p31. logic disp6a2 = p31 & dispin ; // disp is ++ after 4 bits logic disp6a0 = p13 & ! dispin ; // -- disp after 4 bits logic disp6b = (((ei & ii & ! disp6a0) | (disp6a & (ei | ii)) | disp6a2 | (ei & ii & di)) & (ei | ii | di)) ; // The 5B/6B decoding special cases where ABCDE != abcde logic p22bceeqi = p22 & bi & ci & (ei == ii) ; logic p22bncneeqi = p22 & !bi & !ci & (ei == ii) ; logic p13in = p13 & !ii ; logic p31i = p31 & ii ; logic p13dei = p13 & di & ei & ii ; logic p22aceeqi = p22 & ai & ci & (ei == ii) ; logic p22ancneeqi = p22 & !ai & !ci & (ei == ii) ; logic p13en = p13 & !ei ; logic anbnenin = !ai & !bi & !ei & !ii ; logic abei = ai & bi & ei & ii ; logic cdei = ci & di & ei & ii ; logic cndnenin = !ci & !di & !ei & !ii ; //non-zero disparity cases: logic p22enin = p22 & !ei & !ii ; logic p22ei = p22 & ei & ii ; //logic p13in = p12 & !ii ; //logic p31i = p31 & ii ; logic p31dnenin = p31 & !di & !ei & !ii ; //logic p13dei = p13 & di & ei & ii ; logic p31e = p31 & ei ; logic compa = p22bncneeqi | p31i | p13dei | p22ancneeqi | p13en | abei | cndnenin ; logic compb = p22bceeqi | p31i | p13dei | p22aceeqi | p13en | abei | cndnenin ; logic compc = p22bceeqi | p31i | p13dei | p22ancneeqi | p13en | anbnenin | cndnenin ; logic compd = p22bncneeqi | p31i | p13dei | p22aceeqi | p13en | abei | cndnenin ; logic compe = p22bncneeqi | p13in | p13dei | p22ancneeqi | p13en | anbnenin | cndnenin ; logic ao = ai ^ compa ; logic bo = bi ^ compb ; logic co = ci ^ compc ; logic d0 = di ^ compd ; logic eo = ei ^ compe ; logic feqg = (fi & gi) | (!fi & !gi) ; logic heqj = (hi & ji) | (!hi & !ji) ; logic fghj22 = (fi & gi & !hi & !ji) | (!fi & !gi & hi & ji) | ( !feqg & !heqj) ; logic fghjp13 = ( !feqg & !hi & !ji) | ( !heqj & !fi & !gi) ; logic fghjp31 = ( (!feqg) & hi & ji) | ( !heqj & fi & gi) ; logic dispout = (fghjp31 | (disp6b & fghj22) | (hi & ji)) & (hi | ji) ; logic ko = ( (ci & di & ei & ii) | ( !ci & !di & !ei & !ii) | (p13 & !ei & ii & gi & hi & ji) | (p31 & ei & !ii & !gi & !hi & !ji)) ; logic alt7 = (fi & !gi & !hi & // 1000 cases, where disp6b is 1 ((dispin & ci & di & !ei & !ii) | ko | (dispin & !ci & di & !ei & !ii))) | (!fi & gi & hi & // 0111 cases, where disp6b is 0 (( !dispin & !ci & !di & ei & ii) | ko | ( !dispin & ci & !di & ei & ii))) ; logic k28 = (ci & di & ei & ii) | ! (ci | di | ei | ii) ; // k28 with positive disp into fghi - .1, .2, .5, and .6 special cases logic k28p = ! (ci | di | ei | ii) ; logic fo = (ji & !fi & (hi | !gi | k28p)) | (fi & !ji & (!hi | gi | !k28p)) | (k28p & gi & hi) | (!k28p & !gi & !hi) ; logic go = (ji & !fi & (hi | !gi | !k28p)) | (fi & !ji & (!hi | gi |k28p)) | (!k28p & gi & hi) | (k28p & !gi & !hi) ; logic ho = ((ji ^ hi) & ! ((!fi & gi & !hi & ji & !k28p) | (!fi & gi & hi & !ji & k28p) | (fi & !gi & !hi & ji & !k28p) | (fi & !gi & hi & !ji & k28p))) | (!fi & gi & hi & ji) | (fi & !gi & !hi & !ji) ; logic disp6p = (p31 & (ei | ii)) | (p22 & ei & ii) ; logic disp6n = (p13 & ! (ei & ii)) | (p22 & !ei & !ii) ; logic disp4p = fghjp31 ; logic disp4n = fghjp13 ; //assign code_err = p40 | p04 | (fi & gi & hi & ji) | (!fi & !gi & !hi & !ji) | (p13 & !ei & !ii) | (p31 & ei & ii) | (ei & ii & fi & gi & hi) | (!ei & !ii & !fi & !gi & !hi) | (ei & !ii & gi & hi & ji) | (!ei & ii & !gi & !hi & !ji) | (!p31 & ei & !ii & !gi & !hi & !ji) | (!p13 & !ei & ii & gi & hi & ji) | (((ei & ii & !gi & !hi & !ji) | (!ei & !ii & gi & hi & ji)) & ! ((ci & di & ei) | (!ci & !di & !ei))) | (disp6p & disp4p) | (disp6n & disp4n) | (ai & bi & ci & !ei & !ii & ((!fi & !gi) | fghjp13)) | (!ai & !bi & !ci & ei & ii & ((fi & gi) | fghjp31)) | (fi & gi & !hi & !ji & disp6p) | (!fi & !gi & hi & ji & disp6n) | (ci & di & ei & ii & !fi & !gi & !hi) | (!ci & !di & !ei & !ii & fi & gi & hi) ; //assign dataout = {ko, ho, go, fo, eo, d0, co, bo, ao} ; //actual output of Decoder decdrout1 = {ho, go, fo, eo, d0, co, bo, ao}; //OUTPUT OF DECODER ADDED BY ME $display("SM02- Display of the Decoded data contents %h",dataout); $display("SM04- Display of the Decoded data contents %h",decdrout1); //%b decdrout1 // my disp err fires for any legal codes that violate disparity, may fire for illegal codes //assign disp_err = ((dispin & disp6p) | (disp6n & !dispin) | (dispin & !disp6n & fi & gi) | (dispin & ai & bi & ci) | (dispin & !disp6n & disp4p) | (!dispin & !disp6p & !fi & !gi) | (!dispin & !ai & !bi & !ci) | (!dispin & !disp6p & disp4n) | (disp6p & disp4p) | (disp6n & disp4n)) ; uvm_report_info(get_full_name(),"Decoded Each 10bits into 8bits ...",UVM_LOW); $display("SM03- Display of the Decoded data contents %h",decdrout1); // end uvm_report_info(get_full_name(),"Decoded completely 10bits into 8bits ...",UVM_LOW); /* for ( int j = 0; j < 8 ; j++) //I TRIED TO CREATE ARRAY OF DECODER OUTPUT BYTES HERE ALSO BUT ITS NOT WORKING // foreach(decdrout1[i]) //added later //bit[8:0]queue[$];//,decodbytes[]; // added later begin queue.push_back(decdrout1); $display("san111- Display of the queue contents %p",queue); // decdrout2 = new[queue.size()] (queue); // $display("SM22- Display of the bytes array contents %h",decdrout2); // return decdrout2; end // $display("SM11- Display of the queue contents %h",queue.size()); decdrout2 = new[queue.size()] (queue); $display("SM22- Display of the bytes array contents %h",decdrout2); // return decdrout1; decdrout2 = { << byte {decdrout1}}; //,decdrout2}}; //decdrout2 = { >> {decdrout2,decdrout2,decdrout2,decdrout2,decdrout2,decdrout2,decdrout2,decdrout2}}; //decdrout2 = { >> {decdrout1,decdrout1,decdrout1,decdrout1,decdrout1,decdrout1,decdrout1,decdrout1}}; return decdrout2; end // return decdrout2; //newcrc; //decdrout2 = new[queue.size()] (queue); */ end endfunction: decode virtual function drive(input decdrout1); bit [7:0] queue[$],decdrout2[]; int i ; $display("SM44- Display of the bytes contents %h",decdrout1); uvm_report_info(get_full_name(),"Creating pkt from decoder output bytes ...",UVM_LOW); for ( i=0; i<8; i++) // foreach(decdrout1[i]) begin uvm_report_info(get_full_name(),"33Received decoder bytes ...",UVM_LOW); queue.push_back(decdrout1); $display("san111- Display of the queue contents %p",queue); uvm_report_info(get_full_name(),"44Received decoder bytes ....",UVM_LOW); end decdrout2 = new[queue.size()] (queue); $display("SM22- Display of the bytes array to go into unpack function contents %h",decdrout2); endfunction : drive endclass: monitor Result log file portion:- san35- Display of the bytes array received inside the decoder '{561, 340, 540, 472, 613, 820, 440, 677} # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Received All 10bits into the Decoder ... # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoding Each 10bits into 8bits ... # SM02- Display of the Decoded data contents 0f1 # SM04- Display of the Decoded data contents f1 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded Each 10bits into 8bits ... # SM03- Display of the Decoded data contents f1 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded completely 10bits into 8bits ... # SM02- Display of the Decoded data contents 0a4 # SM04- Display of the Decoded data contents a4 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded Each 10bits into 8bits ... # SM03- Display of the Decoded data contents a4 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded completely 10bits into 8bits ... # SM02- Display of the Decoded data contents 0fc # SM04- Display of the Decoded data contents fc # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded Each 10bits into 8bits ... # SM03- Display of the Decoded data contents fc # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded completely 10bits into 8bits ... # SM02- Display of the Decoded data contents 0e8 # SM04- Display of the Decoded data contents e8 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded Each 10bits into 8bits ... # SM03- Display of the Decoded data contents e8 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded completely 10bits into 8bits ... # SM02- Display of the Decoded data contents 025 # SM04- Display of the Decoded data contents 25 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded Each 10bits into 8bits ... # SM03- Display of the Decoded data contents 25 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded completely 10bits into 8bits ... # SM02- Display of the Decoded data contents 074 # SM04- Display of the Decoded data contents 74 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded Each 10bits into 8bits ... # SM03- Display of the Decoded data contents 74 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded completely 10bits into 8bits ... # SM02- Display of the Decoded data contents 0c7 # SM04- Display of the Decoded data contents c7 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded Each 10bits into 8bits ... # SM03- Display of the Decoded data contents c7 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded completely 10bits into 8bits ... # SM02- Display of the Decoded data contents 045 # SM04- Display of the Decoded data contents 45 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded Each 10bits into 8bits ... # SM03- Display of the Decoded data contents 45 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Decoded completely 10bits into 8bits ... # SM44- Display of the bytes contents 0 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Creating pkt from decoder output bytes ... # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 33Received decoder bytes ... # san111- Display of the queue contents '{0} # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 44Received decoder bytes .... # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 33Received decoder bytes ... # san111- Display of the queue contents '{0, 0} # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 44Received decoder bytes .... # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 33Received decoder bytes ... # san111- Display of the queue contents '{0, 0, 0} # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 44Received decoder bytes .... # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 33Received decoder bytes ... # san111- Display of the queue contents '{0, 0, 0, 0} # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 44Received decoder bytes .... # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 33Received decoder bytes ... # san111- Display of the queue contents '{0, 0, 0, 0, 0} # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 44Received decoder bytes .... # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 33Received decoder bytes ... # san111- Display of the queue contents '{0, 0, 0, 0, 0, 0} # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 44Received decoder bytes .... # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 33Received decoder bytes ... # san111- Display of the queue contents '{0, 0, 0, 0, 0, 0, 0} # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 44Received decoder bytes .... # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 33Received decoder bytes ... # san111- Display of the queue contents '{0, 0, 0, 0, 0, 0, 0, 0} # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] 44Received decoder bytes .... # SM22- Display of the bytes array to go into unpack function contents 00 00 00 00 00 00 00 00 # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Started unpacking of received bytes ... # UVM_ERROR @ 900: reporter [PCKSZ] 8 bits needed to unpack integral, yet only 0 available. # UVM_ERROR @ 900: reporter [PCKSZ] 8 bits needed to unpack integral, yet only 0 available. # UVM_ERROR @ 900: reporter [PCKSZ] 16 bits needed to unpack integral, yet only 0 available. # UVM_ERROR @ 900: reporter [PCKSZ] 8 bits needed to unpack integral, yet only 0 available. # san998-tran- Display of the payload size 00000001 # san999-tran- Display of the payload size 00000001 # UVM_ERROR @ 900: reporter [PCKSZ] 16 bits needed to unpack integral, yet only 0 available. # UVM_ERROR @ 900: reporter [PCKSZ] 8 bits needed to unpack integral, yet only 0 available. # ------------------------------------------ # Name Type Size Value # ------------------------------------------ # pkt1 transaction - @737 # sync integral 8 'h0 # sof integral 8 'h0 # header integral 16 'h0 # payload da(integral) 1 - # [0] integral 8 'h0 # crc integral 16 'h0 # eof integral 8 'h0 # ------------------------------------------ # UVM_INFO @ 900: uvm_test_top.env_h.agent_h.monitor_h [uvm_test_top.env_h.agent_h.monitor_h] Completed unpacking of received bytes ... # --------------------------------------------------------------------------------------------------- # Name Type Size Value # --------------------------------------------------------------------------------------------------- # tx transaction - @704 # sync integral 8 'hf1 # sof integral 8 'ha4 # header integral 16 'hfce8 # payload da(integral) 1 - # [0] integral 8 'h25 # crc integral 16 'h74c7 # eof integral 8 'h45 # begin_time time 64 0 # end_time time 64 0 # depth int 32 'd2 # parent sequence (name) string 3 sq1 # parent sequence (full name) string 43 uvm_test_top.env_h.agent_h.sequencer1_h.sq1 # sequencer string 39 uvm_test_top.env_h.agent_h.sequencer1_h # --------------------------------------------------------------------------------------------------- # UVM_INFO @ 900: uvm_test_top.env_h.scoreboard_h [uvm_test_top.env_h.scoreboard_h] The Received packets are being popped out from the queue # UVM_INFO @ 900: reporter [MISCMP] Miscompare for pkt1.sync: lhs = 'h0 : rhs = 'hf1 # UVM_INFO @ 900: reporter [MISCMP] 1 Miscompare(s) for object tx@704 vs. pkt1@737 # UVM_ERROR @ 900: uvm_test_top.env_h.scoreboard_h [scoreboard] Sent packet and received packet mismatched # san34- Display of the bytes array contents '{561, 340, 540, 472, 613, 820, 440, 677} Thanks for your help. I appreciate it. Quote Link to comment Share on other sites More sharing options...
swapnilm Posted April 12, 2013 Author Report Share Posted April 12, 2013 Hello all, Can anyone please help me in resolving the above issue. I would really appreciate it. Thanks, Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.