I2C Verification environment using the UVM

Contributor:

Carsten Thiele

Description: The contribution is UVM based I2C testbench for the I2C master device that can be downloaded from opencores.org. It is guaranteed to work out of the box with Questasim 10.1.

The TB makes use of CRT and SVA.

A README file with an explanation of the TB structure and instructions on how to run tests and regressions can be found under iic/docs/HowTo.txt.

The implementation largely follows the recommendations of Mentor's UVM Cookbook.

 
Download: iicTb.tar_.gz  

In this model you use in /iic/iic_tb/test/iicPcTest/iicPcTest.svh
phase.raise_objection(this,“iicPcTest”);

What is the difference between uvm_test_done. and phase.?

  •      uvm_test_done.raise_objection(this);  
    
  •      phase.raise_objection(this,"iicPcTest"); 
    

Also, which is better use?
Ben

In reply to ben@SystemVerilog.us:

Hi Ben,

to be honest, this is just boiler plate code. I wasn’t aware that there are alternatives and hence I can’t tell you anything about their respective merrits. Thanks, however, for drawing my attention to this.

Cheers,

Carsten

uvm_test_done.raise_objection() is a hangover from the OVM where it was used to end the run phase.

phase.raise_objection() raises objections for a particular phase (of which there are several) and is therefore more suitable for the UVM since it allows fine grained control for controlling when to complete a particular phase.

In reply to mperyer:

Is this code accessible anymore?

In reply to mangello:

Hi Mangello,

The link to file download has been corrected. You can download it now.

In reply to System Administrator:

After I unzip this file what do I use to view it?

In reply to mangello:

For your convenience, I uploaded the file that I had.
http://systemverilog.us/iicTb.tar_.gz // original download
http://systemverilog.us/iic.zip // zipped from expanded directory
Ben Cohen

In reply to ben@SystemVerilog.us:

Hello Ben,
I am new to UVM. I have some serial interface design. Should I use the approach as I2C Verification environment using the UVM, or should I use parallel-to-serial approach? Is there other methods which you can recommend?
Thanks,
sxu1