Skip to content

Commit 574ea4b

Browse files
author
Peter Kazanzides
committed
fpgatest: added verbose flag; support multiple reads in TestWaveform
1 parent 8d68b17 commit 574ea4b

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

tests/fpgatest.cpp

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,7 @@ void TestBlockWrite(unsigned int wlen_max, AmpIO *wboard, AmpIO *rboard)
929929
}
930930
}
931931

932-
void TestWaveform(AmpIO *board)
932+
void TestWaveform(AmpIO *board, size_t numReads = 1)
933933
{
934934
const unsigned int WLEN = 256;
935935
quadlet_t waveform[WLEN];
@@ -961,20 +961,25 @@ void TestWaveform(AmpIO *board)
961961
return;
962962
}
963963
Amp1394_Sleep(0.05);
964-
std::cout << "Reading data" << std::endl;
965-
if (!board->ReadWaveformTable(waveform_read, 0, WLEN)) {
966-
std::cout << "ReadWaveformTable failed" << std::endl;
967-
return;
968-
}
969-
for (i = 0; i < WLEN; i++) {
970-
if (waveform_read[i] != waveform[i]) {
971-
std::cout << "Mismatch at quadlet " << i << ", read " << std::hex
972-
<< waveform_read[i] << ", expected " << waveform[i]
973-
<< std::dec << std::endl;
964+
for (size_t n = 0; n < numReads; n++) {
965+
std::cout << "Reading data";
966+
if (numReads > 1)
967+
std::cout << ": iteration " << n;
968+
std::cout << std::endl;
969+
if (!board->ReadWaveformTable(waveform_read, 0, WLEN)) {
970+
std::cout << "ReadWaveformTable failed" << std::endl;
974971
return;
975972
}
973+
for (i = 0; i < WLEN; i++) {
974+
if (waveform_read[i] != waveform[i]) {
975+
std::cout << "Mismatch at quadlet " << i << ", read " << std::hex
976+
<< waveform_read[i] << ", expected " << waveform[i]
977+
<< std::dec << std::endl;
978+
return;
979+
}
980+
}
981+
std::cout << "Pattern verified!" << std::endl;
976982
}
977-
std::cout << "Pattern verified!" << std::endl;
978983
#if 0
979984
// Following code will actually generate waveform on DOUT lines
980985
board->WriteDigitalOutput(0x0f,0x00);
@@ -1137,6 +1142,7 @@ int main(int argc, char **argv)
11371142
int port = 0;
11381143
std::string IPaddr(ETH_UDP_DEFAULT_IP);
11391144
bool fwBridge = false;
1145+
bool isVerbose = false;
11401146

11411147
if (argc > 1) {
11421148
for (int i = 1; i < argc; i++) {
@@ -1149,10 +1155,14 @@ int main(int argc, char **argv)
11491155
useEthernet = false;
11501156
}
11511157
}
1158+
else if ((argv[i][0] == '-') && (argv[i][1] == 'v')) {
1159+
isVerbose = true;
1160+
}
11521161
else {
1153-
std::cerr << "Usage: eth1394test [-pP]" << std::endl
1162+
std::cerr << "Usage: eth1394test [-pP] [-v]" << std::endl
11541163
<< " where P = port number (default 0)" << std::endl
1155-
<< " can also specify -pethP or -pudp" << std::endl;
1164+
<< " can also specify -pethP or -pudp" << std::endl
1165+
<< " -v verbose output (ZynqEmioPort)" << std::endl;
11561166
return 0;
11571167
}
11581168

@@ -1202,11 +1212,14 @@ int main(int argc, char **argv)
12021212
}
12031213
}
12041214
#elif Amp1394_HAS_EMIO
1205-
FwPort = new ZynqEmioPort(port, std::cout);
1206-
if (!FwPort->IsOK()) {
1215+
ZynqEmioPort *ZynqPort;
1216+
ZynqPort = new ZynqEmioPort(port, std::cout);
1217+
if (!ZynqPort->IsOK()) {
12071218
std::cout << "Failed to initialize Zynq EMIO port" << std::endl;
12081219
return 0;
12091220
}
1221+
ZynqPort->SetVerbose(isVerbose);
1222+
FwPort = ZynqPort;
12101223
FwPortIsZynq = true;
12111224
// Zynq EMIO port always has one node (0)
12121225
unsigned int bnum = FwPort->GetBoardId(0);
@@ -1625,7 +1638,7 @@ int main(int argc, char **argv)
16251638
break;
16261639

16271640
case 'w':
1628-
TestWaveform(curBoard);
1641+
TestWaveform(curBoard, 10);
16291642
break;
16301643

16311644
case 'x':

0 commit comments

Comments
 (0)