I'd like to be able to control the clock/data pair on a UVC interface. Controlling data is relatively straight-forward. Where I am getting wrapped around the axel is with the clock.
How can I control the clock in the interface such that it can be gated off/on? Should the virtual interface clock assignment to the reference clock be handled in the driver, or elsewhere?
I've found that is the clock assignment is handled in the get_and_drive task, the clock assignment does not occur.
task get_and_drive();
vif.d_in <= 'b0;
vif.clk_in = vif.ref_clk; // does not work
forever
begin
seq_item_port.get_next_item(req);
send_to_dut(req);
seq_item_port.item_done();
end
endtask : get_and_drive
I've done the usual research, and so far, have come up empty.