Ovm Mentograf
-
Upload
balaramkishore-gangireddy -
Category
Documents
-
view
244 -
download
0
Transcript of Ovm Mentograf
-
7/28/2019 Ovm Mentograf
1/24
www.verificationacademy.com
Advanced OVM (& UVM)Understanding the Factory
Tom FitzpatrickVerification Technologist
-
7/28/2019 Ovm Mentograf
2/24
Create() vs. New()
Objects must beconstructed
new() hard-codes thetype
create() returns a
constructed instancefrom the factory
The factory lets youchange the type of thecreated component Without modifying the
instantiating code
comp1
comp2
comp2
-
7/28/2019 Ovm Mentograf
3/24
Registering with the Factory
Objects are registeredwith the factory
via macro
`ovm_object_utils
ovm_component_utils
comp1
No ;
-
7/28/2019 Ovm Mentograf
4/24
Registering with the Factory
Objects are registeredwith the factory
via macro
`ovm_object_utils
ovm_component_utils
Macro createstype_id wrapper
Static methodsin wrapper
create(): returns an instance of the type (no $cast needed) get_type(): returns the type handle
comp1
No ;
Desired type
Wrapper
-
7/28/2019 Ovm Mentograf
5/24
Registering with the Factory
Objects are registeredwith the factory
via macro
`ovm_object_utils
ovm_component_utils
Macro createstype_id wrapper
Static methodsin wrapper
create(): returns an instance of the type (no $cast needed) get_type(): returns the type handle
set_type_override() set_inst_override()
comp1
No ;
Desired type
Wrapper
Factory type overrides
-
7/28/2019 Ovm Mentograf
6/24
Overriding a Type
-
7/28/2019 Ovm Mentograf
7/24
Overriding a Type
New Desired type
All Instances
Overridden
-
7/28/2019 Ovm Mentograf
8/24
Overriding an Instance
New Desired typeInstance Name
Instance Changed
-
7/28/2019 Ovm Mentograf
9/24
Using Parameterized Types
Parameterized type
-
7/28/2019 Ovm Mentograf
10/24
Using Parameterized Types
-
7/28/2019 Ovm Mentograf
11/24
Environments are Components
-
7/28/2019 Ovm Mentograf
12/24
Tests are Components, too!
run_test() creates the test from the factory
modul e t op;. . .
i ni t i albegi n: bl k
. . .run_test( ) ;
end
endmodul e: t op
vsim +OVM_TESTNAME=testCommand line:
Register the testwith the factory
-
7/28/2019 Ovm Mentograf
13/24
Tests are Components, too!
Always call run_test() with null argument
modul e t op;. . .
i ni t i albegi n: bl k
. . .run_test( ) ;
end
endmodul e: t op
vsim +OVM_TESTNAME=test2Command line:
-
7/28/2019 Ovm Mentograf
14/24
Use Factory on Sequence Items
Sequence Items may also be overriddencl ass my_seq extends
ovm_sequence #( my_t r ) ;
t ask body( ) ;my_t r t x;tx = my_tr: : t ype_i d: : create(tx
endt askendcl ass
Register with Factory
-
7/28/2019 Ovm Mentograf
15/24
Use Factory on Sequence Items
Sequence Items may also be overriddencl ass my_seq extends
ovm_sequence #( my_t r ) ;
t ask body( ) ;my_t r t x;tx = my_tr: : t ype_i d: : create( t x, , get _f ul l name( ) ) ;
endt ask
endcl ass
Register with Factory
Empty parent for objects
Allow factory to find this sequence
-
7/28/2019 Ovm Mentograf
16/24
Use Factory on Sequence Items
Sequence Items may also be overriddencl ass my_seq extends
ovm_sequence #( my_t r ) ;
t ask body( ) ;my_t r t x;tx = my_tr: : t ype_i d: : create( t x, , get _f ul l name( ) ) ;st ar t _i t em( tx) ;asser t ( t x. r andomi ze( ) wi t h { cmd == 0; } ) ;f i ni sh_i t em( t x) ;
endt askendcl ass
Register with Factory
-
7/28/2019 Ovm Mentograf
17/24
Use Factory on Sequence Items
Override items by type
cl ass er r _t est ext ends my_t est ;task run();my_tr: : t ype_i d: : set_type_override( err_tr: : get _t ype( ) ) ;
endt ask
endcl ass
-
7/28/2019 Ovm Mentograf
18/24
Use Factory on Sequence Items
Override items by type or instance
cl ass er r _t est ext ends my_t est ;task run();my_tr: : t ype_i d: : set_inst_override( err_tr: : get _t ype( ) ,
e. agent . sqr . s1. t x) ;
endt ask
endcl ass
-
7/28/2019 Ovm Mentograf
19/24
Use Factory on Sequence Items
Override items by type or instance
cl ass er r _t est ext ends my_t est ;task run();my_tr: : t ype_i d: : set_inst_override( err_tr: : get _t ype( ) ,
e. agent . sqr . s1. t x) ;
endt ask
endcl ass
Path to sequencer
-
7/28/2019 Ovm Mentograf
20/24
Use Factory on Sequence Items
Override items by type or instance
cl ass er r _t est ext ends my_t est ;task run();my_tr: : t ype_i d: : set_inst_override( err_tr: : get _t ype( ) ,
e. agent . sqr . s1. t x) ;
endt ask
endcl ass
Path to sequencer
Sequence name
-
7/28/2019 Ovm Mentograf
21/24
Use Factory on Sequence Items
Override items by type or instance
cl ass er r _t est ext ends my_t est ;task run();my_tr: : t ype_i d: : set_inst_override( err_tr: : get _t ype( ) ,
e. agent . sqr . s1. t x) ;
endt ask
endcl ass
Path to sequencer
Sequence name
Item name
-
7/28/2019 Ovm Mentograf
22/24
Use Factory on Sequence Items
Instance overrides let you change the typeof item generated by a particular sequence on a sequencer
a specific item name created by a sequence
cl ass er r _t est ext ends my_t est ;task run();my_tr: : t ype_i d: : set_inst_override( err_tr: : get _t ype( ) ,
e. agent . sqr . s1. t x) ;
endt ask
endcl ass
Path to sequencer
Sequence name
Item name
-
7/28/2019 Ovm Mentograf
23/24
Summary
Use `ovm_object/component_utilsmacro to register with the factory
Always call ::type_id::create()
Register tests with the factory
Call run_test() with null argument Specify which test via the command line
-
7/28/2019 Ovm Mentograf
24/24
www.verificationacademy.com
Advanced OVM (& UVM)Understanding the Factory
Tom FitzpatrickVerification Technologist