diff --git a/image/600480230.jpg b/.github/image/600480230.jpg similarity index 100% rename from image/600480230.jpg rename to .github/image/600480230.jpg diff --git a/image/ov-pipline.drawio b/.github/image/ov-pipline.drawio similarity index 100% rename from image/ov-pipline.drawio rename to .github/image/ov-pipline.drawio diff --git a/image/ov-pipline.svg b/.github/image/ov-pipline.svg similarity index 100% rename from image/ov-pipline.svg rename to .github/image/ov-pipline.svg diff --git a/image/test-report.png b/.github/image/test-report.png similarity index 100% rename from image/test-report.png rename to .github/image/test-report.png diff --git a/Readme_cn.md b/Readme_cn.md index e834305..7994536 100644 --- a/Readme_cn.md +++ b/Readme_cn.md @@ -61,8 +61,7 @@ 请访问以下链接报名参与本活动: -https://www.example.com - +[报名问卷](https://iz9a87wn37.feishu.cn/share/base/form/shrcnwpiyWaVUzyo47QdPBGy5Yd) ## 加入讨论群 diff --git a/doc/env_cn.md b/doc/env_cn.md index 8239ab0..1cadfcc 100644 --- a/doc/env_cn.md +++ b/doc/env_cn.md @@ -128,7 +128,7 @@ make TEST=uFTB_raw run 该命令会自动运行 `uFTB_raw` 测试用例,并生成波形、覆盖率和测试报告等信息。测试报告会被保存在 `tests/report` 目录中,可通过浏览器打开 `tests/report/report.html` 查看本次测试报告内容,测试报告样式如下图所示,其余文件也会在 `tests` 目录下生成。
- +
若需要一次性运行所有测试用例,可以运行如下命令: diff --git a/doc/join_cn.md b/doc/join_cn.md index 39bcd00..0eaf259 100644 --- a/doc/join_cn.md +++ b/doc/join_cn.md @@ -6,7 +6,7 @@ 参与验证的流程如下图所示: - + #### (0)在线报名 @@ -48,12 +48,75 @@ Fork本仓库,然后在本地进行环境搭建,参与测试任务。 编写PPT在线进行对整个验证任务的答辩。答辩根据给队伍的完成情况集中组织。 +## 任务 + +### uFTB + +1. 完成对 uFTB 子预测器的代码及文档阅读,了解 uFTB 的工作原理及模块功能。明确 uFTB 使用的 FTB 项缓存的结构。 +2. 根据给出的参考功能点,完善 uFTB 需要验证的功能点,并针对这些功能点分解出具体的测试点。同时解释每个测试点对验证功能点的意义。 +3. 依据分解出的测试点,完成对 uFTB 的测试用例编写。测试用例需要覆盖到所有的测试点。同时,需要对测试用例进行详细的说明,包括测试用例的目的、输入、输出、预期结果及原理等。 +4. 完成对 uFTB 的测试用例的代码编写,建议完成**参考模型的编写**。确保测试用例能够通过验证环境的运行。在编码的过程中,需要保证代码的质量,包括代码的可读性、可维护性、可扩展性等。 +5. 完成对 uFTB 的测试用例的运行,生成测试报告。测试报告需要包括测试用例的运行结果、代码行覆盖率、功能覆盖率等信息。测试报告需要保存在 `tests/report` 目录中,可通过浏览器打开 `tests/report/uFTB-yourId.html` 查看本次测试报告内容。 +6. 最终提交前,需要对测试报告进行检查,确保测试报告符合提交PR的基本要求。 + +### TageSC + +1. 完成对 TageSC 子预测器的代码及文档阅读,了解 Tage 及 SC 单个模块的工作原理及功能,再了解 TageSC 整体模块的功能。明确使用的 Tage 表项及 SC 表项的结构,以及分支折叠历史的工作原理。 +2. 根据给出的参考功能点,完善 Tage、SC、TageSC 需要验证的功能点,并针对这些功能点分解出具体的测试点。同时解释每个测试点对验证功能点的意义。 +3. 依据分解出的测试点,完成对 TageSC 的测试用例编写。测试用例需要覆盖到所有的测试点。同时,需要对测试用例进行详细的说明,包括测试用例的目的、输入、输出、预期结果及原理等。 +4. 完成对 TageSC 的测试用例的代码编写,要求完成**参考模型的编写**。确保测试用例能够通过验证环境的运行。在编码的过程中,需要保证代码的质量,包括代码的可读性、可维护性、可扩展性等。 +5. 完成对 TageSC 的测试用例的运行,生成测试报告。测试报告需要包括测试用例的运行结果、代码行覆盖率、功能覆盖率等信息。测试报告需要保存在 `tests/report` 目录中,可通过浏览器打开 `tests/report/TageSC-yourId.html` 查看本次测试报告内容。 +6. 最终提交前,需要对测试报告进行检查,确保测试报告符合提交PR的基本要求。 + +### FTB + +1. 完成对 FTB 子预测器的代码及文档阅读,了解 FTB 的工作原理及模块功能。明确 FTB 使用的 FTB 项缓存的结构,了解条件分支指令和间接跳转指令的不同。 +2. 根据给出的参考功能点,完善 FTB 需要验证的功能点,并针对这些功能点分解出具体的测试点。同时解释每个测试点对验证功能点的意义。 +3. 依据分解出的测试点,完成对 FTB 的测试用例编写。测试用例需要覆盖到所有的测试点。同时,需要对测试用例进行详细的说明,包括测试用例的目的、输入、输出、预期结果及原理等。 +4. 完成对 FTB 的测试用例的代码编写,建议完成**参考模型的编写**。确保测试用例能够通过验证环境的运行。在编码的过程中,需要保证代码的质量,包括代码的可读性、可维护性、可扩展性等。 +5. 完成对 FTB 的测试用例的运行,生成测试报告。测试报告需要包括测试用例的运行结果、代码行覆盖率、功能覆盖率等信息。测试报告需要保存在 `tests/report` 目录中,可通过浏览器打开 `tests/report/FTB-yourId.html` 查看本次测试报告内容。 +6. 最终提交前,需要对测试报告进行检查,确保测试报告符合提交PR的基本要求。 + +### ITTAGE + +1. 完成对 ITTAGE 子预测器的代码及文档阅读,了解 ITTAGE 的工作原理及模块功能。明确 ITTAGE 使用的 Tage 表项的结构,了解 ITTAGE 的预测器结构。同时了解分支折叠历史的工作原理。 +2. 根据给出的参考功能点,完善 ITTAGE 需要验证的功能点,并针对这些功能点分解出具体的测试点。同时解释每个测试点对验证功能点的意义。 +3. 依据分解出的测试点,完成对 ITTAGE 的测试用例编写。测试用例需要覆盖到所有的测试点。同时,需要对测试用例进行详细的说明,包括测试用例的目的、输入、输出、预期结果及原理等。 +4. 完成对 ITTAGE 的测试用例的代码编写,要求完成**参考模型的编写**。确保测试用例能够通过验证环境的运行。在编码的过程中,需要保证代码的质量,包括代码的可读性、可维护性、可扩展性等。 +5. 完成对 ITTAGE 的测试用例的运行,生成测试报告。测试报告需要包括测试用例的运行结果、代码行覆盖率、功能覆盖率等信息。测试报告需要保存在 `tests/report` 目录中,可通过浏览器打开 `tests/report/ITTAGE-yourId.html` 查看本次测试报告内容。 +6. 最终提交前,需要对测试报告进行检查,确保测试报告符合提交PR的基本要求。 + + +### RAS + +1. 完成对 RAS 子预测器的代码及文档阅读,了解 RAS 的工作原理及模块功能。了解程序运行时栈帧的工作原理,再明确 RAS 的 RAS 栈的工作原理。最明确 RAS 的预测器如何为 call 和 ret 指令提供预测。 +2. 根据给出的参考功能点,完善 RAS 需要验证的功能点,并针对这些功能点分解出具体的测试点。同时解释每个测试点对验证功能点的意义。 +3. 依据分解出的测试点,完成对 RAS 的测试用例编写。测试用例需要覆盖到所有的测试点。同时,需要对测试用例进行详细的说明,包括测试用例的目的、输入、输出、预期结果及原理等。 +4. 完成对 RAS 的测试用例的代码编写,要求完成**参考模型的编写**。确保测试用例能够通过验证环境的运行。在编码的过程中,需要保证代码的质量,包括代码的可读性、可维护性、可扩展性等。 +5. 完成对 RAS 的测试用例的运行,生成测试报告。测试报告需要包括测试用例的运行结果、代码行覆盖率、功能覆盖率等信息。测试报告需要保存在 `tests/report` 目录中,可通过浏览器打开 `tests/report/RAS-yourId.html` 查看本次测试报告内容。 +6. 最终提交前,需要对测试报告进行检查,确保测试报告符合提交PR的基本要求。 + +### BPU Top + +1. 完成对 BPU Top 子预测器的代码及文档阅读,了解 BPU Top 的工作原理及模块功能。了解 BPU Top 的预测器结构,明确 BPU Top 的预测器如何为不同类型的分支提供预测。同时了解 BPU Top 如何与外界的 FTQ 模块进行交互。 +2. 根据给出的参考功能点,完善 BPU Top 需要验证的功能点,并针对这些功能点分解出具体的测试点。同时解释每个测试点对验证功能点的意义。 +3. 依据分解出的测试点,完成对 BPU Top 的测试用例编写。测试用例需要覆盖到所有的测试点。同时,需要对测试用例进行详细的说明,包括测试用例的目的、输入、输出、预期结果及原理等。 +4. 完成对 BPU Top 的测试用例的代码编写,要求完成**参考模型,以及FTQ模拟验证环境的编写**。确保测试用例能够通过验证环境的运行。在编码的过程中,需要保证代码的质量,包括代码的可读性、可维护性、可扩展性等。 +5. 完成对 BPU Top 的测试用例的运行,生成测试报告。测试报告需要包括测试用例的运行结果、代码行覆盖率、功能覆盖率等信息。测试报告需要保存在 `tests/report` 目录中,可通过浏览器打开 `tests/report/BPU-Top-yourId.html` 查看本次测试报告内容。 +6. 最终提交前,需要对测试报告进行检查,确保测试报告符合提交PR的基本要求。 + +## 里程碑 + +1. 完成功能点及测试点分解:经过`1.`的阅读工作完成学习后,进行`2.`。与我们进行沟通确认完成`2.`后才可以开始后面的工作。 +2. 完成测试用例沟通:完成`3.`后,与我们进行沟通确认完成`3.`的行为符合预期及原理正确后才可以开始后面的工作。 +3. 完成测试报告:经过`4.`和`5.`的过程,会生成一个测试报告。当经过不断迭代,报告最终满足PR提交基本要求后,同时我们审核通过,即认为验证任务完成。在完成迭代的过程中,如果遇到bug需要和我们进行沟通,我们会给予相应的积分。同时如果有**值得提问的问题**,可以在讨论群中进行讨论。 + ## PR提交基本要求 覆盖率要求: -1. 代码行覆盖率需要大于 95% +1. 代码行覆盖率需要大于 95% ,并解释未覆盖到的代码原因。 1. 功能覆盖率必要达到 100% 1. 覆盖率有验证环境运行得到,不可对报告和生成逻辑进行修改 @@ -70,74 +133,4 @@ Fork本仓库,然后在本地进行环境搭建,参与测试任务。 1. 验出bug并分析出bug原因,按bug确认等级获取积分 1. 修复本项目中文档,代码中出现的错误,按错误等级获取积分 1. 提交最终验证报告,按报告质量,覆盖率获得积分 -1. 最终汇报得分 - -## 任务里程碑 - -### uFTB - -1. 驱动 uFTB ,并正常读取预测块信息、获取更新信息、输出预测信息。 -2. 完成 Refrence Model 的编写,能够正确输出预测信息,且更新策略与RTL一致。 -3. 完成 uFTB 的测试用例编写,覆盖 50% 功能点。 -4. 完成 uFTB 的测试用例编写,覆盖 100% 功能点。 -5. 完成 uFTB 的测试用例编写,覆盖 100% 功能点,且代码行覆盖率大于 95%。 -6. 解释未覆盖的代码行。 -7. 解释功能点的测试用例设计,如何保证覆盖了该功能。 -8. 根据要求,提交最终验证报告。 - -### TageSC - -1. 驱动 TageSC ,并正常读取预测块信息、获取更新信息、输出预测信息。 -2. 完成 Tage 的 Refrence Model 编写,能够正确输出预测信息,且更新策略与RTL一致。 -3. 完成 SC 的 Refrence Model 编写,能够正确输出预测信息,且更新策略与RTL一致。 -4. 完成 TageSC 的测试用例编写,覆盖 50% 功能点。 -5. 完成 TageSC 的测试用例编写,覆盖 100% 功能点。 -6. 完成 TageSC 的测试用例编写,覆盖 100% 功能点,且代码行覆盖率大于 95%。 -7. 解释未覆盖的代码行。 -8. 解释功能点的测试用例设计,如何保证覆盖了该功能。 -9. 根据要求,提交最终验证报告。 - -### FTB - -1. 驱动 FTB ,并正常读取预测块信息、获取更新信息、输出预测信息。 -2. 完成 FTB 的 Refrence Model 编写,能够正确输出预测信息,且更新策略与RTL一致。 -3. 完成 FTB 的测试用例编写,覆盖 50% 功能点。 -4. 完成 FTB 的测试用例编写,覆盖 100% 功能点。 -5. 完成 FTB 的测试用例编写,覆盖 100% 功能点,且代码行覆盖率大于 95%。 -6. 解释未覆盖的代码行。 -7. 解释功能点的测试用例设计,如何保证覆盖了该功能。 -8. 根据要求,提交最终验证报告。 - -### ITTAGE - -1. 驱动 ITTAGE ,并正常读取预测块信息、获取更新信息、输出预测信息。 -2. 完成 ITTAGE 的 Refrence Model 编写,能够正确输出预测信息,且更新策略与RTL一致。 -3. 完成 ITTAGE 的测试用例编写,覆盖 50% 功能点。 -4. 完成 ITTAGE 的测试用例编写,覆盖 100% 功能点。 -5. 完成 ITTAGE 的测试用例编写,覆盖 100% 功能点,且代码行覆盖率大于 95%。 -6. 解释未覆盖的代码行。 -7. 解释功能点的测试用例设计,如何保证覆盖了该功能。 -8. 根据要求,提交最终验证报告。 - -### RAS - -1. 驱动 RAS ,并正常读取预测块信息、获取更新(commit)信息、输出预测信息。 -2. 完成 RAS 的 Refrence Model 编写,能够正确输出预测信息,且更新策略与RTL一致。 -3. 完成 RAS 的测试用例编写,覆盖 50% 功能点。 -4. 完成 RAS 的测试用例编写,覆盖 100% 功能点。 -5. 完成 RAS 的测试用例编写,覆盖 100% 功能点,且代码行覆盖率大于 95%。 -6. 解释未覆盖的代码行。 -7. 解释功能点的测试用例设计,如何保证覆盖了该功能。 -8. 根据要求,提交最终验证报告。 - -### BPU Top - -1. 驱动 BPU Top ,并且能正常控制各个子预测器。 -2. 完成驱动 BPU Top 所需的 FTQ 环境开发,并使用该环境结合真实 Trace 进行驱动。 -2. 完成 BPU Top 的 Refrence Model 编写,能够生成符合文档描述的流水线控制信号及重定向信号。 -3. 完成 BPU Top 的测试用例编写,覆盖 50% 功能点。 -4. 完成 BPU Top 的测试用例编写,覆盖 100% 功能点。 -5. 完成 BPU Top 的测试用例编写,覆盖 100% 功能点,且代码行覆盖率大于 95%。 -6. 解释未覆盖的代码行。 -7. 解释功能点的测试用例设计,并解释测试用例的运行流程。 -8. 根据要求,提交最终验证报告。 \ No newline at end of file +1. 最终汇报得分 \ No newline at end of file diff --git a/image b/image new file mode 120000 index 0000000..737f556 --- /dev/null +++ b/image @@ -0,0 +1 @@ +.github/image \ No newline at end of file