ssokorac Posted January 26, 2015 Report Share Posted January 26, 2015 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... Quote Link to comment Share on other sites More sharing options...
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.