This project aims to add unit testing and fuzz testing to the CUGR (CUHK VLSI Global Router) project, a detailed routability-driven global router developed by the research team supervised by Prof. Evangeline F. Y. Young at The Chinese University of Hong Kong (CUHK). CUGR focuses on the final detailed routing results, adopting several efficient and effective methods for generating connected rectangles that guide the detailed router.
CUGR Github repository: https://github.com/cuhk-eda/cu-gr
The objective is to develop a comprehensive suite of unit tests and fuzz tests to ensure the correctness, stability, and robustness of the CUGR project. These tests will help identify potential issues and vulnerabilities in the codebase and ensure that the global router performs as expected.
- Analyze the CUGR project codebase to identify key components and functions that require testing.
- Develop unit tests for the identified components and functions using appropriate testing frameworks and libraries.
- Implement fuzz testing to identify vulnerabilities and unexpected behavior in the CUGR project. Fuzz testing involves providing invalid, unexpected, or random data as input to the software to find potential crashes, memory leaks, or other issues.
- Integrate the unit tests and fuzz tests into the CUGR project's build process, ensuring that all tests are executed and passed during the build.
The following technologies and libraries will be used for implementing unit tests and fuzz tests for the CUGR project:
- Google Test: A widely-used C++ testing framework for writing and executing unit tests.
- LibFuzzer: A library for coverage-guided fuzz testing, which can be used with LLVM's Clang compiler.
- AddressSanitizer: A fast memory error detector that can be used in conjunction with LibFuzzer to identify memory-related issues.
- Familiarize yourself with the CUGR project codebase and identify key components and functions that require testing.
- Set up the testing environment, including installing and configuring Google Test, LibFuzzer, and AddressSanitizer.
- Write and execute unit tests for the identified components and functions using Google Test.
- Implement fuzz testing using LibFuzzer and AddressSanitizer to identify vulnerabilities and unexpected behavior in the CUGR project.
- Integrate the unit tests and fuzz tests into the CUGR project's build process.
- Document the tests, including the test cases, the testing process, and any issues discovered and resolved during testing.
Week | Duration | Tasks |
---|---|---|
Week 1 | 5/4 - 5/10 |
|
Week 2 | 5/11 - 5/17 |
|
Week 3 | 5/18 - 5/24 |
|
Week 4 | 5/25 - 5/31 |
|
Week 5 | 6/1 - 6/7 |
|
- 311551118 | 倪子傑 | BillyNI-OUO
- 311551145 | 石孟祐 | yoyojs200602
- 311551129 | 耿鈺展 | ksh2027
- 311553048 | 李承翰 | darrenleeleelee1