module ovmb session5 connecting components

Post on 06-Apr-2018

225 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 1/19

academy@mentor.com 

www.verificationacademy.com 

Basic OVMConnecting Components 

John Aynsley CTO, Doulos 

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 2/19

Verification Components

Agent

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 3/19

OVM Class Hierarchy

ovm_env ovm_agent ovm_driver

ovm_monitor

ovm_scoreboard

ovm_test ovm_sequencer

Structureovm_component

ovm_object

ovm_report_object

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 4/19

Component

class my_agent extends ovm_agent;

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 5/19

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 6/19

Component

class my_agent extends ovm_agent;

`ovm_component_utils(my_agent)

my_sequencer my_sequencer_h;

my_driver my_driver_h;

function new(string name, ovm_component parent);

super.new(name, parent);

endfunction: new

function void build;

...

function void connect;

...

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 7/19

Factory Method

function void build;

super.build();

my_sequencer_h =

my_sequencer::type_id::create("my_sequencer_h", this);

my_driver_h =

my_driver ::type_id::create("my_driver_h" , this);

endfunction: build

"Factory methods" can be overridden in tests

Instance name Parent

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 8/19

Connect

function void build;

super.build();

my_sequencer_h =

my_sequencer::type_id::create("my_sequencer_h", this);

my_driver_h =

my_driver ::type_id::create("my_driver_h" , this);

endfunction: build

function void connect;

my_driver_h.seq_item_port.connect(

my_sequencer_h.seq_item_export );

endfunction: connect

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 9/19

Connect

function void build;

super.build();

my_sequencer_h =

my_sequencer::type_id::create("my_sequencer_h", this);

my_driver_h =

my_driver ::type_id::create("my_driver_h" , this);

endfunction: build

function void connect;

my_driver_h.seq_item_port.connect(

my_sequencer_h.seq_item_export );

endfunction: connect

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 10/19

Phase Methods

class my_component extends ovm_component;...

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 11/19

Phase Methods

class my_component extends ovm_component;...

function new(string name, ovm_component parent);

super.new(name, parent);

endfunction: new

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 12/19

Phase Methods

class my_component extends ovm_component;...

function new(string name, ovm_component parent);

super.new(name, parent);

endfunction: new

function void build;

super.build();...

Called top-down

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 13/19

Phase Methods

class my_component extends ovm_component;...

function new(string name, ovm_component parent);

super.new(name, parent);

endfunction: new

function void build;

super.build();...

function void connect;

...

Called bottom-up

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 14/19

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 15/19

Phase Methods

class my_component extends ovm_component;...

function new(string name, ovm_component parent);

super.new(name, parent);

endfunction: new

function void build;

super.build();...

function void connect;

...

function void start_of_simulation;

...

task run;...

The only task

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 16/19

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 17/19

Anatomy of an OVM Component

class my_component extends ovm_component;`ovm_component_utils(my_component)

virtual dut_if dut_if_h;

my_sequencer my_sequencer_h;

my_driver my_driver_h;

function new(string name, ovm_component parent); ...

function void build; ...

function void connect; ...

function void start_of_simulation; ...

task run; ...function check; ...

function report; ...

endclass

Factory registration

External interfaces

Internal component handles

Standard phase methods

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 18/19

Summary

8/2/2019 Module Ovmb Session5 Connecting Components

http://slidepdf.com/reader/full/module-ovmb-session5-connecting-components 19/19

academy@mentor.com 

www.verificationacademy.com 

Basic OVMConnecting Components 

John Aynsley CTO, Doulos 

top related