Electronic – Hardware test of FPGA, thousands of combinations

fpgatesting

My colleagues longtime ago have designed an FPGA (using VHDL) for a special purpose.
Another colleague prepared the test scenarios.

Now they want me to test this FPGA board following these written scenarios. The test bench is ready. So I have nothing to do except reading these scenarios, changing the Analog switches placed in the test bench (ADC is used in the test bench) and see the DIGITAL output on a monitor (an application was developed to show the result of FPGA computation on pc monitor)

My question is:

What is the name of this type of testing?

I searched several hours in Amazon book store to find in chapters of books written for FPGA design, something about real way of testing an FPGA with no success.

I have 5 analog inputs and the ADC will create let's say 20 digital variables for the FPGA. These test scenarios specific for this FPGA test not all the input combination (2^20=1048576)but at least 1000 combination.

So I should perform 1000 tests manually:

reading the scenario, manually changing the analog switch values, read the digital result on monitor)

But how about FPGA’s that have more inputs? should we test hardwarely all the possible combinations of the inputs?

Please help me. If you know a chapter of a book explaining the way we test physically (hardware) the FPGA or if we use other ways I’ll appreciate.
The keywords help me too

Best Answer

When done in simulation, this type of testing would be called "directed testing". In other words...

If I put in data A, I expect result B.

If I out in data C, I expect result D.

etc...

(where all of the sets of data (A, C, ...) and results (B, D, ...) have been determined beforehand.

Normally one would try to find a way to eliminate the human (that's reading and checking the result on the monitor) from the loop - partly because humans are less reliable than computers, and partly for speed reasons.

However, the "constrained random testing" mentioned by others is generally the way to go if possible. In this, you generate randomised input, work out what the result should be for that input (using an independent model of the design), and check that the result from the FPGA matches what you expected. You will generally get much better coverage this way than by directed testing (although directed testing can still be useful for "hello world"-type bringup tests and for hitting specific corner cases.

For constrained random testing, you really need an automated mechanism for checking the result.