WEBVTT

NOTE This is a multi-line block.
This is the text to the FIAT-usecase-demo
by Yngve Hafting 2025

00:00.500 --> 00:03.000
To demonstrate FIAT-testing,

00:03.500 --> 00:07.250
we have a pulse-width modulation simulation module,

00:07.500 --> 00:11.000
that has errors according to the test, 

00:07.500 --> 00:14.250
and we have our testbench on the right here, that we are going to run. 

00:14.500 --> 00:20.000
The testbench is also open here, so we can do some modifications underway.

00:20.250 --> 00:22.250
But lets take the test..

00:22.500 --> 00:28.000
The testbench will first run through the fault injection- 

00:28.250 --> 00:31.250
which is completed quite fast, 

00:31.500 --> 00:35.250
and then it runs through the ordinary tests afterwards.

00:35.500 --> 00:38.250
The ordinary tests are used during FIAT-testing.

00:38.500 --> 00:43.000
So what we can see here, is that our testbench-

00:43.250 --> 00:50.000
during fault injection, -it injects one type of error

00:50.250 --> 00:54.250
and it reports that it has found that error. 

00:54.500 --> 01:00.000
And this goes on for every error we have injected during fault injection. 

01:00.500 --> 01:04.250
After fault injection, we go over to the ordinary tests

01:04.500 --> 01:07.250
in which it does all the tests involved

01:07.500 --> 01:12.250
and then afterwards it reports the list of errors it found, 

01:12.500 --> 01:16.000
and it will provide a traceback for the last error.

01:16.500 --> 01:18.000
That is how this is written. 

01:18.250 --> 01:24.000
At last we get the output of which tests failed and which passed. 

01:24.500 --> 01:28.000
The FIAT-test here passed, and the ordinary test failed. 

01:28.250 --> 01:32.250
Now, what we can see is those types of errors that were found-

01:32.500 --> 01:36.250
were the short-circuit and the reset error

01:36.500 --> 01:38.250
So, lets see what happens

01:38.500 --> 01:40.250
if we for some reason

01:40.500 --> 01:46.000
were about to invalidate those two tests in the testbench.

01:46.500 --> 01:50.250
We store it, and then we rerun the tests. 

01:50.500 --> 01:57.000
Just to see what happens when those two test are taken out

01:57.500 --> 02:04.000
Then we immediately see that during fault injection, we get an error;

02:04.500 --> 02:11.000
and this testbench does not put all the FIAT-tests in a queue,

02:11.500 --> 02:14.250
so it will stop on the first error of the FIAT-tests. 

02:14.500 --> 02:19.250
The first error here, is that there is no assertion error reported, 

02:19.500 --> 02:23.250
by the ordinary checks during fault injection number one,  

02:23.500 --> 02:26.000
which is the reset test.

02:26.500 --> 02:30.000
This means that the FIAT-test has failed.  

02:30.250 --> 02:36.250
The ordinary test that follows will find no errors,

02:36.500 --> 02:40.000
because according to the ordinary tests-

02:40.250 --> 02:43.250
we turned off those tests that failed last time. 

02:43.500 --> 02:46.000
So we get the exact opposite result

02:46.500 --> 02:52.250
For comparison, we can see what happens

02:52.500 --> 02:54.250
if we allow the reset check to run,

02:54.500 --> 02:59.250
and see that now the FIAT-tests will run one step longer.

02:59.500 --> 03:03.250
It will complete the reset test, 

03:03.500 --> 03:10.250
while the short-circuit test still fails. 

03:10.500 --> 03:13.250
So the reset test was complete, 

03:13.500 --> 03:19.000
and now, having had the reset check among the ordinary checks, 

03:19.500 --> 03:23.000
this fault will be found during ordinary testing. 

03:23.500 --> 03:27.000
So, that is it... Thank you for watching!







