uvm_dff_completed(1) - 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


43
 
1
import uvm_pkg::*;
2
3
class dff_driver extends uvm_driver#(dff_seq_item);
4
  // UVM factory reg
5
  `uvm_component_utils(dff_driver)
6
  
7
  virtual dff_interf intf;
8
  dff_seq_item tx;
9
  
10
  // Default constructor
11
  function new(string name = "dff_driver", uvm_component parent);
12
    super.new(name, parent);
13
    `uvm_info("driver class", "constructor", UVM_HIGH)
14
  endfunction
15
   
16
  // Build phase
17
  function void build_phase(uvm_phase phase);
18
    super.build_phase(phase);
19
20
    // virtual interface
21
    if (!uvm_config_db#(virtual dff_interf)::get(this, "", "vif", intf))
22
      `uvm_fatal("NOVIF", "Virtual interface must be set for: dff_driver");
23
  endfunction
24
  
25
  // Run phase
26
  task run_phase(uvm_phase phase);
27
    forever begin
28
      `uvm_info("driver Class", "run_phase", UVM_HIGH)
29
      seq_item_port.get_next_item(tx);
30
      drive(tx);
31
      seq_item_port.item_done();
32
    end
33
  endtask
34
  
35
36
  task drive(dff_seq_item tx);
37
    @(posedge intf.clk)
38
    intf.rst <= tx.rst;
39
    intf.din <= tx.din;
40
41
  endtask  
42
endclass
43
xxxxxxxxxx
1
24
 
1
//
2
module dff(
3
  input clk,
4
  input rst,
5
  input din,
6
  output reg dout
7
);
8
  
9
  
10
  
11
  //assign dout = (rst) ? 0 : din;  
12
  always @(negedge clk ) begin //changed posedge to negedge
13
    if (rst) 
14
      begin
15
        dout <= 0;
16
17
      end
18
    else 
19
      begin 
20
        dout <= din;
21
      end
22
  end
23
endmodule
24
22 views and 0 likes     
A short description will be helpful for you to remember your playground's details
 
100:0