Functional Verification of a SystemVerilog-Based Calculator

Functional Verification of Calculator Design II

This project focused on the functional verification of Calculator Design II, an extension of the original Calculator Design I. The new design significantly enhances the calculator’s processing capability by allowing multiple commands to be handled simultaneously. Unlike the first version, which allowed only one command per port at a time, this iteration enables up to four commands from each of the four ports, resulting in a theoretical maximum of 16 concurrent operations.

To accommodate this increased complexity, the design includes two internal arithmetic pipelines—one dedicated to addition and subtraction, and another for shift operations. Due to this architecture, commands may be executed out of order. To ensure proper command tracking and correct result correlation, a 2-bit tag system was implemented. This tag uniquely identifies each command and helps associate responses with their corresponding requests.

Technical Components and Implementation

Functional Verification Approach

To ensure the correctness of the Calculator Design II, we conducted a structured verification process using SystemVerilog. The verification environment included several key components:

Verification Strategy and Test Cases

Addition Tests

Subtraction Tests

Shift Operations

Results and Observations

During the verification process, the following functional bugs were identified:

Functional Coverage Analysis

To ensure comprehensive testing, coverage models were implemented:

Conclusion

This project provided valuable insight into the complexities of verifying a pipelined hardware design. By leveraging SystemVerilog-based verification methodologies, we successfully identified and documented key operational issues, ensuring the reliability of Calculator Design II. The structured testbench framework—comprising stimulus generation, transaction monitoring, and result validation—proved essential in detecting functional errors and verifying correct design behavior.

Through this project, we demonstrated the importance of rigorous verification in hardware design, ensuring correctness, efficiency, and robustness in digital arithmetic operations.

Project Requirements 1

View on mobile

Project Requirements 2

View on mobile

Project Report

View on mobile

Download Project Files

Download svfiles.zip