module ovmb session5 connecting components

19
[email protected] www.verificationacademy.com Basic OVM Connecting Components John Aynsley CTO, Doulos 

Upload: luan-tran

Post on 06-Apr-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Module Ovmb Session5 Connecting Components

8/2/2019 Module Ovmb Session5 Connecting Components

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

[email protected] 

www.verificationacademy.com 

Basic OVMConnecting Components 

John Aynsley CTO, Doulos 

Page 2: Module Ovmb Session5 Connecting Components

8/2/2019 Module Ovmb Session5 Connecting Components

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

Verification Components

Agent

Page 3: Module Ovmb Session5 Connecting Components

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

Page 4: Module Ovmb Session5 Connecting Components

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;

Page 5: Module Ovmb Session5 Connecting Components

8/2/2019 Module Ovmb Session5 Connecting Components

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

Page 6: Module Ovmb Session5 Connecting Components

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;

...

Page 7: Module Ovmb Session5 Connecting Components

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

Page 8: Module Ovmb Session5 Connecting Components

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

Page 9: Module Ovmb Session5 Connecting Components

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

Page 10: Module Ovmb Session5 Connecting Components

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;...

Page 11: Module Ovmb Session5 Connecting Components

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

Page 12: Module Ovmb Session5 Connecting Components

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

Page 13: Module Ovmb Session5 Connecting Components

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

Page 14: Module Ovmb Session5 Connecting Components

8/2/2019 Module Ovmb Session5 Connecting Components

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

Page 15: Module Ovmb Session5 Connecting Components

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

Page 16: Module Ovmb Session5 Connecting Components

8/2/2019 Module Ovmb Session5 Connecting Components

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

Page 17: Module Ovmb Session5 Connecting Components

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

Page 18: Module Ovmb Session5 Connecting Components

8/2/2019 Module Ovmb Session5 Connecting Components

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

Summary

Page 19: Module Ovmb Session5 Connecting Components

8/2/2019 Module Ovmb Session5 Connecting Components

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

[email protected] 

www.verificationacademy.com 

Basic OVMConnecting Components 

John Aynsley CTO, Doulos