tag:blogger.com,1999:blog-9157206405178843096.post2409324385990228386..comments2024-02-12T14:57:58.257+05:30Comments on siddhakarana: Hierarchical Sequences in UVMGaurav Jalanhttp://www.blogger.com/profile/16509909311582718412noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-9157206405178843096.post-88941420111734831362014-04-23T09:11:58.821+05:302014-04-23T09:11:58.821+05:30Thanks much for bringing out this specific point. ...Thanks much for bringing out this specific point. The abstract sequence that you are referring to is a concept coming out from "Sequence layering" in UVM. We develop tests at an abstract level in a layering agent that connects to the sequence of underlying protocol to convert into protocol specific transaction. Please refer to an earlier blog post on this topic -<br />http://www.whatisverification.blogspot.in/2013/12/sequence-layering-in-uvm.html<br /><br />Hierarchy is protocol specific (the same sequence item continues) while layering is adding abstraction (a new abstract sequence item is introduced). <br />Gaurav Jalanhttps://www.blogger.com/profile/16509909311582718412noreply@blogger.comtag:blogger.com,1999:blog-9157206405178843096.post-61926718980520538442014-04-23T04:32:48.295+05:302014-04-23T04:32:48.295+05:30I think you have missed a massive opportunity to d...I think you have missed a massive opportunity to discuss abstraction sequences. Yes I agree that we can use hierarchical sequences to generate specific combinations of sequence items, however the principle of constrained random verification is to start unconstrained and constrain as required.<br />To that end I prefer abstractions sequences: sequences that are of an abstract concept to a bus, e.g. video frames. This sequence would run on a separate sequencer (outside of a UVC). A sequence generates random frames, a conversion sequence running on the UVC sequencer would translate these sequence items to whatever level of sequence hierarchy is required on the UVC sequencer. <br />This approach is much more manageable than aimlessy extending sequence after sequence.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9157206405178843096.post-36364407936296407662014-04-14T08:19:10.533+05:302014-04-14T08:19:10.533+05:30Timi,
Thanks much for sharing your comment. In th...Timi,<br /><br />Thanks much for sharing your comment. In the example referenced, if we see AHB only in the context of register programming where the adapter would take care of converting the register RW calls into AHB RW transactions then TIP 1 may be less relevant. As mentioned we need to keep the end goal in mind. As a VIP developer one would want to consider other applications where the transactions are not only register related. Interestingly if you read the Sequence layering post, the hierarchical sequence concept may seem redundant. IMO these are concepts that need to be applied based on the context or desired applications of the code. SIMPLE always helps in whatever way it is :)Gaurav Jalanhttps://www.blogger.com/profile/16509909311582718412noreply@blogger.comtag:blogger.com,1999:blog-9157206405178843096.post-80957422646001472492014-04-14T01:05:49.760+05:302014-04-14T01:05:49.760+05:30I find that Tip 1 disagrees with the final quote o...I find that Tip 1 disagrees with the final quote of making things simple. Why create an extra layer of complexity around a sequence item just to start that as a sequence? I'm a big fan of sequence layering, but this step just seems useless to me. You're anyway going to spend most of your time writing sequences at a higher level than just doing bus writes and reads (think register layering).Tudor Timihttps://www.blogger.com/profile/11244280196830233694noreply@blogger.com