An I2C verification environment, which uses
memories and VPI (c code) to
drive and monitor data to/from DUT, will be described in this work.
-
In this site many verification environments have been presented, using,
specman
,
VHDL
etc....
This work is different. The test-bench has a few memory arrays, which are used
by the c code to transfer data to be injected to the DUT, via c
code and vise versa: A BFM,
which is implemented in the test-bench collects data and stores it in another
memory
array. This memory is than read by the c code, which implements a reference
model (scoreboard to check that DUT functions okay).
The usage of memory arrays, makes it perfect to use the test-bench with an
hardware emulator.
The usage of memory arrays, allows the c code only to work on an entire
transaction. The switching between verilog and c code has a performance
penalty. This way verilog to c code switching is reduced
to the necessary minimum.
-
This project is under development and only part of it can be currently
presented.
-
The DUT is an I2C from the open core site. The CPU interface was modified,
from wishbone to APB.
The test-bench instantiates the DUT, and some memory arrays for data
drive. This includes three arrays (icarus simulator does not support arrays,
which use vectors of greater than 32 bits) for APB address, data write and
control.
The c code needs to put data in each of this arrays. The test-bench, sets a
value in the first element of the array and than requests the c code to fill
the array. This value goes to a dispatcher block in the c code, which
decides if it needs to prepare an address, data write or control array.
-
A script to compile both verilog and c, using the free verilog simulator,
icarus, is available too. Follow the next
link
to see a description of the compilation and simulation script.
For a detailed description on the test-bench, its BFM and c code
invocation please see the following
link.
The c code, presently, takes care on preparing APB transaction, which the
test-bench uses to the drive into the DUT.
-
In the following
page
a to do list describes what is missing to complete this self study
project.
-
The code can be downloaded
from:
The code was last updated on 120830_125121.
|