המתכנן וארכיטקט המערכת נדרש למצוא דרכי בדיקה למודול או למערכת המלאה המתוכננים לרוב ב-VHDL או ב-VERILOG במאמר זה מוצגת דרך בדיקה ליצירת קובצי נתונים באמצעות שפה עילית C בדוגמא להלן. (ניתן ליצור קבצים אילה בכל שפה עילית כולל שפות תכנון חומרה VHDL ו(VERILOG. חלק מקובצי הנתונים מזינים את כניסות המודול והחלק האחר של קובצי הנתונים מושווים ליציאות המודול. בדוגמא להלן כל כניסה לפקודת ה while חופפת לעליית שעון במערכת ולפיכך התוכנית מיצרת אות כניסה לפי אלגוריתם שיתואר להלן ובעליית השעון בה יש משמעות ליציאות מיוצרים האותות המתאימים כתוצאה מאותות הכניסה הקודמים. בדוגמא להלן התוכנה מיצרת אותות כניסה למפענח בקר תקשורת RS232. היות ואותות נדגמים ע"י שעון המהיר פי 16, אותות הכניסה הנוצרים ע"י התוכנה חוזרים על עצמם 16 פעם. בשרטוט למטה כל ביט כולל Start Data Stop משודר ברציפות 16 פעם. Start 8 Bits Data Stop קובץ הכניסה RS232Test.txt יוצר Data סריאלית .ערך כל Byte משודר עולה מקודמו ב-1 לכן קובץ היציאה VecDat.txt שהתוכנה יוצרת ושבtest bench יושווה ליציאות המודול נראה כך: 00000000 00000001 00000010 : 11111110 11111111

להלן קובץ יוצר האותות הכתוב ב-C
// RS232.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include "stdio.h"
#include "power.cpp"
#include <fstream>
using namespace std;
void main()
{//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void main()
//fstream myfile;
//myfile.open ("RS232Test.txt");
FILE *F_RS232Test,*F_VecDat;
const int MsTransmit = 7;
const int start = 0,Stop = 2,Transmit =1;
const int MsCountSamples = 15;
const int MsNbit =7;
int i;
int TestState= start;
int CountDi =0;
int remin;
char VecDi [8];
//char Di;
int k=0;
//int TempBit;
int CountSamples= 0;
int i_transmit=0;
//int kmodu;
int Nbit= 0;
//char Ckmodu;
int MaxDi = power (2,(MsTransmit+1))-1;
F_RS232Test = fopen("RS232Test.txt","wt");
if (!F_RS232Test) cout<< "Failed To Open RS232Test";
F_VecDat = fopen("VecDat.txt","wt");
if (!F_VecDat) cout<< "Failed To Open VecDat";
while (CountDi <= MaxDi)
{ //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -while (CountDi <= MaxDi)
switch(TestState)
{ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - -switch(TestState)
case start: if(CountSamples == MsCountSamples) TestState = Transmit;
else {fprintf(F_RS232Test,"%d",0);
fputs("\n",F_RS232Test);
printf("%d\n",0);
}
break;
case Transmit: if(CountSamples==0)
{ if (Nbit==0) remin=CountDi; //- - - - - - - if(CountSamples==0)
VecDi[Nbit] = remin%2 +48;
remin = remin/2;
}//- - - - - - - - - - - - - - - - - - - - - -if(CountSamples==0)
fputc(VecDi[Nbit],F_RS232Test);//- - - - - - - - -fputc(VecDi[Nbit],F_RS232Test);
fputs("\n",F_RS232Test);
printf("%c\n",VecDi[Nbit]);
if(CountSamples == MsCountSamples)
{ //- - - - - - - - - - - if(CountSamples == MsCountSamples)
if (Nbit==MsNbit)
{//fputs(VecDi,F_VecDat);
//fputs("\n",F_VecDat);
for(i=MsNbit;i>=0;i- )fputc(VecDi[i],F_VecDat);
fputs("\n",F_VecDat);
Nbit=0;
CountDi++;
TestState = Stop;
}
else
{Nbit++;
}
} //- - - - - - - - - - - -if(CountSamples == MsCountSamples)
break;
case Stop: if(CountSamples == MsCountSamples) TestState = start;
else {fprintf(F_RS232Test,"%d",1);
fputs("\n",F_RS232Test);
printf("%d\n",1);
}
break;
default: TestState = start;
break;
}// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -switch(TestState)
if (CountSamples == MsCountSamples) CountSamples =0;
else CountSamples++;
}//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -while (CountDi <= MaxDi)
fclose(F_RS232Test);
fclose(F_VecDat);
}//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void main()