Random Testing and Verification

The final project will draw upon material from Chapters 7, 9, and 10 to develop a verification method for verifying the functionality of the factorial module using post-synthesis tming simulation using the Vivado simulator.

- Generate random values of n between 1 and 12, inclusive, with replacement.

- Develop a recursive function that calculates the correct factorial value, including 1!

- Develop a task that sends n to your factorial module

- Develop two assertions: one that checks the correctness of the result from the factorial module, and one that checks that (n! > n^2). (The latter will fail for values of n < 4)

- Use cover groups and cover points to establish four equal sized bins for values of n

- Verification continues until each bin has at least a count of 15

- Rather than rely on on waveforms, use other methods to report failed assertions and a final report on the number of passed and failed assertions, as well as coverage. Output this information to the Vivado Console. Save the console output, as well as your source code, and submit as a single PDF via Canvas.

Chapter 7 covers randomization; Chapter 9 covers assertions; and Chapter 10 covers - you guessed it! - cover groups, cover points, and coverage.