Project 1 Test Bench for Calculator
Project 1 Test Bench for
Calculator
Digital Systems Design
2016
Professor Jonathan H. Manton
Notes
• To test your calculator, you can use and modify TestCalc.v
• Online repository: Lab Notes/Project 1
• Only looks at CPU pins
• Does not test debounce, Disp2cNum etc
• To make it more convenient, use the following code before testing for
which button is pressed in your ROM
• ‘h10: data = set(`FLAG, 0);
• ‘h11: data = jz(`FLAG, ‘h11);
• … Now use ATC
• … Jump back to 10 when finished current operation
Example of Test Signals
Example of Output (ModelSim Transcript)
Some More About the Test Bench
Explanations
• Use tasks to make writing the Test Signals easy
• Fork … Join simply runs things in parallel
• No need to do this, but I wanted “exactly” a delay of 50 cycles for each
operation
• If your code needs more than 50 instructions for any operation (push, pop, …)
• Increase the delay
• (or improve your code!)
Comments
• You can print out IP in either decimal or hexadecimal
• Depends on how you wrote addresses in your ROM
• 10: …
• ‘h10: …
• In principle, you can add if statements to the test bench to check that
the calculator is producing the correct results
• Automated test benches
• Prints message and stops when it finds an error
• You can write other test benches to test the other parts of Part 1
• Debounce, Disp2cNum, …