Search the Community
Showing results for tags 'callback'.
-
Hi, experts, I met one problem when i use the `uvm_do_callbacks macro. The way of using `uvm_do_callbacks macro: •class A extends uvm_callback; • virtual task pre_tran(mac_driver mac_drv, ref mac_transaction tr); • endtask •endclass //A • •typedef uvm_callbacks#(mac_driver, A) A_pool; • •class mac_driver extends uvm_driver#(mac_transaction); • ··· • `uvm_register_cb(mac_driver, A); •endclass //mac_driver • •task mac_driver ::main_phase(); • ··· • while(1) begin • ··· • `uvm_do_callbacks(mac_driver, A, pre_tran()); • ··· •end • ··· •endtask //main_phase •class mac_callback extends A; • virtual task pre_tran(mac_driver mac_drv, ref mac_transaction tr); • $display(“pre_tran, the transaction is:”); • tr.print(); • endtask • `uvm_object_utils(mac_callback); •endclass • •class base_test extends uvm_test; • ··· • mac_callback mac_cb; • ··· • function void connect_phase () • mac_cb = mac_callback::type_id::create(“mac_cb”); • A_pool::add(mac_env.agt.drv, mac_cb); • ··· • endfunction •endclass //mac_driver VCS error information: Could not find member 'pre_tran' in class 'mac_driver', at "../sv/04_driver/430_mac_driver.sv", 56. Instance stack trace: mac_pkg ../sv/mac_pkg.sv, 2 Could anybody tell me why? Thanks in advance!