Quantcast
Channel: UVM Forums RSS Feed
Viewing all articles
Browse latest Browse all 756

Lock request always wins arbitration in UVM 1.1d?

$
0
0

According to the description of grant_queued_locks function in UVM 1.1d, it should grant any non-blocked locks that are at the top of the arbitration queue. However, what it appears to be doing is granting the first non-blocked lock in the queue, wherever it is. The function simply traverses the arbitration queue from the top and once it finds a non-blocked lock, it removes it to the queue and adds it to the lock list.

 

As far as I can see, that's not the desired behaviour -- locks should be arbitrated in-order with other requests, and should not have a higher priority than others. 

 

I have a scenario where I have 3 sequences arbitrating for one sequencer. Two of them are making <lock><txn><txn><unlock> requests, while the third is just issuing normal transactions. That third sequence is starved, as one of the other two always has a pending lock that wins over it.

 

Looking at the UVM 1.2 code, I can see that this function has been re-written and will properly jump out if the first request in the queue is not a lock. Is this a (known) bug in UVM 1.1? I can't find any mention of it in Mantis...

 


Viewing all articles
Browse latest Browse all 756

Trending Articles