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....
The main page of this work is accessed with the following
link.
This page describes how APB transaction are done.
-
This page shows a simple scoreboard implementation. I2C items are inserted
to the scoreboard each time it sent to the DUT. Each time a data item
arrives from the DUT output it checked with first item in the
scoreboard.
-
As in
example
the scoreboard is implemented in c++ using queues and rest of the code
is implemented in c. The usage makes the scoreboard implementation simple.
...
extern "C" int scbd_add(t_mem_init item)
{
std::cout << "scbd: ad=" << (unsigned)item.addr << " d=" << (unsigned)item.data << " ctrl=" << (int)item.ctrl << " dir=" << (int)item.dir << " \n";
if(item.dir == t_in) { //add item
scbd_q.push (item);
}
else { //compare
if( scbd_q.empty() ) {
std::cout << "scbd: error queue empty " << "\n";
return -1;
} else {
t_mem_init scbd=scbd_q.front();
scbd_q.pop();
//compare
unsigned char flg=0;
if(item.addr != scbd.addr) {
...
-
The code can be downloaded from:
C++ scoreboard code .
|