Quantcast
Channel: UVM Forums RSS Feed
Viewing all articles
Browse latest Browse all 756

Type-parameterized class and callback

$
0
0

Hi all,

 

There is problem with having callbacks with type parameterized classes:

 

1. Callback class:

typedef class driver;

virtual class driver_cb extends uvm_callback;

virtual task drive(
    driver driver, 
    ref transaction req, 
    ref transaction rsp
);
endtask

function new(string name="driver_cb");
    super.new(name);
endfunction

endclass

2. Class with type parameter:

class driver #(
    type transaction_t = transaction_base
) extends uvm_driver #(transaction_t);

`uvm_component_param_utils_begin(driver#(transaction_t))
`uvm_component_utils_end

`uvm_register_cb(driver#(transaction_t), driver_cb)

function new(string name, uvm_component parent);
    super.new(name, parent);
endfunction

virtual task drive(transaction_t req, transaction_t rsp); endtask

task main_phase(uvm_phase phase);
   `uvm_do_callbacks(driver#(transaction_t), driver_cb, drive(this, req, rsp));
endtask

endclass

typedef uvm_callbacks #(driver, driver_cb) driver_cb_pool;

Compiler claims about type incompatibility and expects that type parameter should be "transaction_base" only.

 

Any help is welcome.

 

 


Viewing all articles
Browse latest Browse all 756

Trending Articles