Uvm Syoscb-1.0.2.4

Download as pdf or txt
Download as pdf or txt
You are on page 1of 57

SyoSil ApS UVM S

oreboard
1.0.2.4

Generated by Doxygen 1.6.1

Mon O t 26 03:49:53 2015


Contents
1 Main Page 1

2 Getting started 3

3 How to integrate the UVM s oreboard 5


3.1 Compiling the UVM s oreboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 A essing the UVM s oreboard from your own ode . . . . . . . . . . . . . . . . . 6
3.3 Instantiating the UVM s oreboard . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4 Conguring the UVM s oreboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.5 Fun tion based API hook up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.6 TLM based API hook up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.7 Fa tory overwrites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4 Implementation notes 11
4.1 Implementation APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 General error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 Error ategories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4 Multiple queue referen es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5 Dire tory Hierar hy 13


5.1 Dire tories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6 Class Index 15
6.1 Class Hierar hy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

7 Class Index 17
7.1 Class List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

8 Dire tory Do umentation 19


8.1 /home/ja ob/work/uvm_s oreboard/sr / Dire tory Referen e . . . . . . . . . . . 19
ii CONTENTS

9 Class Do umentation 21
9.1 l_syos b Class Referen e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
9.1.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
9.1.2 Member Fun tion Do umentation . . . . . . . . . . . . . . . . . . . . . . . 22
9.1.2.1 add_item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
9.1.2.2 build_phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
9.1.2.3 get_subs riber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
9.2 l_syos b_ fg Class Referen e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
9.2.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
9.2.2 Member Fun tion Do umentation . . . . . . . . . . . . . . . . . . . . . . . 24
9.2.2.1 get_max_queue_size . . . . . . . . . . . . . . . . . . . . . . . . . 24
9.2.2.2 get_primary_queue . . . . . . . . . . . . . . . . . . . . . . . . . . 24
9.2.2.3 set_max_queue_size . . . . . . . . . . . . . . . . . . . . . . . . . 24
9.2.2.4 set_primary_queue . . . . . . . . . . . . . . . . . . . . . . . . . . 25
9.2.2.5 set_queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
9.3 pk_syos b:: l_syos b_ fg Class Referen e . . . . . . . . . . . . . . . . . . . . . . . 26
9.3.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.3.2 Member Fun tion Do umentation . . . . . . . . . . . . . . . . . . . . . . . 27
9.3.2.1 get_max_queue_size . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.3.2.2 get_primary_queue . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.3.2.3 set_max_queue_size . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.3.2.4 set_primary_queue . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.3.2.5 set_queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
9.4 l_syos b_ ompare Class Referen e . . . . . . . . . . . . . . . . . . . . . . . . . . 29
9.4.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
9.5 l_syos b_ ompare_base Class Referen e . . . . . . . . . . . . . . . . . . . . . . . 30
9.5.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
9.5.2 Member Fun tion Do umentation . . . . . . . . . . . . . . . . . . . . . . . 31
9.5.2.1 ompare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
9.5.2.2 ompare_do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
9.6 l_syos b_ ompare_io Class Referen e . . . . . . . . . . . . . . . . . . . . . . . . 32
9.6.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
9.6.2 Member Fun tion Do umentation . . . . . . . . . . . . . . . . . . . . . . . 33
9.6.2.1 ompare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
9.6.2.2 ompare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
9.6.2.3 ompare_do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
CONTENTS iii

9.6.2.4 ompare_do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
9.7 pk_syos b:: l_syos b_item Class Referen e . . . . . . . . . . . . . . . . . . . . . . 34
9.7.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
9.8 l_syos b_item Class Referen e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
9.8.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
9.9 l_syos b_queue Class Referen e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
9.9.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
9.9.2 Member Fun tion Do umentation . . . . . . . . . . . . . . . . . . . . . . . 37
9.9.2.1 add_item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
9.9.2.2 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
9.9.2.3 insert_item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
9.10 l_syos b_queue_iterator_base Class Referen e . . . . . . . . . . . . . . . . . . . 39
9.10.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.10.2 Member Fun tion Do umentation . . . . . . . . . . . . . . . . . . . . . . . 40
9.10.2.1 rst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.10.2.2 is_done . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.10.2.3 last . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9.10.2.4 previous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
9.11 pk_syos b:: l_syos b_queue_iterator_base Class Referen e . . . . . . . . . . . . 42
9.11.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
9.12 l_syos b_queue_iterator_std Class Referen e . . . . . . . . . . . . . . . . . . . . 43
9.12.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.12.2 Member Fun tion Do umentation . . . . . . . . . . . . . . . . . . . . . . . 44
9.12.2.1 rst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.12.2.2 is_done . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.12.2.3 last . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
9.12.2.4 last . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
9.12.2.5 previous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
9.13 l_syos b_queue_std Class Referen e . . . . . . . . . . . . . . . . . . . . . . . . . 46
9.13.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.13.2 Member Fun tion Do umentation . . . . . . . . . . . . . . . . . . . . . . . 47
9.13.2.1 add_item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.13.2.2 empty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.13.2.3 insert_item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
9.14 l_syos b_subs riber Class Referen e . . . . . . . . . . . . . . . . . . . . . . . . . 49
9.14.1 Detailed Des ription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Chapter 1

Main Page
User and implementation do umentation for the UVM s oreboard This do umentation provides
the following additional do umentation, besides the normal sour e ode do umentation:

1. Getting started: Getting started (p. 3)


2. How to integrate the UVM s oreboard: How to integrate the UVM s oreboard (p. 5)
3. Implementation notes: Implementation notes (p. 11)

It is assumed that the reader is familiar with the UVM s oreboard ar hite ture des ribed in the
SyoSil paper on the subje t: Versatile UVM S oreboarding lo ated in in the do s dire tory.
2 Main Page

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Chapter 2

Getting started
4 Getting started

This software pa kage also provides some simple examples beside the sour e ode for the UVM
s oreboard.
Before starting to integrate the UVM s oreboard into your own ode then it might be bene ial
to look at the provided examples. An example testben h is pla ed in the tb dire tory and the
tests are in the tb/test dire tory.
To run the examples you need to sele t a Vendor sin e the examples an be run with all of the
three major SystemVerilog simulator vendors: Mentor Graphi s, Caden e and Synopsys. See
README.txt for a des ription of how to sele t the vendor.
On e the vendor has been sele ted then the available Make targets for that vendor an be listed
by typing: "make". Typi ally, you run the simulation with: make sim.
In general you an type: make help to get information about what Make options are available.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Chapter 3

How to integrate the UVM


s oreboard
6 How to integrate the UVM s oreboard

The UVM s oreboard is easily integrated into your existing testben h environment.

3.1 Compiling the UVM s oreboard


To get the UVM s oreboard ompiled you need to add sr /pk_syos b.sv (p. ??) to your list of
les that are omplied when ompiling your testben h. How this is done is highly dependent on
the veri ation environment sin e some environments ompile everything into dierent libraries
and some do not et .

3.2 A essing the UVM s oreboard from your own ode


On e the UVM s oreboard is ompiled with the veri ation environment then it is a essible either
by expli it s oping:

lass my lass;
pk_syos b:: l_syos b my_new_s b;
...

or by importing the omplete pa kage into your s ope:

import pk_syos b::*;

lass my lass;
l_syos b my_new_s b;
...

3.3 Instantiating the UVM s oreboard


The UVM s oreboard itself needs to be instantiated along with the onguration obje t. The
simplest way to to this is to add the UVM s oreboard and the onguration obje t to the UVM
environment - note that the onguration obje t is passed to the s oreboard via the ong_db:

