UVM: objections in sequence with set_automatic_* - EDA Playground
Warning! This exercise has been opened in another tab; autosave has been disabled. Close this tab or refresh to reactivate.

 Languages & Libraries

 Tools & Simulators

 Examples

202


60
 
1
// Code your testbench here
2
// or browse Examples
3
`include "uvm_macros.svh"
4
import uvm_pkg::*;
5
6
`include "seq_item.sv"
7
8
class base_seq extends uvm_sequence #(seq_item);
9
  seq_item req;
10
  uvm_phase phase;
11
  `uvm_object_utils(base_seq)
12
  
13
  function new (string name = "base_seq");
14
    super.new(name);
15
  endfunction
16
17
  task pre_body();
18
    `uvm_info(get_type_name(), "Inside pre_body", UVM_LOW);
19
  endtask
20
  
21
  task body();
22
    `uvm_info(get_type_name(), "Base seq: Body started", UVM_LOW);
23
    req = seq_item::type_id::create("req");
24
    // send to the driver
25
    #20;
26
    `uvm_info(get_type_name(), "Base seq: Body completed", UVM_LOW);
27
  endtask
28
  
29
  task post_body();
30
    `uvm_info(get_type_name(), "Inside post_body", UVM_LOW);
31
  endtask
32
endclass
33
34
class base_test extends uvm_test;
35
  base_seq bseq;
36
37
  `uvm_component_utils(base_test)
38
  
39
  function new(string name = "base_test", uvm_component parent = null);
40
    super.new(name, parent);
41
  endfunction
42
  
43
  function void build_phase(uvm_phase phase);
44
    super.build_phase(phase);
45
  endfunction
46
 
47
  task run_phase(uvm_phase phase);
48
    super.run_phase(phase);
49
    bseq = base_seq::type_id::create("bseq");
50
    bseq.set_starting_phase(phase);
51
    bseq.set_automatic_phase_objection(1);
52
    bseq.start(null);
53
  endtask
54
endclass
55
56
module tb_top;
57
  initial begin
58
    run_test("base_test");
59
  end
60
endmodule
xxxxxxxxxx
1
 
1
// Code your design here
2
317 views and 0 likes     
 
Objections in the sequence using set_automatic_phase_objection method

Objections in the sequence using set_automatic_phase_objection method

170:0