6 `uvm_object_utils(cl_syoscb_compare_ooo)
11 extern function new(string name = "cl_syoscb_compare_ooo");
22 function cl_syoscb_compare_ooo::new(string name = "cl_syoscb_compare_ooo");
40 int unsigned msw = this.
cfg.get_max_search_window(this.primary_queue_name);
43 if(this.primary_queue_iter.first()) begin
44 while(this.primary_queue_iter.has_next() && (msw > 0 ? this.primary_queue_iter.next_index() < msw : 1)) begin
46 `uvm_info("DEBUG", $sformatf("[%s]: cmp-ooo: Now comparing primary transaction:\n%s", this.cfg.get_scb_name(), cl_syoscb_string_library::sprint_item(this.primary_queue.get_item(this.primary_item_proxy), this.cfg)), UVM_FULL);
52 if(this.delete()) begin
65 foreach(this.secondary_queue_names[i]) begin
69 if(this.secondary_queues[i] == null) begin
70 `uvm_fatal("QUEUE_ERROR", $sformatf("[%s]: cmp-ooo: Unable to retrieve secondary queue handle", this.cfg.get_scb_name()));
73 `uvm_info("DEBUG", $sformatf("[%s]: cmp-ooo: %0d items in queue: %s", this.cfg.get_scb_name(), secondary_queues[i].get_size(), this.secondary_queue_names[i]), UVM_FULL);
77 secondary_proxy_item = secondary_queue_loc.search(this.primary_item_proxy);
79 if(secondary_proxy_item == null) begin
94 if(this.primary_queue_iter == null) begin
98 void'(this.primary_queue_iter.first());
102 void'(this.primary_queue_iter.first());
104 return l_item.get_producer();
virtual void primary_loop_do()
Compare Strategy API: Implementation of the out-of-order comparison is here.
cl_syoscb_queue_iterator_base primary_queue_iter
Iterator into primary queue.
The UVM scoreboard item which wraps uvm_sequence_item .
virtual void secondary_loop_do()
Compare Strategy API: Loop through all secondary queues, attempting to find an item which matches the...
cl_syoscb_queue_base secondary_queues[]
Handles to secondary queues.
Class which implements the out of order compare algorithm.
Base class for all proxy items.
Base class for all compare algorithms.
virtual bit delete()
Compare Strategy API: Deletes matched items from the primary and all secondary queues if a match was ...
cl_syoscb_proxy_item_base secondary_item_found[string]
Associative array used to indicate if a matching item was found in a secondary queue.
virtual string get_count_producer()
Compare Strategy API: For OOO comparisons, the overrided function returns the producer of the first e...
Locator base class defining the locator API used for searching in queues.
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.
cl_syoscb_queue_base primary_queue
Handle to primary queue.
cl_syoscb_cfg cfg
Handle to the configuration object.