import pk_syos b::*;

lass l_s btest_env extends uvm_env;

l_syos b syos b;
l_syos b_ fg syos b_ fg;

`uvm_ omponent_utils_begin( l_s btest_env)


`uvm_field_obje t(syos b, UVM_ALL_ON)
`uvm_field_obje t(syos b_ fg, UVM_ALL_ON)
`uvm_ omponent_utils_end

...

end lass: l_s btest_env

fun tion void l_s btest_env::build_phase(uvm_phase phase);


super.build_phase(phase);

// Create the s oreboard onfiguration obje t


this.syos b_ fg = l_syos b_ fg::type_id:: reate("syos b_ fg");

// Pass the s oreboard onfiguration obje t to the onfig_db

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
3.4 Conguring the UVM s oreboard 7

uvm_ onfig_db #( l_syos b_ fg)::set(this, "syos b", " fg", this.syos b_ fg);

// Create the s oreboard


this.syos b = l_syos b::type_id:: reate("syos b", this);

...

endfun tion: build_phase

3.4 Conguring the UVM s oreboard


The UVM s oreboard onguration obje t needs to be ongured after it has been reated. The
following example shows how two queues Q1 and Q2 wit Q1 as the primary queue. Furthermore,
one produ er P1 is added to both queues:

fun tion void l_s btest_env::build_phase(uvm_phase phase);


super.build_phase(phase);

// Create the s oreboard onfiguration obje t


this.syos b_ fg = l_syos b_ fg::type_id:: reate("syos b_ fg");

// Configure the s oreboard


this.syos b_ fg.set_queues({"Q1", "Q2"});
void'(this.syos b_ fg.set_primary_queue("Q1"));
void'(this.syos b_ fg.set_produ er("P1", {"Q1", "Q2"}));

// Pass the s oreboard onfiguration obje t to the onfig_db


uvm_ onfig_db #( l_syos b_ fg)::set(this, "syos b", " fg", this.syos b_ fg);

// Create the s oreboard


this.syos b = l_syos b::type_id:: reate("syos b", this);

...

endfun tion: build_phase

3.5 Fun tion based API hook up


The fun tion based API is very easy to use on e you have done the onguration and instantiation
of the s oreboard as des ribe above.
Whenever you need to add an UVM sequen e item to a queue produ ed by a spe ied produ er
then you simply invoke the l_syos b::add_item() (p. 22) method:

// *NOTE*: Assumes syos b is handle to an instan e of the s oreboard and


// item1 is a handle to a UVM sequen e item

...

// Insert UVM sequen e item for queue: Q1, for produ er: P1
syos b.add_item("Q1", "P1", item1);

Invoking the l_syos b::add_item() (p. 22) method will simply wrap the UVM sequen e item
in a l_syos b_item (p. 35) obje t, add it the orre t queue and nally invoke the ongured
ompare method.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
8 How to integrate the UVM s oreboard

The UVM environment will typi ally ontain a handle to the s oreboard as des ribed above. This
an then be utilized if UVM sequen es needs to be added from a test ase:

lass l_s btest_seq_item extends uvm_sequen e_item;


//-------------------------------------
// Randomizable variables
//-------------------------------------
rand int unsigned int_a;

//-------------------------------------
// UVM Ma ros
//-------------------------------------
`uvm_obje t_utils_begin( l_s btest_seq_item)
`uvm_field_int(int_a, UVM_ALL_ON)
`uvm_obje t_utils_end

//-------------------------------------
// Constru tor
//-------------------------------------
fun tion l_s btest_seq_item::new (string name = " l_s btest_seq_item");
super.new(name);
endfun tion
end lass: l_s btest_seq_item

lass l_s btest_test extends uvm_test;


//-------------------------------------
// Non randomizable variables
//-------------------------------------
l_s btest_env s btest_env;

//-------------------------------------
// UVM Ma ros
//-------------------------------------
`uvm_ omponent_utils( l_s btest_test)

//-------------------------------------
// Constru tor
//-------------------------------------
fun tion new(string name = " l_s btest_test", uvm_ omponent parent = null);
super.new(name, parent);
endfun tion: new

//-------------------------------------
// UVM Phase methods
//-------------------------------------
fun tion void build_phase(uvm_phase phase);
super.build_phase(phase);
s btest_env = l_s btest_env::type_id:: reate("s btest_env", this);
endfun tion: build_phase

task run_phase(uvm_phase phase);


super.run_phase(phase);
begin
l_s btest_seq_item item1;
item1 = l_s btest_seq_item::type_id:: reate("item1");
item1.int_a = 'h3a;
s btest_env.syos b.add_item("Q1", "P1", item1);
end
begin
l_s btest_seq_item item1;
item1 = l_s btest_seq_item::type_id:: reate("item1");
item1.int_a = 'h3a;
s btest_env.syos b.add_item("Q2", "P1", item1);
end
endtask: run_phase
end lass: l_s btest_test

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
3.6 TLM based API hook up 9

3.6 TLM based API hook up


The TLM API is even easier to use than the fun tion based API. The s oreboard provides generi
UVM subs ribers whi h an be onne ted to anything whi h has a UVM analysis port (e.g. a
UVM monitor). Typi ally, the UVM agents inside the UVM environment ontain one or more
monitors with UVM analysis ports whi h should be onne ted to the s oreboard. The following
example has two agents whi h ea h has a monitor. The monitors are onne ted to Q1 and Q2 in
the s oreboard:

import pk_syos b::*;

lass l_s btest_env extends uvm_env;

l_syos b syos b;
l_syos b_ fg syos b_ fg;
myagent agent1;
myagent agent2;

...

fun tion void build_phase(uvm_phase phase);

...

// Configure and reate the s oreboard


// Create and onfigure the agents

...

endfun tion: build_phase

...

fun tion void onne t_phase(uvm_phase phase);


super. onne t_phase(phase);

begin
l_syos b_subs riber subs riber;

// Get the subs riber for Produ er: P1 for queue: Q1 and onne t it
// to the UVM monitor produ ing transa tions for this queue
subs riber = this.syos b.get_subs riber("Q1", "P1");
this.agent1.mon.<analysis port>. onne t(subs riber.analysis_export);

// Get the subs riber for Produ er: P1 for queue: Q2 and onne t it
// to the UVM monitor produ ing transa tions for this queue
subs riber = this.syos b.get_subs riber("Q2", "P1");
this.agent1.mon.<analysis port>. onne t(subs riber.analysis_export);
end
endfun tion: onne t_phase

3.7 Fa tory overwrites


Finally, the wanted queue and ompare algorithm implementation needs to be sele ted. This is
done by fa tory overwrites sin e they an be hanged test et .
NOTE: This MUST be done before reating the s oreboard!
The following queue implementations are available:

1. Standard SV queue ( l_syos b_queue_std (p. 46))

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
10 How to integrate the UVM s oreboard

and the following ompare algorithms are available:

1. Out-of-Order ( l_syos b_ ompare_ooo)


2. In-Order ( l_syos b_ ompare_io (p. 32))
3. In-Order by produ er ( l_syos b_ ompare_iop)

The following example shows how they are ongured:

l_syos b_queue::set_type_override_by_type( l_syos b_queue::get_type(),

l_syos b_queue_std::get_type(),
"*");

fa tory.set_type_override_by_type( l_syos b_ ompare_base::get_type(),


l_syos b_ ompare_ooo::get_type(),
"*");

The full build phase, in luding the fa tory overwrites, of l_s btest_env is shown here for om-
pleteness:

fun tion void l_s btest_env::build_phase(uvm_phase phase);


