amitrana Posted December 29, 2011 Report Posted December 29, 2011 Hi Guys, I have buitl a scoreboard using the uvm_in_order_comparator. But it always shows the data match even in the case of mismatch, I reviewed the code ,code is fine. I don't know doe's it's a UVM issue or my code have any problem code is given below import uvm_pkg::*; `include "uvm_macros.svh" class pkt extends uvm_object; int a; function new(string name=" "); super.new(name); endfunction // new function string convert2string(); convert2string={$sformatf("a=%d",a), super.convert2string}; endfunction endclass class my_comp1 extends uvm_component ; uvm_analysis_port#(pkt) my_port; pkt temp_pkt; `uvm_component_utils(my_comp1) function new(string name ,uvm_component parent=null); super.new(name,parent); my_port=new("my_port",this); endfunction task run_phase(uvm_phase phase); phase.raise_objection(this); for(int i=0 ; i<=100 ;i++) begin temp_pkt=new($sformatf("ins=%-d",i)); temp_pkt.a=9; my_port.write(temp_pkt); end phase.drop_objection(this); endtask endclass class my_comp2 extends uvm_component ; uvm_analysis_port#(pkt) my_port1; pkt temp_pkt ; `uvm_component_utils(my_comp2) function new(string name ,uvm_component parent=null); super.new(name,parent); my_port1=new("my_port1",this); endfunction task run_phase(uvm_phase phase); phase.raise_objection(this); temp_pkt=new("i"); for (int i=0 ; i<=100 ;i++) begin temp_pkt=new($sformatf("ins=%d",i)); temp_pkt.a=100; my_port1.write(temp_pkt); end phase.drop_objection(this); endtask endclass // my_comp2 class my_comp3 extends uvm_component ; // uvm_analysis_port#(pkt) my_port1; pkt temp_pkt ; `uvm_component_utils(my_comp3) uvm_in_order_comparator # (pkt ,uvm_class_comp#(pkt),uvm_class_converter#(pkt)) my_comparator ; //uvm_in_order_comparartor my_comparator ; function new(string name ,uvm_component parent=null); super.new(name,parent); my_comparator=new("my_comparator",this); // my_port1=new("my_port",this); endfunction endclass // my_comp2 class test extends uvm_test ; my_comp1 comp1; my_comp2 comp2 ; my_comp3 comp3; `uvm_component_utils(test) function new(string name ,uvm_component parent=null); super.new(name,parent); endfunction // new function void build_phase(uvm_phase phase); comp1=my_comp1::type_id::create("my_comp1",this); comp2=my_comp2::type_id::create("my_comp2",this); comp3=my_comp3::type_id::create("my_comp3",this); endfunction // build_phase function void connect_phase (uvm_phase phase); comp1.my_port.connect(comp3.my_comparator.after_export); comp2.my_port1.connect(comp3.my_comparator.before_export); endfunction // connect_phase task run_phase(uvm_phase phase); phase.raise_objection(this); phase.drop_objection(this); endtask // run_phase endclass // test module top ; initial run_test("test"); endmodule Quote
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.