6 `uvm_object_utils(cl_syoscb_compare_io_2hp)
14 function new(string name = "cl_syoscb_compare_io_2hp");
21 extern
protected virtual function void
compare_do();
33 if(this.secondary_queues.size() != 1) begin
34 `uvm_fatal("QUEUE_ERROR", $sformatf("[%s]: cmp-io-2hp: This in order compare only works with a single secondary queue. %0d secondary queues defined", this.cfg.get_scb_name(), this.secondary_queues.size()));
45 `uvm_info("DEBUG", $sformatf("[%s]: cmp-io-2hp: number of queues: %0d", this.cfg.get_scb_name(), this.secondary_queues.size()+1), UVM_FULL);
46 `uvm_info("DEBUG", $sformatf("[%s]: cmp-io-2hp: primary queue: %s", this.cfg.get_scb_name(), this.primary_queue_name), UVM_FULL);
51 `uvm_info("DEBUG", $sformatf("[%s]: cmp-io-2hp: Now comparing primary transaction:\n%s",
52 this.cfg.get_scb_name(),
53 cl_syoscb_string_library::sprint_item(primary_item, this.cfg)),
63 uvm_comparer comparer;
69 if(iter == null) begin
73 sec_proxy = iter.next();
76 comparer = this.
cfg.get_comparer(this.primary_queue_name, this.primary_item.get_producer());
77 if(comparer == null) begin
78 comparer = this.
cfg.get_default_comparer();
81 if(secondary_item.compare(primary_item, comparer) == 1'b1) begin
82 `uvm_info("DEBUG", $sformatf("[%s]: cmp-io-2hp: Secondary item found:\n%s",
83 this.cfg.get_scb_name(),
84 cl_syoscb_string_library::sprint_item(secondary_item, this.cfg)),
91 miscmp_table = this.
generate_miscmp_table(primary_item, secondary_item, this.secondary_queue_names[0], comparer, "cmp-io-2hp");
92 `uvm_error("COMPARE_ERROR", $sformatf("\n%0s", miscmp_table))
cl_syoscb_queue_iterator_base primary_queue_iter
Iterator into primary queue.
The UVM scoreboard item which wraps uvm_sequence_item .
cl_syoscb_queue_base secondary_queues[]
Handles to secondary queues.
cl_syoscb_item primary_item
Scoreboard wrapper item from the primary queue.
Base class for all proxy items.
virtual void compare_do()
Compare Strategy API: Mandatory overwriting of the base class' do_compare method. ...
virtual bit delete()
Compare Strategy API: Deletes matched items from the primary and all secondary queues if a match was ...
Implementation of the 2-queue, high speed in-order comparison algorithm.
cl_syoscb_proxy_item_base secondary_item_found[string]
Associative array used to indicate if a matching item was found in a secondary queue.
string secondary_queue_names[]
Names of secondary queues.
cl_syoscb_proxy_item_base primary_item_proxy
Proxy item for the item being searched for in all secondary queue.
Queue iterator base class defining the iterator API used for iterating over queues.
cl_syoscb_queue_base primary_queue
Handle to primary queue.
virtual string generate_miscmp_table(cl_syoscb_item primary_item, cl_syoscb_item secondary_item, string sec_queue_name, uvm_comparer comparer, string cmp_name)
Generates a side-by-side comparison of the seq.
virtual void primary_loop_do()
Compare Strategy API: Selects the primary queue's first element, comparing it to the secondary queue'...
Class which represents the base concept of a queue.
cl_syoscb_cfg cfg
Handle to the configuration object.
virtual void primary_loop_init()
Compare Strategy API: Contains all the operations to be executed immediately before starting the prim...
cl_syoscb_queue_base secondary_queue
Handle to the secondary queue.
Implementation of the in-order comparison algorithm for N queues.