Transaction-based verification has been around for many years. A transaction is an abstraction that consists of a single transfer of data and control signals. With today’s complex SoCs, we need to abstract in order to build complex verification environment and test scenarios. Indeed, we want to build hierarchies of transactions: From simple packets, to complex higher-level layers of traffic.
In UVM, the lowest level transaction is defined as a sequence item. Sequence items are combined into a sequence, and sequences can be combined to create more complex sequences. So far, so good.
(Please visit the site to view this video)
The problem is that this hierarchical build-up can get fairly complex quickly. As these sequences and sequence items are typically randomized, you can end up with very funky traffic patterns. When you assess or debug your traffic and the associated constraints, it might be very hard to make sense of what actually happened.
However, with Cadence verification tools, we have had the ability to record these transactions in the waveform database and view them in the waveform browser since the 1990s. The concept of transaction recording and viewing is virtually crying-out to be applied to UVM because UVM operates primarily at the transaction level. You can see how this works in the video embedded above.
Stay abstract, stay sequential!
Axel Scherer
Twitter: @axelscherer