I found almost every driver that extends from uvm_driver
has task get_and_drive
like below. I checked the uvm source code and uvm_cookbook, but I didn't find get_and_drive
. It seems it is not a uvm rule; it is more likely a convention. Who first used the task named get_and_drive()
, and why do almost all people use the name get_and_drive
in their driver?
task run_phase(uvm_phase phase);
get_and_drive();
endtask : run_phase
task get_and_drive();
forever begin
seq_item_port.get_next_item(req);
send_to_dut(req);
seq_item_port.item_done();
end
endtask : get_and_drive
If you look in the
example/integrated/ubus
directory, in theubus_master_driver
you'll see a method that's calledget_and_drive()
. If you go back to OVM, you'll see that in XBUS example also defined the same method in thexbus_master_driver
.Since most people learn by example, I guess the convention just stuck. I think other methodology sites (like Verification Academy) also promote the same convention.