Participating in this verification event can earn you a chance to win generous prizes. Registration Form
The process of participation is as shown below:
There is no limit to the number of team members for this event. It can be one or more. The final prize will be distributed to the team leader according to the team's points. During the event, the team name and the name of the team leader will be made public in the group.
In order to assess the capabilities of the participating teams, this event provides several DUTs with known bugs for the teams to perform verification tests. Teams that can find more than 80% of the bugs and can perform root cause analysis can qualify to participate. The number of bugs found will also become the corresponding team points.
Fork this repository, then set up the environment locally and participate in the testing tasks.
Tasks are described in the Issues of this repository. Team leaders sign up in the form of Issues under the Issues. The administrator will do the statistics, and then announce it in the group.
Decomposing test points and verification plans are important steps in the chip verification process, which directly affect the verification results. At this stage, you need to submit the corresponding report through PR, and the organizer will review and score the report.
Write test cases, the specific format can refer to the template in the tests
directory. Test cases need to cover the corresponding test points.
During the testing process, after discovering a bug, you need to analyze the bug.
You can submit bugs at any time through PR, but the organizer will only review bugs for a team once a day. The organizer will issue corresponding points based on the type and level of the bug.
Refer to the template NutShell Cache for writing.
Write PPT online for the defense of the entire verification task. The defense is organized centrally according to the completion situation of the team.
Source code address: FauFTB.sv Function description document: uFTB Branch Predictor Reference function point document: uFTB Function List
Source code address: FTB.sv Function description document: FTB Branch Predictor Reference function point document: FTB Function List
- Complete the code and document reading of the uFTB sub-predictor, understand the working principle and module functions of the uFTB. Clarify the structure of the FTB item cache used by the uFTB.
- Based on the given reference function points, improve the function points that uFTB needs to verify, and decompose specific test points for these function points. At the same time, explain the significance of each test point to verify the function points.
- Based on the decomposed test points, complete the test case writing for uFTB. Test cases need to cover all test points. At the same time, a detailed explanation of the test cases is required, including the purpose, input, output, expected results, and principles of the test cases.
- Complete the code writing of the test cases for uFTB, it is recommended to complete the writing of the reference model. Ensure that the test cases can run through the verification environment. In the coding process, the quality of the code needs to be ensured, including the readability, maintainability, and scalability of the code.
- Complete the running of the test cases for uFTB and generate a test report. The test report needs to include the running results of the test cases, code line coverage, function coverage, etc. The test report needs to be saved in the
tests/report
directory, and you can opentests/report/uFTB-yourId.html
in the browser to view the content of this test report. - Before the final submission, you need to check the test report to ensure that the test report meets the basic requirements for submitting PR.
Source code address: TageSC.sv Function description document: TAGE-SC Branch Predictor Reference function point document: TAGE-SC Function List
- Complete the code and document reading of the TageSC sub-predictor, understand the working principles and functions of the Tage and SC single modules, and then understand the overall functions of the TageSC module. Clarify the structure of the Tage and SC table items used, and the working principle of branch folding history.
- Based on the given reference function points, improve the function points that Tage, SC, TageSC need to verify, and decompose specific test points for these function points. At the same time, explain the significance of each test point to verify the function points.
- Based on the decomposed test points, complete the test case writing for TageSC. Test cases need to cover all test points. At the same time, a detailed explanation of the test cases is required, including the purpose, input, output, expected results, and principles of the test cases.
- Complete the code writing of the test cases for TageSC, it is required to complete the writing of the reference model. Ensure that the test cases can run through the verification environment. In the coding process, the quality of the code needs to be ensured, including the readability, maintainability, and scalability of the code.
- Complete the running of the test cases for TageSC and generate a test report. The test report needs to include the running results of the test cases, code line coverage, function coverage, etc. The test report needs to be saved in the
tests/report
directory, and you can opentests/report/TageSC-yourId.html
in the browser to view the content of this test report. - Before the final submission, you need to check the test report to ensure that the test report meets the basic requirements for submitting PR.
Source code address: ITTAGE.sv Function description document: ITTAGE Branch Predictor Reference function point document: ITTAGE Function List
- Complete the code and document reading of the ITTAGE sub-predictor, understand the working principles and functions of the ITTAGE. Clarify the structure of the Tage table items used by ITTAGE, understand the predictor structure of ITTAGE. Also understand the working principle of branch folding history.
- Based on the given reference function points, improve the function points that ITTAGE needs to verify, and decompose specific test points for these function points. At the same time, explain the significance of each test point to verify the function points.
- Based on the decomposed test points, complete the test case writing for ITTAGE. Test cases need to cover all test points. At the same time, a detailed explanation of the test cases is required, including the purpose, input, output, expected results, and principles of the test cases.
- Complete the code writing of the test cases for ITTAGE, it is required to complete the writing of the reference model. Ensure that the test cases can run through the verification environment. In the coding process, the quality of the code needs to be ensured, including the readability, maintainability, and scalability of the code.
- Complete the running of the test cases for ITTAGE and generate a test report. The test report needs to include the running results of the test cases, code line coverage, function coverage, etc. The test report needs to be saved in the
tests/report
directory, and you can opentests/report/ITTAGE-yourId.html
in the browser to view the content of this test report. - Before the final submission, you need to check the test report to ensure that the test report meets the basic requirements for submitting PR.
Translate the following markdown from Chinese to American English:
Source code address: RAS.sv Function description document: RAS Branch Predictor Reference function point document: RAS Function List
- Complete the code and document reading of the RAS sub-predictor, understand the working principle and module function of RAS. Understand the working principle of the stack frame when the program runs, and then clarify the working principle of the RAS stack of RAS. Most clearly, the RAS predictor provides predictions for call and ret instructions.
- Based on the given reference function points, improve the function points that RAS needs to verify, and decompose specific test points for these function points. At the same time, explain the significance of each test point to the verification function point.
- Based on the decomposed test points, complete the test case writing for RAS. The test cases need to cover all test points. At the same time, a detailed explanation of the test cases is required, including the purpose, input, output, expected results, and principles of the test cases.
- Complete the code writing of the RAS test cases, and require the completion of writing the reference model. Ensure that the test cases can pass the verification environment. During the coding process, the quality of the code needs to be ensured, including the readability, maintainability, and scalability of the code.
- Complete the running of the RAS test cases and generate a test report. The test report needs to include the running results of the test cases, code line coverage, function coverage, and other information. The test report needs to be saved in the
tests/report
directory, and you can opentests/report/RAS-yourId.html
in the browser to view the content of this test report. - Before the final submission, you need to check the test report to ensure that the test report meets the basic requirements for submitting PR.
Source code address: Predictor.sv & Composer.sv Function description document: BPU Top Module Reference function point document: BPU Top Function List
- Complete the code and document reading of the BPU Top sub-predictor, understand the working principle and module function of BPU Top. Understand the predictor structure of BPU Top, clarify how the BPU Top predictor provides predictions for different types of branches. At the same time, understand how BPU Top interacts with the external FTQ module.
- Based on the given reference function points, improve the function points that BPU Top needs to verify, and decompose specific test points for these function points. At the same time, explain the significance of each test point to the verification function point.
- Based on the decomposed test points, complete the test case writing for BPU Top. The test cases need to cover all test points. At the same time, a detailed explanation of the test cases is required, including the purpose, input, output, expected results, and principles of the test cases.
- Complete the code writing of the BPU Top test cases, and require the completion of writing the reference model and the FTQ simulation verification environment. Ensure that the test cases can pass the verification environment. During the coding process, the quality of the code needs to be ensured, including the readability, maintainability, and scalability of the code.
- Complete the running of the BPU Top test cases and generate a test report. The test report needs to include the running results of the test cases, code line coverage, function coverage, and other information. The test report needs to be saved in the
tests/report
directory, and you can opentests/report/BPU-Top-yourId.html
in the browser to view the content of this test report. - Before the final submission, you need to check the test report to ensure that the test report meets the basic requirements for submitting PR.
- Complete function point and test point decomposition: After completing the reading work of
1.
, proceed to2.
. You can start the following work after communicating with us to confirm the completion of2.
. - Complete test case communication: After completing
3.
, communicate with us to confirm that the behavior of3.
meets expectations and the principle is correct before you can start the following work. - Complete the test report: After the process of
4.
and5.
, a test report will be generated. When the report finally meets the basic requirements for PR submission after continuous iteration, and we review and pass, it is considered that the verification task is completed. During the process of completing the iteration, if you encounter bugs, you need to communicate with us, and we will give corresponding points. At the same time, if there are questions worth asking, you can discuss them in the discussion group.
Coverage requirements:
- The code line coverage needs to be greater than 95%, and explain the reasons for the uncovered code.
- The function coverage must reach 100%
- The coverage is obtained by running the verification environment, and the report and generation logic cannot be modified
Document requirements:
- Reasonably decompose the function points into test points. Function points can be added by yourself, but the original function points cannot be deleted.
- The designed test cases must cover all test points and function points
- Please write the test document according to the template
- After receiving multiple verification tasks, their verification reports need to be written separately
Ways to get points:
- Reasonable test point decomposition, reasonable verification plan, standardized verification document
- Find out the bug and analyze the cause of the bug, get points according to the bug confirmation level
- Fix errors in the project's documents and code, and get points according to the error level
- Submit the final verification report, get points according to the report quality, coverage
- Final report score