SyoSil ApS UVM Scoreboard  1.0.3.0
Protected Member Functions | Protected Attributes | List of all members
cl_syoscb_compare_io_2hp Class Reference

Implementation of the 2-queue, high speed in-order comparison algorithm. More...

+ Inheritance diagram for cl_syoscb_compare_io_2hp:
+ Collaboration diagram for cl_syoscb_compare_io_2hp:

Protected Member Functions

virtual void compare_do ()
 Compare Strategy API: Mandatory overwriting of the base class' do_compare method. More...
 
virtual void primary_loop_do ()
 Compare Strategy API: Selects the primary queue's first element, comparing it to the secondary queue's first element. More...
 
virtual void compare_do ()
 Compare Strategy API: Starts the actual comparison operation

  1. Perform initialization on the primary queue, if necessary
  2. Start the primary queue loop

 
virtual void primary_loop_do ()
 Compare Strategy API: Implementation of the in-order comparison algorithm. More...
 
- Protected Member Functions inherited from cl_syoscb_compare_io
virtual void count_producers (string producer="")
 Compare Strategy API: Checks if the producer of the current item exists in all other queues, and whether all other queues have at least 1 item from that producer. More...
 
virtual void secondary_loop_do ()
 Compare Strategy API: Loop through all the secondary queues, checking if the first item in that secondary queues matches the first in the primary queue. More...
 
virtual void count_producers (string producer="")
 Compare Strategy API: Checks if the producer of the current item exists in all other queues, and whether all other queues have at least 1 item from that producer. More...
 
virtual void secondary_loop_do ()
 Compare Strategy API: Loop over all secondary queues to find a match for the primary item. More...
 
- Protected Member Functions inherited from cl_syoscb_compare_base
virtual void init ()
 Compare Strategy API: Executes some preliminary common operations before starting comparisons:

  1. Split queues into primary and secondary
  2. Create iterator for the chosen primary queue

 
virtual void compare_do_greed (t_scb_compare_greed greed)
 Compare Strategy API: Try to remove a match and drain all the potential remaining matches inside the queues according to the greed level given as argument. More...
 
virtual void compare_init ()
 Compare Strategy API: Verifies if the conditions for starting a compare are met:

  1. Verify that all queues currently contain at least one element
  2. Verify that all queues have at least one element from the same producer as the producer returned by get_count_producer() (the primary item being searched for) If the conditions are met then go variable is triggered, and the compare process can start.
More...
 
virtual string get_primary_queue_name ()
 Compare Strategy API: Gets the name of this scoreboard's primary queue. More...
 
virtual void split_queues ()
 Compare Strategy API: Splits the scoreboard's queues into 1 primary queue and N-1 secondary queues. More...
 
virtual void check_queues ()
 Compare Strategy API: Check if any queue is empty. More...
 
virtual void create_primary_iterator ()
 Compare Strategy API: Creates the iterator for the primary queue and sets the pointer to its first element
 
virtual void primary_loop_init ()
 Compare Strategy API: Contains all the operations to be executed immediately before starting the primary loop. More...
 
virtual void static_queue_split_do ()
 Compare Strategy API: Splits queues into primary and secondary when a primary queue has been specified. More...
 
virtual void dynamic_queue_split_do ()
 Compare Strategy API: Splits queues into primary and secondary when a primary queue has not been specified. More...
 
virtual bit delete ()
 Compare Strategy API: Deletes matched items from the primary and all secondary queues if a match was found. More...
 
virtual string get_count_producer ()
 Compare Strategy API: Returns the name of the producer that the compare method should evaluate in order to verify if it makes sense to start a comparison. More...
 
virtual int unsigned get_queues_item_cnt ()
 Compare Strategy API: Gets the total number of items in all the queues at the moment of the function call. More...
 

Protected Attributes

cl_syoscb_queue_base secondary_queue
 Handle to the secondary queue.
 
- Protected Attributes inherited from cl_syoscb_compare_base
cl_syoscb_cfg cfg
 Handle to the configuration object.
 
bit do_split = 0b1
 Indicates how queues should be split into a primary queue and array of secondary queues. More...
 
