Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏗️ SystemVerilog Hardware Verification Portfolio

📢 Portfolio Disclaimer

Note on Academic Integrity: The following projects are based on advanced lab exercises completed at the University of Applied Sciences Bremen. To respect the intellectual property of Prof. Dr.-Ing. Stefan Wolter and the university's academic policies, the original assignment PDFs and restricted source files (such as professor-provided VHDL RTL) are not included in this repository.

All code presented here represents my own original implementation of verification environments, testbenches, and SystemVerilog Assertions (SVA) used to achieve 100% functional and code coverage, using the basic framework provided as part of the course.

💻 Verification Environment & Toolchain

To replicate these results, the following environment is required:

  • Xilinx Vivado/ISE: Used primarily for the underlying hardware libraries and initial design synthesis.

  • OVL (Open Verification Library): Utilized for standard checker instantiations to ensure design protocol compliance.

📂 Lab Summaries

Lab 1: Synchronous FIFO Verification

  • Focus: Protocol verification of a VHDL-based synchronous FIFO.

  • Task: Integrated an OVL FIFO Checker to monitor for data integrity, overflow, and underflow.

  • Highlight: Developed a complete simulation script (.do file) to automate the compilation of VHDL and SystemVerilog files into a unified work library.

Lab 2: 4-Bit Gray Counter SVA

  • Focus: Verifying non-binary counter transitions and asynchronous resets.

  • Task: Authored Immediate Assertions for asynchronous reset timing and Concurrent Assertions to ensure the dout followed the 16-word Gray code sequence.

  • Highlight: Used the Assertion Thread Viewer (ATV) to debug overlapping timing requirements for the enable control.

Lab 3: FM0 Encoder for RFID

  • Focus: Black-box verification of a complex serial transmitter.

  • Task: Verified the 18-bit pilot-tone preamble and the specific FM0 "biphase space" encoding rules (where a '0' requires a mid-bit transition).

  • Highlight: Managed state-machine verification for a one-hot encoded FSM with six distinct states.

Lab 4: Class-Based Testbench (FPU)

  • Focus: Transitioning to structured, object-oriented verification.

  • Task: Built a self-checking environment for an IEEE-754 FPU including a Stimulus Generator, Driver, Monitor, and Comparator.

  • Highlight: Implemented DPI-C (Direct Programming Interface) to link a Golden Model written in C to the SystemVerilog testbench for result comparison.

Lab 5: Constrained Random Testing

  • Focus: Automating test generation for edge-case detection.

  • Task: Developed SystemVerilog Constraints to specifically target "corner cases" in floating-point math, such as NaN (Not a Number), Infinity, and Zero.

  • Highlight: Used randcase to weight the distribution of operands, ensuring the simulator hit difficult-to-reach logic in the FPU.

Lab 6: Functional Coverage & Verification Management

  • Focus: Closing the "verification loop" to ensure no feature went untested.

  • Task: Defined Covergroups and Coverpoints for all operations and rounding modes.

  • Highlight: Achieved 100% merged code and functional coverage by mapping simulation results to a formal Verification Plan (.xml) using the Questa Verification Tracker

🏁 Conclusion & Key Takeaways

Completing this series of six intensive labs provided a comprehensive mastery of the Hardware Verification Life Cycle. Through this curriculum, I transitioned from basic signal checking to managing complex, production-grade verification environments.

🧠 Core Competencies Developed

  • Advanced Assertion-Based Verification (ABV): I learned to move beyond simple waveforms by implementing SystemVerilog Assertions (SVA) and OVL Checkers to catch protocol violations in real-time.

  • Object-Oriented Verification (OOV): By building a class-based testbench for a Floating Point Unit, I mastered the separation of concerns between Stimulus Generation, Driving, and Monitoring.

  • Golden Model Integration: I gained experience in Mixed-Language Verification by using the DPI-C interface to verify RTL behavior against a C-based reference model, a critical skill for verifying complex algorithms.

  • Automation & Toolchain Proficiency: I developed a "script-first" workflow using Tcl/Do scripts to automate repetitive compilation and simulation tasks in Questa, ensuring a reproducible and efficient verification environment

About

Code examples and tasks for a course titled 'Advanced Hardware Verification' using SystemVerilog for hardware verification of different DUT's

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages