dmq0420 Posted November 21, 2012 Report Share Posted November 21, 2012 Does anyone meet this UVM_ERROR? The full log infomation is: UVM_ERROR @ 89000: did not produce an item within an NBA delay. Sequences should not consume time between calls to start_item and finish_item. Returning null item. UVM_ERROR @ 90000: get_next_item/try_next_item called twice without item_done or get in between In fact, the test not always failed. But only failed for some seeds and the error message is always like above when failed. In my sequence, I'm using lots of "fork join_any" and "fork join". In the top sequence, it instantiate several sub-sequences and there are many "fork" in each sequences. What I want to know is why UVM report such error? And how to debug this error? Quote Link to comment Share on other sites More sharing options...
uwes Posted November 21, 2012 Report Share Posted November 21, 2012 the error is because you indicated to send an item, you got granted but failed to deliver the item without a delay. typical issues are: - a delay between grant and delivery of an item (this can only happen if you utilize the "fine grained" sequence control. for instance between start_item+finish_item) - your process asking for the grant has been terminated. as a result the terminated process cannot deliver the item anymore. this could be due to a process::kill,suspend; disable fork, the end of a phase (terminating the process),... /uwe Quote Link to comment Share on other sites More sharing options...
dmq0420 Posted November 22, 2012 Author Report Share Posted November 22, 2012 Thanks uwe. It seems that most probably the issue disable fork. So how to use the "disable fork" or ".kill()" safely after we already start a sequence? Quote Link to comment Share on other sites More sharing options...
dmq0420 Posted November 22, 2012 Author Report Share Posted November 22, 2012 Does anyone have ideas about this error? Quote Link to comment Share on other sites More sharing options...
uwes Posted November 23, 2012 Report Share Posted November 23, 2012 did you try to stop the sequence using sequence.kill() before you kill the thread with "disable fork" ? Quote Link to comment Share on other sites More sharing options...
dmq0420 Posted November 24, 2012 Author Report Share Posted November 24, 2012 No. I used the sequence.kill() after I killed the thread by "diable fork". Here is my code. fork begin ... end begin ... end begin fork begin `uvm_do(seq0); end begin `uvm_do(seq1); end join_any disable fork; seq0.kill(); seq1.kill(); end join disable fork; Quote Link to comment Share on other sites More sharing options...
uwes Posted March 20, 2013 Report Share Posted March 20, 2013 hi, did you use a module or program block for your issue and is this a cadence simulator? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.