Virtual Sequences in UVM: Why? How?
In my previous blog post, I talked about guidelines to create reusable sequences. Continuing on this thread, here I am going to talk about virtual sequences and the virtual sequencer. Common questions I hear from users include: why do we need a virtual sequence? How can we use it effectively?
Most UVM testbenches are composed of reusable verification components, unless we are working on block-level verification of a simple protocol like MIPI-CSI. Consider a scenario of verifying a simple protocol; In this case, we can live with just one sequencer sending the stimulus to the driver. The top-level test will use this sequencer to process the sequences (as described in the previous blog post). Here we may not need virtual sequence (or a virtual sequencer).
But when we are trying to integrate this IP into our SOC (or top-level block), we surely want to consider reusing out testbench components, which have been used to verify these blocks. Let us consider a simple case where we are integrating two such blocks. Here, let us consider two sequencers driving these two blocks. From top-level test, we will need a way to control these two sequencers.
To read the full article, click here
Related Semiconductor IP
- PCIe Gen 6 Phy
- PCIe Gen 6 controller IP
- Image codec/encoder/decoder (Customizable) - ISO/IEC 10918-1 JPEG standard
- IrDA controller
- I2C Master Controller
Related Blogs
- Virtual Sequences in UVM: Why, How?
- Reusable Sequences in UVM
- VIP Architecture: Why Native SystemVerilog and UVM?
- Reusable Sequences in UVM
Latest Blogs
- Rambus CXL IP: A Journey from Spec to Compliance
- Alphawave Semi is in Play!
- Vision Transformers Have Already Overtaken CNNs: Here’s Why and What’s Needed for Best Performance
- Tailoring Root Of Trust Security Capabilities To Specific Customer Needs
- How Physical AI Is Redefining the Automotive Industry