Frequently Asked Questions

Quick answers to common questions about KVIPS.


General Questions

What is KVIPS?

KVIPS (K's Verification IP Suite) is a vendor-neutral, open-source library of SystemVerilog UVM verification components for protocol verification. It provides production-ready VIPs that work across multiple simulators.

Is KVIPS free to use?

Yes! KVIPS is released under the MIT License, which allows free use in both commercial and non-commercial projects. See the LICENSE file for full details.

Which simulators are supported?

KVIPS is validated on:

Older versions may also work but are not officially validated.

Can I contribute to KVIPS?

Absolutely! We welcome contributions. Please see our Contributing Guide for details on how to get started.


Technical Questions

Do I need to know UVM to use KVIPS?

Yes, KVIPS assumes basic familiarity with UVM methodology. If you're new to UVM, we recommend:

How do I integrate KVIPS into my existing testbench?

See our Getting Started Guide and Integration Guide for step-by-step instructions. The basic steps are:

  1. Add KVIPS to your compilation
  2. Instantiate the interface in your top module
  3. Configure and create agents in your environment
  4. Start sequences on the sequencers

Can I use multiple VIPs together?

Yes! KVIPS VIPs are designed to work together. You can instantiate multiple agents (same or different protocols) in your environment. See the multi-agent examples in the documentation.

Does KVIPS support constrained random testing?

Yes, all transaction classes use SystemVerilog constraints for randomization. You can:


AXI4 Specific

What AXI4 features are supported?

The AXI4 VIP supports:

How do I enable pipelined/outstanding transactions?

Configure the master agent: ```systemverilog cfg.master_pipelined = 1; cfg.max_outstanding_writes = 16; cfg.max_outstanding_reads = 16; ``` Or use runtime plusarg: `+VIP_PIPE +VIP_MAX_OUTS=16`

How do I inject errors?

Configure the slave agent: ```systemverilog cfg.slave_err_enable = 1; cfg.slave_err_start = 32'hF000; cfg.slave_err_end = 32'hFFFF; cfg.slave_err_resp = AXI4_RESP_SLVERR; cfg.slave_err_on_write = 1; cfg.slave_err_on_read = 1; ``` Now accesses to 0xF000-0xFFFF will return SLVERR.

Can I disable assertions at runtime?

Yes, use these plusargs:


Debugging

How do I enable debug tracing?

Use any of these methods:

How do I dump waveforms?

Use the plusarg `+KVIPS_WAVES` to enable wave dumping from the demo top:

My simulation hangs. What should I check?

Common causes:

  1. Missing handshakes: Ensure VALID/READY signals are driven
  2. Clock/reset: Verify clock is toggling and reset is released
  3. Configuration: Check agent is configured as active
  4. Deadlock: Enable trace to see what's waiting
  5. Timeout: Add timeout logic in your test

I'm getting UVM_ERROR. How do I debug?

Steps to debug:

  1. Read the error message carefully - it often points to the issue
  2. Enable VIP trace: `+VIP_TRACE`
  3. Check the line number and file in the error
  4. Look for recent transaction activity before the error
  5. Check assertions - they may have caught a protocol violation
  6. Use waveforms to see signal-level activity


Performance

How can I speed up my simulation?

Performance tips:

How much memory does KVIPS use?

Memory usage depends on:

Typical usage is 100-500MB for a moderate testbench. Use sparse memory (associative arrays) for large address spaces.


Compatibility

Does KVIPS work with older simulator versions?

Possibly, but not officially validated. We test on the versions listed above. Older versions may work if they support:

Can I use KVIPS with cocotb?

Not yet, but it's on the roadmap! We plan to add cocotb entry points for Python-based verification. Follow the repository for updates.

Does KVIPS support formal verification?

The SVA assertions can be used with formal tools for property verification. Full FPV testbenches are planned for future releases.


Licensing & Support

Can I use KVIPS in a commercial product?

Yes! The MIT License allows commercial use. You can:

The only requirement is to include the original license notice.

How do I get support?

Multiple support channels:

Do you offer commercial support?

We currently offer community support through GitHub. For commercial support inquiries (training, custom development, consulting), please contact us directly.


Still have questions?

Can't find what you're looking for?

Ask on Discussions Open an Issue