Jump to content

Recommended Posts

Hi all,


I'm new with UVM and I came across a problem. I am working on an AXI RD VIP using UVM and I have the following issue.


In the data_phase (the data channel driving) from the MASTER driver, I need to drive the RREADY signal.

There are 3 handshake types described in the protocol specifications: valid before ready, ready before valid and ready and valid at the same time.

In case of valid before ready, I want to wait a certain number of clock cycles ( delay ) from the time that RVALID asserted and then to assert the RREADY signal.

From my understanding, all the delay information should come from the transaction(sequence_item).

The problem is that I generate a new transaction (sequence_item) with get_next_item only when I drive the address channel (in address_phase);

The data_phase works in parallel with the addr_phase and its independent of the address phase.

Also the data_phase needs multiple delay values (one for each data received from DUT, ex. arlen+1) while I only generate one transaction that contains the address channel informations.


Code example:


task run_phase(uvm_phase phase)


    forever begin






    forever begin



endtask : run_phase


task address_phase(axi_item item);

  // Drive the address channel


endtask : address_phase


task data_phase();

  // Wait for the rvalid signal

  while(!vif.rvalid) @(posedge vif.clk);

  // Insert delay between rvalid assertion and rready assertion

  repeat(<problem!!!!>) @(posedge vif.clk);

  rready = 1;


endtask : data_phase


I don't know what variable (sequence_item variable) to set in the  <problem!!!>


Can anyone give me an advice regarding this problem. 

I repeat, I want all timing related data to be set from the sequence_item




Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...