super.build_phase(phase);

// Use the standard SV queue implementation as s oreboard queue


l_syos b_queue::set_type_override_by_type( l_syos b_queue::get_type(),

l_syos b_queue_std::get_type(),
"*");

// Set the ompare strategy to be OOO


fa tory.set_type_override_by_type( l_syos b_ ompare_base::get_type(),
l_syos b_ ompare_ooo::get_type(),
"*");

// Create the s oreboard onfiguration obje t


this.syos b_ fg = l_syos b_ fg::type_id:: reate("syos b_ fg");

// Configure the s oreboard


this.syos b_ fg.set_queues({"Q1", "Q2"});
void'(this.syos b_ fg.set_primary_queue("Q1"));
void'(this.syos b_ fg.set_produ er("P1", {"Q1", "Q2"}));

// Pass the s oreboard onfiguration obje t to the onfig_db


uvm_ onfig_db #( l_syos b_ fg)::set(this, "syos b", " fg", this.syos b_ fg);

// Create the s oreboard


this.syos b = l_syos b::type_id:: reate("syos b", this);

...

endfun tion: build_phase

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Chapter 4

Implementation notes
12 Implementation notes

4.1 Implementation APIs


The following APIs have been dened for easy extension fo the s oreboard lasses:

1. Conguration API: l_syos b_ fg (p. 23)


2. Item API: l_syos b_item (p. 35)
3. Queue API: l_syos b_queue (p. 36)
4. Compare API: l_syos b_ ompare_base (p. 30)
5. Subs riber API: l_syos b_subs riber (p. 49)
6. Iterator API: l_syos b_queue_iterator_base (p. 39)

4.2 General error handling


In general when a lower level method dete ts an error then two on epts are used. Primarily,
the method will either issue a UVM info with some information about what went wrong or issue
a UVM error/fatal immediately. The rst one will then return 1'b0 to signal that something
went wrong. Thus, it is up to the parent levels to at h the error and onvert them into UVM
errors/fatals et . This method was hosen sin e the parent level typi ally provides more and better
information when things go wrong.

4.3 Error ategories


There are several ERROR ategories. The following table lists them with some explanation:
Error Category Des ription
IMPL_ERROR Implementation error. Something is really
broken
QUEUE_ERROR A queue related error, e.g. the queue ould
not be found
CFG_ERROR Conguration error. Usually, be ause the
onguration obje t is missing
TYPE_ERROR Type error. Typi ally issued when $ ast()
fails
COMPARE_ERROR Compare error. Issued, e.g. when the in
order ompare fails
SUBSCRIBER_ERROR Subs riber error. Issued, e.g. when the all to
l_syos b::get_subs riber() (p. 22) fails

4.4 Multiple queue referen es


Both the top level lass l_syos b (p. 21) and the onguration lass l_syos b_ fg (p. 23)
ontains handles to all queues. The former uses an ordinary array whi h provides a fast way of
looping over the queues and the latter an asso iative whi h makes it easy to nd a queue using
only its name.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Chapter 5

Dire tory Hierar hy


5.1 Dire tories
This dire tory hierar hy is sorted roughly, but not ompletely, alphabeti ally:
sr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
14 Dire tory Hierar hy

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Chapter 6

Class Index
6.1 Class Hierar hy
This inheritan e list is sorted roughly, but not ompletely, alphabeti ally:
l_syos b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
l_syos b_ fg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
pk_syos b:: l_syos b_ fg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
l_syos b_ ompare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
l_syos b_ ompare_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
l_syos b_ ompare_io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
l_syos b_ ompare_io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
pk_syos b:: l_syos b_item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
l_syos b_item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
l_syos b_queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
l_syos b_queue_std . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
l_syos b_queue_std . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
l_syos b_queue_iterator_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
l_syos b_queue_iterator_std . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
l_syos b_queue_iterator_std . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
pk_syos b:: l_syos b_queue_iterator_base . . . . . . . . . . . . . . . . . . . . . . . . 42
l_syos b_subs riber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
16 Class Index

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Chapter 7

