Uploaded by Manikanta Katari

uvm practice2

advertisement
uvm factory registration:
1)register:
//component:
`uvm_component_utils(scoreboard)
//object
`uvm_object_utils(sequence_item)
2)create
//component
eg:
class mem_scoreboard extends uvm_scoreboard;
`uvm_component_utils(scoreboard)
sb=mem_scoreboard::type_id::create("sb",this);
function new(string name="mem_scoreboard",uvm_component parent=null);
super.new(name,parent);
endfunction
endclass
//object
class seq_item extends uvm_sequence_item;
`uvm_object_utils_(sequence_item)
si=seq_item::type_id::create("si");
function new(string name="seq_item");
super.new(name);
endfunction
endclass
3)override
four types: a)set_type_override_by_type:
factory.set_type_override_by_type(base_class,derived_class);
b)set_type_override_by_name:
factory.set_type_override_by_name(base_class,derived_class);
c)set_inst_override_by_name:
factory.set_inst_override_by_name(base_class,derived_class,full_path);
d)set_inst_override_by_type:
factory.set_inst_override_by_type(base_class,derived_class,full_path);
--------------------------------------------------------------------------------------
phases syntax:
1)build_phase:
function void build_phase(uvm_phase phase);
super.build_phase(phase);
//config_db get method
//uvm_config_db#(virtual mem_if)::get(null,"*","mem_intf",intf);
endfunction:build_phase
2)connect phase:
function void connect_phase(uvm_phase phase);
//
driver.seq_item_port.connect(sequencer.seq_item_export);//driver and sequencer connection in agent
//mem_agnt.monitor.item_collected_port.connect(scoreboard.item_collected_export);//monitor and scoreboard in env
endfunction:connect_phase
3)run phase:
virtual task run_phase(uvm_phase phase);
forever begin
seq_item_port.get_next_item(req);
drive();
seq_item_port.item_done();
end
endtask:run_phase
-------------------------------------------------------------------
analysis ports:
1)monitor:
uvm_analysis_port#(mem_seq_item)item_collected_port;
2)scoreboard:
unv_analysis_imp#(mem_seq_item,mem_scoreboard)item_collected_export;
------------------------------------------------------------------------
seqence start:in test runphase
seq.start(env.mem_agnt.sequencer);
----------------------------------------------------
run test:in top
intial begin
run_test();
end
Download