UVMF Sequence Categories VS Hierarchical Sequences

Hi
In this page of the Cookbook, a hierarchy of sequences is introduced, which consists of API sequences, Worker sequences and Virtual sequences. On the other hand, in session 14 of the ‘UVMF One Bite at a Time’ course, sequences are divided into three categories: Interface sequences, Environment sequence and Bench sequences. I wonder what is the relationship between these two groupings? Are they the same or each one looks at the problem from a different perspective?
Thanks

They’re organizing sequences from different perspectives.

The cookbook page discussing sequences bases the terminology on what a given sequence is accomplishing, and at what level of that hierarchy of activity that sequence lives:

  • The body() task of an API sequence is expected to communicate directly with a driver, generating sequence items specific to that driver type via the start_item()/finish_item() handshake.
  • A worker sequence is going to call one or more API sequences to accomplish a specific goal such as configuring part of your DUT, initializing a memory, etc. and typically only accesses one sequencer.
  • A virtual sequence instantiates multiple other sequence types and will control part or all of a given test’s activity, utilizing multiple sequencer handles and starting multiple worker and API sequences underneath.

The UVMF terminology for sequences has less to do with the functionality/content of the sequence and more to do with where it is defined in the UVMF hierarchy (interface sequences are defined alongside the given interface, etc.). That said, there are parallels - an interface sequence is only associated with that interface and is intended to be reusable for any environment/bench in which it is used. Therefore, interface sequences are typically going to be API sequences, but there may be worker sequences defined here as well for convenience.

At the UVMF environment level you may have worker sequences as well as virtual sequences but the key here is that UVMF environments are expected to be reusable - any sequences defined here should not make any assumptions about where the environment is being used (i.e. focused on a specific DUT or bench).

At the UVMF bench level you may still have a combination of worker and virtual sequences but these are not expected to be reusable and will be focused on exercising/stimulating a particular DUT