Class Index
7.1 Class List
Here are the lasses, stru ts, unions and interfa es with brief des riptions:
l_syos b (Top level lass implementing the root of the SyoSil UVM s oreboard ) . . . 21
l_syos b_ fg (Conguration lass for the SyoSil UVM s oreboard ) . . . . . . . . . . 23
pk_syos b:: l_syos b_ fg (Conguration lass for the SyoSil UVM s oreboard ) . . 26
l_syos b_ ompare (Class whi h a t as the root of the ompare algorithm ) . . . . . 29
l_syos b_ ompare_base (Base lass for all omapre algorithms ) . . . . . . . . . . 30
l_syos b_ ompare_io (Class whi h implements the in order ompare algorithm ) . 32
pk_syos b:: l_syos b_item (The UVM s oreboard item ) . . . . . . . . . . . . . . 34
l_syos b_item (The UVM s oreboard item ) . . . . . . . . . . . . . . . . . . . . . . 35
l_syos b_queue (Class whi h base on et of a queue ) . . . . . . . . . . . . . . . . . 36
l_syos b_queue_iterator_base (Queue iterator base lass dening the iterator
API used for iterating queues ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
pk_syos b:: l_syos b_queue_iterator_base (Queue iterator base lass dening
the iterator API used for iterating queues ) . . . . . . . . . . . . . . . . . . . . 42
l_syos b_queue_iterator_std (Queue iterator lass dening the iterator API used
for iterating std queues ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
l_syos b_queue_std (Standard implementation of a queue ) . . . . . . . . . . . . . 46
l_syos b_subs riber (Generi subs riber for the s oreboard ) . . . . . . . . . . . . 49
18 Class Index

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Chapter 8

Dire tory Do umentation


8.1 /home/ja ob/work/uvm_s oreboard/sr / Dire tory
Referen e

src

Files

ˆ le l_syos b.svh


ˆ le l_syos b_ fg.svh
ˆ le l_syos b_ fg_pl.svh
ˆ le l_syos b_ ompare.svh
ˆ le l_syos b_ ompare_base.svh
ˆ le l_syos b_ ompare_io.svh
ˆ le l_syos b_ ompare_iop.svh
ˆ le l_syos b_ ompare_ooo.svh
ˆ le l_syos b_item.svh
ˆ le l_syos b_queue.svh
ˆ le l_syos b_queue_iterator_base.svh
ˆ le l_syos b_queue_iterator_std.svh
ˆ le l_syos b_queue_std.svh
ˆ le l_syos b_report_ at her.svh
ˆ le l_syos b_subs riber.svh
ˆ le pk_syos b.sv
20 Dire tory Do umentation

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Chapter 9

Class Do umentation
9.1 l_syos b Class Referen e
Top level lass implementing the root of the SyoSil UVM s oreboard. Collaboration diagram for
l_syos b:

cl_syoscb_cfg

cfg queues cfg

cl_syoscb_queue cfg cl_syoscb_compare_base

cfg owner iterators compare_algo

queues cl_syoscb_queue_iterator_base cl_syoscb_compare cl_syoscb_subscriber

compare_strategy subscribers

cl_syoscb

Publi Member Fun tions

ˆ void build_phase (uvm_phase phase)


The build_phase gets the s oreboard onguration and forwards it to the hild omponents ( l_-
syos b_queue ( p. 36) and l_syos b_ ompare ( p. 29)).
ˆ void add_item (string queue_name, string produ er, uvm_sequen e_item item)
Method for adding a uvm_sequen e_item to a given queue for a given produ er.

ˆ void ompare ()
Invokes the ompare strategy.
22 Class Do umentation

ˆ l_syos b_subs riber get_subs riber (string queue_name, string produ er)
Returns a UVM subs riber for a given ombination of queue and produ er The returned UVM
subs riber an then be onne ted to a UVM monitor or similar whi h produ es transa tions whi h
should be s oreboarded.

9.1.1 Detailed Des ription

Top level lass implementing the root of the SyoSil UVM s oreboard.
Denition at line 2 of le l_syos b.svh.

9.1.2 Member Fun tion Do umentation

9.1.2.1 void l_syos b::add_item (string queue_name, string produ er,


uvm_sequen e_item item)
Method for adding a uvm_sequen e_item to a given queue for a given produ er. The method
will he k if the queue and produ er exists before adding it to the queue.
The uvm_sequen e_item will be wrapped by a l_syos b_item (p. 35) along with some META
data Thus, it is the l_syos b_item (p. 35) whi h will be added to the queue and not the
uvm_sequen e_item dire tly.
This ensures that the s oreboard an easily be added to an existing testben h with already dened
sequen e items et .
Denition at line 120 of le l_syos b.svh.

9.1.2.2 void l_syos b::build_phase (uvm_phase phase)


The build_phase gets the s oreboard onguration and forwards it to the hild omponents ( l_-
syos b_queue (p. 36) and l_syos b_ ompare (p. 29)). Additionally, it reates all of the
queues dened in the onguration obje t. Finally, it also reates the ompare strategy via a
fa tory reate all.
Denition at line 56 of le l_syos b.svh.

9.1.2.3 l_syos b_subs riber l_syos b::get_subs riber (string queue_name,


string produ er)
Returns a UVM subs riber for a given ombination of queue and produ er The returned UVM
subs riber an then be onne ted to a UVM monitor or similar whi h produ es transa tions whi h
should be s oreboarded.
Denition at line 170 of le l_syos b.svh.
The do umentation for this lass was generated from the following le:

ˆ l_syos b.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.2 l_syos b_ fg Class Referen e 23

9.2 l_syos b_ fg Class Referen e


Conguration lass for the SyoSil UVM s oreboard. Collaboration diagram for l_syos b_ fg:

cl_syoscb_cfg

cfg queues

cl_syoscb_queue

owner iterators

cl_syoscb_queue_iterator_base

Publi Member Fun tions

ˆ l_syos b_queue get_queue (string queue_name)


Conguration API: Returns a queue handle for the spe i ed queue
ˆ void set_queue (string queue_name, l_syos b_queue queue)
Conguration API: Sets the queue obje t for a given queue
ˆ void get_queues (output string queue_names[ ℄)
Conguration API: Returns all queue names a string list
ˆ void set_queues (string queue_names[ ℄)
Conguration API: Will set the legal queues when provides with a list of queue names.
ˆ bit exist_queue (string queue_name)
Conguration API: Returns 1'b0 if the queue does not exist and 1'b1 if it exists
ˆ int unsigned size_queues ()
Conguration API: Returns the number of queues
ˆ l_syos b_ fg_pl get_produ er (string produ er)
Conguration API: Gets the given produ er obje t for a spe ied produ er
ˆ bit set_produ er (string produ er, queue_names[ ℄)
Conguration API: Sets the given produ er for the listed queues
ˆ bit exist_produ er (string produ er)
Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
24 Class Do umentation

Conguration API: Che ks if a given produ er exists


ˆ void get_produ ers (output string produ ers[ ℄)
Conguration API: Returns all produ ers as string list
ˆ string get_primary_queue ()
Conguration API: Gets the primary queue.
ˆ bit set_primary_queue (string primary_queue_name)
Conguration API: Sets the primary queue.
ˆ void set_disable_ lone (bit d )
Conguration API: Set the value of the disable_ lone member variable
ˆ bit get_disable_ lone ()
Conguration API: Get the value of the disable_ lone member variable
ˆ void set_max_queue_size (string queue_name, int unsigned mqs)
Conguration API: Set the maximum number of items allowed for a given queue.
ˆ int unsigned get_max_queue_size (string queue_name)
Conguration API: Returns the maximum number of allowed items for a given queue.

9.2.1 Detailed Des ription

Conguration lass for the SyoSil UVM s oreboard.


Denition at line 2 of le l_syos b_ fg.svh.

9.2.2 Member Fun tion Do umentation

9.2.2.1 int unsigned l_syos b_ fg::get_max_queue_size (string queue_name)


Conguration API: Returns the maximum number of allowed items for a given queue. 0 (no
limit) is default
Denition at line 222 of le l_syos b_ fg.svh.

9.2.2.2 string l_syos b_ fg::get_primary_queue ()


Conguration API: Gets the primary queue. The primary queue is used by the ompare
algorithms to sele t whi h queue to use as the primary one.
Denition at line 180 of le l_syos b_ fg.svh.

9.2.2.3 void l_syos b_ fg::set_max_queue_size (string queue_name, int


unsigned mqs)
Conguration API: Set the maximum number of items allowed for a given queue. 0 (no limit)
is default

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.2 l_syos b_ fg Class Referen e 25

Denition at line 212 of le l_syos b_ fg.svh.

9.2.2.4 bit l_syos b_ fg::set_primary_queue (string primary_queue_name)


Conguration API: Sets the primary queue. The primary queue is used by the ompare algo-
rithms to sele t whi h queue to use as the primary one.
Denition at line 186 of le l_syos b_ fg.svh.

9.2.2.5 void l_syos b_ fg::set_queues (string queue_names[ ℄)


Conguration API: Will set the legal queues when provides with a list of queue names. An
example ould be: set_queues({"Q1", "Q2"}) Will set the max_queue_size for ea h queue to 0
(no limit) as default
Denition at line 99 of le l_syos b_ fg.svh.
The do umentation for this lass was generated from the following le:

ˆ l_syos b_ fg.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
26 Class Do umentation

9.3 pk_syos b:: l_syos b_ fg Class Referen e


Conguration lass for the SyoSil UVM s oreboard. Collaboration diagram for pk_syos b:: l_-
syos b_ fg:

cl_syoscb_queue

queues queues cfg owner iterators

pk_syoscb::cl_syoscb_cfg cl_syoscb_cfg cl_syoscb_queue_iterator_base

Publi Member Fun tions

ˆ l_syos b_queue get_queue (string queue_name)


Conguration API: Returns a queue handle for the spe i ed queue
ˆ void set_queue (string queue_name, l_syos b_queue queue)
Conguration API: Sets the queue obje t for a given queue
ˆ void get_queues (output string queue_names[ ℄)
Conguration API: Returns all queue names a string list
ˆ void set_queues (string queue_names[ ℄)
Conguration API: Will set the legal queues when provides with a list of queue names.
ˆ bit exist_queue (string queue_name)
Conguration API: Returns 1'b0 if the queue does not exist and 1'b1 if it exists
ˆ int unsigned size_queues ()
Conguration API: Returns the number of queues
ˆ l_syos b_ fg_pl get_produ er (string produ er)
Conguration API: Gets the given produ er obje t for a spe ied produ er
ˆ bit set_produ er (string produ er, queue_names[ ℄)
Conguration API: Sets the given produ er for the listed queues
ˆ bit exist_produ er (string produ er)
Conguration API: Che ks if a given produ er exists
ˆ void get_produ ers (output string produ ers[ ℄)
Conguration API: Returns all produ ers as string list
ˆ string get_primary_queue ()
Conguration API: Gets the primary queue.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.3 pk_syos b:: l_syos b_ fg Class Referen e 27

ˆ bit set_primary_queue (string primary_queue_name)


Conguration API: Sets the primary queue.
ˆ void set_disable_ lone (bit d )
Conguration API: Set the value of the disable_ lone member variable
ˆ bit get_disable_ lone ()
Conguration API: Get the value of the disable_ lone member variable
ˆ void set_max_queue_size (string queue_name, int unsigned mqs)
Conguration API: Set the maximum number of items allowed for a given queue.
ˆ int unsigned get_max_queue_size (string queue_name)
Conguration API: Returns the maximum number of allowed items for a given queue.

9.3.1 Detailed Des ription

Conguration lass for the SyoSil UVM s oreboard.


Denition at line 420 of le pk_syos b.sv.

9.3.2 Member Fun tion Do umentation

9.3.2.1 int unsigned l_syos b_ fg::get_max_queue_size (string queue_name)


Conguration API: Returns the maximum number of allowed items for a given queue. 0 (no
limit) is default
Denition at line 640 of le pk_syos b.sv.

9.3.2.2 string l_syos b_ fg::get_primary_queue ()


Conguration API: Gets the primary queue. The primary queue is used by the ompare
algorithms to sele t whi h queue to use as the primary one.
Denition at line 598 of le pk_syos b.sv.

9.3.2.3 void l_syos b_ fg::set_max_queue_size (string queue_name, int


unsigned mqs)
Conguration API: Set the maximum number of items allowed for a given queue. 0 (no limit)
is default
Denition at line 630 of le pk_syos b.sv.

9.3.2.4 bit l_syos b_ fg::set_primary_queue (string primary_queue_name)


Conguration API: Sets the primary queue. The primary queue is used by the ompare algo-
rithms to sele t whi h queue to use as the primary one.
Denition at line 604 of le pk_syos b.sv.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
28 Class Do umentation

9.3.2.5 void l_syos b_ fg::set_queues (string queue_names[ ℄)


Conguration API: Will set the legal queues when provides with a list of queue names. An
example ould be: set_queues({"Q1", "Q2"}) Will set the max_queue_size for ea h queue to 0
(no limit) as default
Denition at line 517 of le pk_syos b.sv.
The do umentation for this lass was generated from the following le:

ˆ pk_syos b.sv

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.4 l_syos b_ ompare Class Referen e 29

9.4 l_syos b_ ompare Class Referen e


Class whi h a t as the root of the ompare algorithm. Collaboration diagram for l_syos b_-
ompare:

cl_syoscb_cfg

cfg cfg queues

cfg cl_syoscb_compare_base cl_syoscb_queue

compare_algo owner iterators

cl_syoscb_compare cl_syoscb_queue_iterator_base

Publi Member Fun tions

ˆ void build_phase (uvm_phase phase)


Gets the global s oreboard onguration and reates the ompare algorithm, e.g. out-of-order.

ˆ void ompare ()
Invokes the ompare algorithms ompare method.

9.4.1 Detailed Des ription

Class whi h a t as the root of the ompare algorithm. It instantiates the hosen ompare algorithm.
Denition at line 3 of le l_syos b_ ompare.svh.
The do umentation for this lass was generated from the following le:

ˆ l_syos b_ ompare.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
30 Class Do umentation

9.5 l_syos b_ ompare_base Class Referen e


Base lass for all omapre algorithms. Inheritan e diagram for l_syos b_ ompare_base:

cl_syoscb_compare_base

cl_syoscb_compare_io

Collaboration diagram for l_syos b_ ompare_base:

cl_syoscb_cfg

cfg cfg queues

cl_syoscb_compare_base cl_syoscb_queue

owner iterators

cl_syoscb_queue_iterator_base

Publi Member Fun tions

ˆ virtual void ompare ()


Compare API: This method is the ompare algorithms publi ompare method.
ˆ virtual void ompare_do ()
Compare API: Does the a tual ompare.
ˆ void set_ fg ( l_syos b_ fg fg)
Compare API: Passes the onguration obje t on to the ompare algorithm for faster a ess.
ˆ l_syos b_ fg get_ fg ()
Compare API: Returns the onguration obje t
ˆ string get_primary_queue_name ()
Compare API: Gets the primary queue. Convinien e method.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.5 l_syos b_ ompare_base Class Referen e 31

Prote ted Attributes

ˆ l_syos b_ fg fg
Handle to the onguration.

9.5.1 Detailed Des ription

Base lass for all omapre algorithms.


Denition at line 2 of le l_syos b_ ompare_base.svh.

9.5.2 Member Fun tion Do umentation

9.5.2.1 void l_syos b_ ompare_base:: ompare () [virtual℄


Compare API: This method is the ompare algorithms publi ompare method. It is alled
when the ompare algorithm is asked to do a ompare. Typi ally, this method is used to he k
state variables et . to ompte if the ompare shall be done or not. If so then do_ ompare() is
alled.
NOTE: This method must be implemted.
Reimplemented in l_syos b_ ompare_io (p. 33), and l_syos b_ ompare_io (p. 33).
Denition at line 39 of le l_syos b_ ompare_base.svh.

9.5.2.2 void l_syos b_ ompare_base:: ompare_do () [virtual℄


Compare API: Does the a tual ompare. NOTE: This method must be implemted.
Reimplemented in l_syos b_ ompare_io (p. 33), and l_syos b_ ompare_io (p. 33).
Denition at line 45 of le l_syos b_ ompare_base.svh.
The do umentation for this lass was generated from the following le:

ˆ l_syos b_ ompare_base.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
32 Class Do umentation

9.6 l_syos b_ ompare_io Class Referen e


Class whi h implements the in order ompare algorithm. Inheritan e diagram for l_syos b_-
ompare_io:

cl_syoscb_compare_base

cl_syoscb_compare_io

Collaboration diagram for l_syos b_ ompare_io:

cl_syoscb_cfg

cfg cfg queues

cl_syoscb_compare_base cl_syoscb_queue

owner iterators

cl_syoscb_compare_io cl_syoscb_queue_iterator_base

Publi Member Fun tions

ompare ()
ˆ virtual void
Compare API: Mandatory overwriting of the base lass' ompare method.

ˆ void ompare_do ()
Compare API: Mandatory overwriting of the base lass' do_ ompare method.

ompare ()
ˆ virtual void
Compare API: This method is the ompare algorithms publi ompare method.

ˆ void ompare_do ()
Compare API: Does the a tual ompare.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.6 l_syos b_ ompare_io Class Referen e 33

9.6.1 Detailed Des ription

Class whi h implements the in order ompare algorithm.


Denition at line 2 of le l_syos b_ ompare_io.svh.

9.6.2 Member Fun tion Do umentation

9.6.2.1 virtual void l_syos b_ ompare_io:: ompare () [virtual℄


Compare API: This method is the ompare algorithms publi ompare method. It is alled
when the ompare algorithm is asked to do a ompare. Typi ally, this method is used to he k
state variables et . to ompte if the ompare shall be done or not. If so then do_ ompare() is
alled.
NOTE: This method must be implemted.
Reimplemented from l_syos b_ ompare_base (p. 31).

9.6.2.2 void l_syos b_ ompare_io:: ompare () [virtual℄


Compare API: Mandatory overwriting of the base lass' ompare method. Currently, this just
alls do_ opy() blindly
Reimplemented from l_syos b_ ompare_base (p. 31).
Denition at line 26 of le l_syos b_ ompare_io.svh.

9.6.2.3 void l_syos b_ ompare_io:: ompare_do () [virtual℄


Compare API: Does the a tual ompare. NOTE: This method must be implemted.
Reimplemented from l_syos b_ ompare_base (p. 31).

9.6.2.4 void l_syos b_ ompare_io:: ompare_do () [virtual℄


Compare API: Mandatory overwriting of the base lass' do_ ompare method. Here the a tual
in order ompare is implemented.
The algorithm gets the primary queue and then loops over all other queues to see if it an nd
primary item as the rst item in all of the other queues. If so then the items are removed from
all queues. If not then a UVM error is issued.
Reimplemented from l_syos b_ ompare_base (p. 31).
Denition at line 38 of le l_syos b_ ompare_io.svh.
The do umentation for this lass was generated from the following le:

ˆ l_syos b_ ompare_io.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
34 Class Do umentation

9.7 pk_syos b:: l_syos b_item Class Referen e


The UVM s oreboard item.

Publi Member Fun tions

ˆ UVM_DEFAULT uvm_eld_obje t(item, UVM_DEFAULT) publi string get_-


produ er ()
Item API: Returns the produ er
ˆ void set_produ er (string produ er)
Item API: Sets the produ er
ˆ uvm_sequen e_item get_item ()
Item API: Returns the wrapped uvm_sequen e_item
ˆ void set_item (uvm_sequen e_item item)
Item API: Sets the to be wrapped uvm_sequen e_item

9.7.1 Detailed Des ription

The UVM s oreboard item. This item wraps the uvm_sequen e_items. This ensures that future
extensions to the UVM s oreboard will always be able to use all uvm_sqeuen e_items from
already existing testben hes et . even though more META data is added to the wrapping item.
Denition at line 651 of le pk_syos b.sv.
The do umentation for this lass was generated from the following le:

ˆ pk_syos b.sv

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.8 l_syos b_item Class Referen e 35

9.8 l_syos b_item Class Referen e


The UVM s oreboard item.

Publi Member Fun tions

ˆ UVM_DEFAULT uvm_eld_obje t(item, UVM_DEFAULT) publi string get_-


produ er ()
Item API: Returns the produ er
ˆ void set_produ er (string produ er)
Item API: Sets the produ er
ˆ uvm_sequen e_item get_item ()
Item API: Returns the wrapped uvm_sequen e_item
ˆ void set_item (uvm_sequen e_item item)
Item API: Sets the to be wrapped uvm_sequen e_item

9.8.1 Detailed Des ription

The UVM s oreboard item. This item wraps the uvm_sequen e_items. This ensures that future
extensions to the UVM s oreboard will always be able to use all uvm_sqeuen e_items from
already existing testben hes et . even though more META data is added to the wrapping item.
Denition at line 4 of le l_syos b_item.svh.
The do umentation for this lass was generated from the following le:

ˆ l_syos b_item.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
36 Class Do umentation

9.9 l_syos b_queue Class Referen e


Class whi h base on et of a queue. Inheritan e diagram for l_syos b_queue:

cl_syoscb_queue

cl_syoscb_queue_std

Collaboration diagram for l_syos b_queue:

cl_syoscb_queue

queues cfg owner iterators

cl_syoscb_cfg cl_syoscb_queue_iterator_base

Publi Member Fun tions

ˆ void build_phase (uvm_phase phase)


Gets the global s oreboard onguration.

ˆ void he k_phase (uvm_phase phase)


Che ks if the queue is empty. If not then a UVM error is issued.

add_item (string produ er, uvm_sequen e_item item)


ˆ virtual bit
Queue API: Adds an uvm_sequen e_item.
delete_item (int unsigned idx)
ˆ virtual bit
Queue API: Deletes the item at index idx from the queue
l_syos b_item get_item (int unsigned idx)
ˆ virtual
Queue API: Gets the item at index idx from the queue
ˆ virtual int unsigned get_size ()
Queue API: Returns the urrent size of the queue
empty ()
ˆ virtual bit
Queue API: Returns whether or not the queue is empty.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.9 l_syos b_queue Class Referen e 37

insert_item (string produ er, uvm_sequen e_item item, int unsigned idx)
ˆ virtual bit
Queue API: Inserts a uvm_sequen e_item at index idx.
ˆ virtual l_syos b_queue_iterator_base reate_iterator ()
Queue API: Creates an iterator for this queue.
delete_iterator ( l_syos b_queue_iterator_base iterator)
ˆ virtual bit
Queue API: Deletes a given iterator for this queue.

Prote ted Attributes

ˆ l_syos b_ fg fg
Handle to the onguration.

ˆ l_syos b_queue_iterator_base iterators [ l_syos b_queue_iterator_base℄


List of iterators registered with queue.

ˆ int unsigned iter_idx


Current number of iterators.

ˆ semaphore iter_sem
Semaphore guarding ex lusive a ess to the queue when multiple iterators are in play.

9.9.1 Detailed Des ription

Class whi h base on et of a queue. All queues must extend this lass and implement the queue
API.
Denition at line 3 of le l_syos b_queue.svh.

9.9.2 Member Fun tion Do umentation

9.9.2.1 bit l_syos b_queue::add_item (string produ er, uvm_sequen e_item


item) [virtual℄
Queue API: Adds an uvm_sequen e_item. The implementation must wrap this in a l_-
syos b_item (p. 35) obje t before the item is inserted
Reimplemented in l_syos b_queue_std (p. 46), and l_syos b_queue_std (p. 47).
Denition at line 84 of le l_syos b_queue.svh.

9.9.2.2 bit l_syos b_queue::empty () [virtual℄


Queue API: Returns whether or not the queue is empty. 1'b0 means thet te queue is not empty.
1'b1 means that the queue is empty
Reimplemented in l_syos b_queue_std (p. 46), and l_syos b_queue_std (p. 47).
Denition at line 109 of le l_syos b_queue.svh.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
38 Class Do umentation

9.9.2.3 bit l_syos b_queue::insert_item (string produ er, uvm_sequen e_item


item, int unsigned idx) [virtual℄
Queue API: Inserts a uvm_sequen e_item at index idx. The implementation must wrap the
uvm_sequen e_item in a l_syos b_item (p. 35) before it is inserted.
Reimplemented in l_syos b_queue_std (p. 46), and l_syos b_queue_std (p. 48).
Denition at line 116 of le l_syos b_queue.svh.
The do umentation for this lass was generated from the following le:

ˆ l_syos b_queue.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.10 l_syos b_queue_iterator_base Class Referen e 39

9.10 l_syos b_queue_iterator_base Class Referen e


Queue iterator base lass dening the iterator API used for iterating queues. Inheritan e diagram
for l_syos b_queue_iterator_base:

cl_syoscb_queue_iterator_base

cl_syoscb_queue_iterator_std

Collaboration diagram for l_syos b_queue_iterator_base:

cl_syoscb_queue_iterator_base

iterators owner

cl_syoscb_queue

queues cfg

cl_syoscb_cfg

Publi Member Fun tions

ˆ virtual bitprevious ()
Iterator API: Moves the iterator to the previous item in the queue.
ˆ virtual bitrst ()
Iterator API: Moves the iterator to the rst item in the queue.
ˆ virtual bitlast ()
Iterator API: Moves the iterator to the last item in the queue.
ˆ virtual int unsigned get_idx ()
Iterator API: Returns the urrent index

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
40 Class Do umentation

ˆ virtual l_syos b_item get_item ()


Iterator API: Returns the urrent l_syos b_item ( 35) obje t at the urrent index
p.

ˆ virtual bit is_done ()


Iterator API: Returns 1'b0 as long as the iterator has not rea hed the end.

ˆ prote ted l_syos b_queue get_queue ()


Iterator API: Returns releated queue

ˆ virtual bit set_queue ( l_syos b_queue owner)


Iterator API: Sets releated queue

Prote ted Attributes

ˆ l_syos b_queue owner


The owner of this iterator.

ˆ int unsigned position = 0


Current position in the queue.

9.10.1 Detailed Des ription

Queue iterator base lass dening the iterator API used for iterating queues.
Denition at line 2 of le l_syos b_queue_iterator_base.svh.

9.10.2 Member Fun tion Do umentation

9.10.2.1 bit l_syos b_queue_iterator_base::rst () [virtual℄


Iterator API: Moves the iterator to the rst item in the queue. It shall return 1'b0 if there is
no rst item (Queue is empty).
Reimplemented in l_syos b_queue_iterator_std (p. 43), and l_syos b_queue_-
iterator_std (p. 44).
Denition at line 56 of le l_syos b_queue_iterator_base.svh.

9.10.2.2 bit l_syos b_queue_iterator_base::is_done () [virtual℄


Iterator API: Returns 1'b0 as long as the iterator has not rea hed the end. When the iterator
has rea hed the end then it returns 1'b1.
Reimplemented in l_syos b_queue_iterator_std (p. 44), and l_syos b_queue_-
iterator_std (p. 44).
Denition at line 82 of le l_syos b_queue_iterator_base.svh.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.10 l_syos b_queue_iterator_base Class Referen e 41

9.10.2.3 bit l_syos b_queue_iterator_base::last () [virtual℄


Iterator API: Moves the iterator to the last item in the queue. It shall return 1'b0 if there is no
last item (Queue is empty).
Reimplemented in l_syos b_queue_iterator_std (p. 45), and l_syos b_queue_-
iterator_std (p. 45).
Denition at line 63 of le l_syos b_queue_iterator_base.svh.

9.10.2.4 bit l_syos b_queue_iterator_base::previous () [virtual℄


Iterator API: Moves the iterator to the previous item in the queue. It shall return 1'b0 if there
is no previous item, e.g. when it is either empty or the iterator has rea hed the very beginning of
the queue.
Reimplemented in l_syos b_queue_iterator_std (p. 43), and l_syos b_queue_-
iterator_std (p. 45).
Denition at line 49 of le l_syos b_queue_iterator_base.svh.
The do umentation for this lass was generated from the following le:

ˆ l_syos b_queue_iterator_base.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
42 Class Do umentation

9.11 pk_syos b:: l_syos b_queue_iterator_base Class


Referen e
Queue iterator base lass dening the iterator API used for iterating queues. Collaboration dia-
gram for pk_syos b:: l_syos b_queue_iterator_base:

cl_syoscb_queue

owner queues cfg owner iterators

pk_syoscb::cl_syoscb_queue_iterator_base cl_syoscb_cfg cl_syoscb_queue_iterator_base

Prote ted Attributes

ˆ l_syos b_queue owner


The owner of this iterator.

ˆ int unsigned position = 0


Current position in the queue.

9.11.1 Detailed Des ription

Queue iterator base lass dening the iterator API used for iterating queues.
Denition at line 742 of le pk_syos b.sv.
The do umentation for this lass was generated from the following le:

ˆ pk_syos b.sv

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.12 l_syos b_queue_iterator_std Class Referen e 43

9.12 l_syos b_queue_iterator_std Class Referen e


Queue iterator lass dening the iterator API used for iterating std queues. Inheritan e diagram
for l_syos b_queue_iterator_std:

cl_syoscb_queue_iterator_base

cl_syoscb_queue_iterator_std

Collaboration diagram for l_syos b_queue_iterator_std:

cl_syoscb_queue_iterator_base

iterators owner

cl_syoscb_queue_iterator_std cl_syoscb_queue

queues cfg

cl_syoscb_cfg

Publi Member Fun tions

ˆ virtual bitprevious ()
Iterator API: See l_syos b_queue_iterator_base ( 39) for details
p.

ˆ virtual bitrst ()
Iterator API: See l_syos b_queue_iterator_base ( 39) for details
p.

ˆ virtual bitlast ()
Iterator API: Moves the iterator to the last item in the queue.
get_idx ()
ˆ virtual int unsigned
Iterator API: See l_syos b_queue_iterator_base ( p. 39) for details
ˆ virtual l_syos b_item get_item ()
Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
44 Class Do umentation

Iterator API: See l_syos b_queue_iterator_base ( p. 39) for details


ˆ virtual bitis_done ()
Iterator API: See l_syos b_queue_iterator_base ( 39) for details
p.

ˆ virtual bitset_queue ( l_syos b_queue owner)


Iterator API: See l_syos b_queue_iterator_base ( p. 39) for details
ˆ virtual bitprevious ()
Iterator API: Moves the iterator to the previous item in the queue.
ˆ virtual bitrst ()
Iterator API: Moves the iterator to the rst item in the queue.
ˆ virtual bitlast ()
Iterator API: Moves the iterator to the last item in the queue.
get_idx ()
ˆ virtual int unsigned
Iterator API: Returns the urrent index
ˆ virtual l_syos b_item get_item ()
Iterator API: Returns the urrent l_syos b_item ( 35) obje t at the urrent index
p.

ˆ virtual bitis_done ()
Iterator API: Returns 1'b0 as long as the iterator has not rea hed the end.
ˆ virtual bitset_queue ( l_syos b_queue owner)
Iterator API: Sets releated queue

9.12.1 Detailed Des ription

Queue iterator lass dening the iterator API used for iterating std queues.
Denition at line 2 of le l_syos b_queue_iterator_std.svh.

9.12.2 Member Fun tion Do umentation

9.12.2.1 virtual bit l_syos b_queue_iterator_std::rst () [virtual℄


Iterator API: Moves the iterator to the rst item in the queue. It shall return 1'b0 if there is
no rst item (Queue is empty).
Reimplemented from l_syos b_queue_iterator_base (p. 40).

9.12.2.2 virtual bit l_syos b_queue_iterator_std::is_done () [virtual℄


Iterator API: Returns 1'b0 as long as the iterator has not rea hed the end. When the iterator
has rea hed the end then it returns 1'b1.
Reimplemented from l_syos b_queue_iterator_base (p. 40).

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.12 l_syos b_queue_iterator_std Class Referen e 45

9.12.2.3 virtual bit l_syos b_queue_iterator_std::last () [virtual℄


Iterator API: Moves the iterator to the last item in the queue. It shall return 1'b0 if there is no
last item (Queue is empty).
Reimplemented from l_syos b_queue_iterator_base (p. 41).

9.12.2.4 bit l_syos b_queue_iterator_std::last () [virtual℄


Iterator API: Moves the iterator to the last item in the queue. It shall return 1'b0 if there is no
last item (Queue is empty).
Reimplemented from l_syos b_queue_iterator_base (p. 41).
Denition at line 62 of le l_syos b_queue_iterator_std.svh.

9.12.2.5 virtual bit l_syos b_queue_iterator_std::previous () [virtual℄


Iterator API: Moves the iterator to the previous item in the queue. It shall return 1'b0 if there
is no previous item, e.g. when it is either empty or the iterator has rea hed the very beginning of
the queue.
Reimplemented from l_syos b_queue_iterator_base (p. 41).
The do umentation for this lass was generated from the following le:

ˆ l_syos b_queue_iterator_std.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
46 Class Do umentation

9.13 l_syos b_queue_std Class Referen e


Standard implementation of a queue. Inheritan e diagram for l_syos b_queue_std:

cl_syoscb_queue

cl_syoscb_queue_std

Collaboration diagram for l_syos b_queue_std:

cl_syoscb_queue cl_syoscb_item

queues cfg owner iterators items

cl_syoscb_cfg cl_syoscb_queue_iterator_base cl_syoscb_queue_std

Publi Member Fun tions

add_item (string produ er, uvm_sequen e_item item)


ˆ virtual bit
Queue API: See l_syos b_queue ( 36) for more details
p.

delete_item (int unsigned idx)


ˆ virtual bit
Queue API: See l_syos b_queue ( 36) for more details
p.

l_syos b_item get_item (int unsigned idx)


ˆ virtual
Queue API: See l_syos b_queue ( p. 36) for more details
get_size ()
ˆ virtual int unsigned
Queue API: See l_syos b_queue ( 36) for more details
p.

empty ()
ˆ virtual bit
Queue API: See l_syos b_queue ( 36) for more details
p.

insert_item (string produ er, uvm_sequen e_item item, int unsigned idx)
ˆ virtual bit
Queue API: See l_syos b_queue ( 36) for more details
p.

l_syos b_queue_iterator_base reate_iterator ()


ˆ virtual
Queue API: See l_syos b_queue ( 36) for more details
p.

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.13 l_syos b_queue_std Class Referen e 47

delete_iterator ( l_syos b_queue_iterator_base iterator)


ˆ virtual bit
Queue API: See l_syos b_queue ( 36) for more details
p.

add_item (string produ er, uvm_sequen e_item item)


ˆ virtual bit
Queue API: Adds an uvm_sequen e_item.
delete_item (int unsigned idx)
ˆ virtual bit
Queue API: Deletes the item at index idx from the queue
ˆ virtual l_syos b_item get_item (int unsigned idx)
Queue API: Gets the item at index idx from the queue
ˆ virtual int unsigned get_size ()
Queue API: Returns the urrent size of the queue
empty ()
ˆ virtual bit
Queue API: Returns whether or not the queue is empty.
insert_item (string produ er, uvm_sequen e_item item, int unsigned idx)
ˆ virtual bit
Queue API: Inserts a uvm_sequen e_item at index idx.
ˆ virtual l_syos b_queue_iterator_base reate_iterator ()
Queue API: Creates an iterator for this queue.
delete_iterator ( l_syos b_queue_iterator_base iterator)
ˆ virtual bit
Queue API: Deletes a given iterator for this queue.

9.13.1 Detailed Des ription

Standard implementation of a queue. Uses a normal SystemVerilog queue as implementation. The


lass implements the queue API as dened by the queue base lass.
Denition at line 4 of le l_syos b_queue_std.svh.

9.13.2 Member Fun tion Do umentation

9.13.2.1 virtual bit l_syos b_queue_std::add_item (string produ er,


uvm_sequen e_item item) [virtual℄
Queue API: Adds an uvm_sequen e_item. The implementation must wrap this in a l_-
syos b_item (p. 35) obje t before the item is inserted
Reimplemented from l_syos b_queue (p. 37).

9.13.2.2 virtual bit l_syos b_queue_std::empty () [virtual℄


Queue API: Returns whether or not the queue is empty. 1'b0 means thet te queue is not empty.
1'b1 means that the queue is empty
Reimplemented from l_syos b_queue (p. 37).

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
48 Class Do umentation

9.13.2.3 virtual bit l_syos b_queue_std::insert_item (string produ er,


uvm_sequen e_item item, int unsigned idx) [virtual℄
Queue API: Inserts a uvm_sequen e_item at index idx. The implementation must wrap the
uvm_sequen e_item in a l_syos b_item (p. 35) before it is inserted.
Reimplemented from l_syos b_queue (p. 38).
The do umentation for this lass was generated from the following le:

ˆ l_syos b_queue_std.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
9.14 l_syos b_subs riber Class Referen e 49

9.14 l_syos b_subs riber Class Referen e


Generi subs riber for the s oreboard.

Publi Member Fun tions

ˆ void write (uvm_sequen e_item t)


The write method whi h must be implemented when extending uvm_subs riber.

ˆ stringget_queue_name ()
Subs riber API: Returns the name of the queue whi h this subs riber is onne ted to.
ˆ void set_queue_name (string qn)
Subs riber API: Sets the name of the queue whi h this subs riber is onne ted to.
ˆ stringget_produ er ()
Subs riber API: Returns the name of the produer whi h this subs riber is onne ted to.
ˆ void set_produ er (string p)
Subs riber API: Sets the name of the produ er whi h this subs riber is onne ted to.

9.14.1 Detailed Des ription

Generi subs riber for the s oreboard. It provides the write method for UVM monitors and utilizes
the fun tion based API of the s oreboard to insert the items re eived through the write method.
Denition at line 4 of le l_syos b_subs riber.svh.
The do umentation for this lass was generated from the following le:

ˆ l_syos b_subs riber.svh

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen
Index
/home/ja ob/work/uvm_s oreboard/sr / Di- empty, 47
re tory Referen e, 19 insert_item, 47
l_syos b_subs riber, 49
add_item ompare
l_syos b, 22 l_syos b_ ompare_base, 31
l_syos b_queue, 37 l_syos b_ ompare_io, 33
l_syos b_queue_std, 47 ompare_do
l_syos b_ ompare_base, 31
build_phase l_syos b_ ompare_io, 33
l_syos b, 22
empty
l_syos b, 21 l_syos b_queue, 37
add_item, 22 l_syos b_queue_std, 47
build_phase, 22
get_subs riber, 22 rst
l_syos b_ fg, 23 l_syos b_queue_iterator_base, 40
get_max_queue_size, 24 l_syos b_queue_iterator_std, 44
get_primary_queue, 24
set_max_queue_size, 24 get_max_queue_size
set_primary_queue, 25 l_syos b_ fg, 24
set_queues, 25 pk_syos b:: l_syos b_ fg, 27
l_syos b_ ompare, 29 get_primary_queue
l_syos b_ ompare_base, 30 l_syos b_ fg, 24
ompare, 31 pk_syos b:: l_syos b_ fg, 27
ompare_do, 31 get_subs riber
l_syos b_ ompare_io, 32 l_syos b, 22
ompare, 33
ompare_do, 33 insert_item
l_syos b_item, 35 l_syos b_queue, 37
l_syos b_queue, 36 l_syos b_queue_std, 47
add_item, 37 is_done
empty, 37 l_syos b_queue_iterator_base, 40
insert_item, 37 l_syos b_queue_iterator_std, 44
l_syos b_queue_iterator_base, 39
rst, 40 last
is_done, 40 l_syos b_queue_iterator_base, 40
last, 40 l_syos b_queue_iterator_std, 44, 45
previous, 41
l_syos b_queue_iterator_std, 43 pk_syos b:: l_syos b_ fg, 26
rst, 44 get_max_queue_size, 27
is_done, 44 get_primary_queue, 27
last, 44, 45 set_max_queue_size, 27
previous, 45 set_primary_queue, 27
l_syos b_queue_std, 46 set_queues, 27
add_item, 47 pk_syos b:: l_syos b_item, 34
INDEX 51

pk_syos b:: l_syos b_queue_iterator_base,


42
previous
l_syos b_queue_iterator_base, 41
l_syos b_queue_iterator_std, 45
set_max_queue_size
l_syos b_ fg, 24
pk_syos b:: l_syos b_ fg, 27
set_primary_queue
l_syos b_ fg, 25
pk_syos b:: l_syos b_ fg, 27
set_queues
l_syos b_ fg, 25
pk_syos b:: l_syos b_ fg, 27

Generated on Mon O t 26 03:49:53 2015 for SyoSil ApS UVM S oreboard by Doxygen

You might also like