bit go = 0b1
 Indicates whether a comparison can be started (1) or not (0)
 
bit disable_compare = 0b0
 If set to 1'b1, no comparisons are performed. If 1'b0, comparisons are executed.
 
string primary_queue_name
 Name of primary queue.
 
cl_syoscb_queue_base primary_queue
 Handle to primary queue.
 
string secondary_queue_names []
 Names of secondary queues.
 
cl_syoscb_queue_base secondary_queues []
 Handles to secondary queues.
 
cl_syoscb_proxy_item_base secondary_item_found [string]
 Associative array used to indicate if a matching item was found in a secondary queue. More...
 
cl_syoscb_proxy_item_base primary_item_proxy
 Proxy item for the item being searched for in all secondary queue.
 
cl_syoscb_queue_iterator_base primary_queue_iter
 Iterator into primary queue.
 
string current_queue_name
 Name of the queue currently being searched.
 
cl_syoscb_item current_item
 Handle to the item passed in by cl_syoscb::add_item.
 

Additional Inherited Members

- Public Member Functions inherited from cl_syoscb_compare_base
virtual void compare_control (bit cc)
 Compare API: Toggle comparisons on or off More...
 
virtual void compare_trigger (string queue_name="", cl_syoscb_item item=null)
 Compare API: Starts a comparison by calling compare_main if comparisons are not disabled. More...
 
virtual void compare_main (t_scb_compare_greed greed)
 Compare API: Main function that contains all the actual compare operations requested by the compare algorithm. More...
 
virtual void set_cfg (cl_syoscb_cfg cfg)
 Set the scoreboard configuration associated with this comparer's scoreboard. More...
 
virtual cl_syoscb_cfg get_cfg ()
 Gets the scoreboard configuration object associated with this scoreboard.
 
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. More...
 
virtual void do_copy (uvm_object rhs)
 Custom do_dopy implementation for secondary queues.
 
- Public Attributes inherited from cl_syoscb_compare_io
cl_syoscb_item primary_item
 Scoreboard wrapper item from the primary queue.
 

Detailed Description

Implementation of the 2-queue, high speed in-order comparison algorithm.

Definition at line 2 of file cl_syoscb_compare_io_2hp.svh.

Member Function Documentation

◆ compare_do()

void cl_syoscb_compare_io_2hp::compare_do ( )
protectedvirtual

Compare Strategy API: Mandatory overwriting of the base class' do_compare method.

Here the actual in-order 2-queue compare is implemented.

The algorithm is a specialization of the normal in-order compare which handles N queues. Here, only 2 queues are allowed and the compare simply just checks if the first item in the primary queue matches the first item in the secondary queue. If not then a UVM error is issued.

Reimplemented from cl_syoscb_compare_base.

Definition at line 31 of file cl_syoscb_compare_io_2hp.svh.

References primary_loop_do(), cl_syoscb_compare_base::primary_loop_init(), and cl_syoscb_compare_base::secondary_queues.

◆ primary_loop_do() [1/2]

void cl_syoscb_compare_io_2hp::primary_loop_do ( )
protectedvirtual

◆ primary_loop_do() [2/2]

virtual void cl_syoscb_compare_io_2hp::primary_loop_do ( )
protectedvirtual

Compare Strategy API: Implementation of the in-order comparison algorithm.

In the primary loop, the algorithm extracts the oldest inserted element from the primary queue, and then starts looping over all secondary queues to find a matching item in secondary_loop_do. If matching items are found, these are removed from all of the queues If no matching items are found, a miscompare is generated and a UVM_ERROR is issued.

Reimplemented from cl_syoscb_compare_io.


The documentation for this class was generated from the following files:

Project: SyoSil ApS UVM Scoreboard, Revision: 1.0.3.0

Copyright 2014-2022 SyoSil ApS
All Rights Reserved Worldwide

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
doxygen
Doxygen Version: 1.8.14
Generated with IDV SV Filter Version: 2.6.3
Fri Sep 2 2022 14:41:03
Find a documentation bug? Report bugs to: scoreboard@syosil.com