Hanging register test

Hi All,

I am new in using UVM registers model. I am trying to integrate my model in the environment. I think I did this as it is described in the cookbook.
And here is my problem:
I tried to write and run simple test which just write one register and then read it. But the write_reg task doesn’t complete at all. The write operation is done correctly, the registers inside the DUT are written and the driver’s item_done() method is called, but it seems that the write_reg is waiting for something. My driver doesn’t return response so the adapter’s provides_responses is set to 0.
I look at the UVMKIT libraries and noticed that in uvm_reg_map base class. There are these tasks do_bus_write/do_bus_read and they are waiting for bus_req.end_event.wait_on(). Here is where my test hangs it is waiting for bus_req.end_event.wait_on().

But I don’t know why this is not triggered. Does any of you have an idea why is that so and how to resolve the problem.

Appreciate your help.

Hi

I guess its not a problem with write_reg/read_reg.
I think there may some infinite loops are running and double check your drop objections where ever you raise the raise_objection !!!
Could you please check your driver and monitor tasks.
If possible post your monitor task and driver task it could be more easy to look and guess the issue.

Thanks
Haneesh E
SiConTech

In reply to ssassi:

Hi,

I have the same issue.
I used APB Agent from uVM example and it works fine, I was able to complete write to register.
Once I integrated it togther with my regmodel the sequence hang on update() task of register waiting to wait_on().

Appreciate your help.

In reply to rancohen:

It seems like item_done() and provides_responses combination issue.

In adapter class if provides_responses = 0; item_done() should have no response.
In adapter class if provides_responses = 1; item_done(rsp) should have response item.

In reply to spradhan:

Hi,

I found the issue it was related to define I have in compilation UVM_DISABLE_AUTO_ITEM_RECORDING
as a result the write() function of the Register model hang on end_event.wait_on()

To solve it I needed to add in the APB drive tr.begin_tr() and tr.end_tr()
or remove the define.

thanks