XReactor 是用 Python 编写硬件测试的框架。你可以发送输入、等待时钟、检查结果, 再把重复的工作放进 Driver、Monitor 和参考模型。测试由 pytest 运行, 功能覆盖率和原生覆盖率可以在多进程回归后自动汇总。
第一次使用,建议从入门教程开始。 教程用一个 8 位累加器,先写出第一个通过和失败的测试,再逐步加入时钟、 流水线、自动检查和覆盖率。前半部分只需 Python,不需要 RTL 或仿真器。
需要 Python 3.11 或更新版本。在仓库根目录执行:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -e '.[test]'
python3 -m pytest -q examples/getting_started/test_accumulator.py::test_addition看到 1 passed 后,继续输入与时钟。
安装遇到问题时,查看环境准备。
xreactor run tests/ --workers 8 --output output/regression-001pytest-xdist 把测试分给独立进程,XReactor 汇总覆盖率并生成报告。 输出目录必须是新目录,避免两轮结果混在一起。默认不保留逐例覆盖率 JSON。 参数和产物说明见运行测试与汇总覆盖率。
纯 Python 示例使用 MemoryBackend。真实 DUT 可以使用 Picker 生成的 Python 包,
通过 xspcomm 提供的 XClock、XData 和 XTriggerEngine 接入。
驱动与检查代码仍由项目定义,不需要改成另一套测试写法。
先阅读原生后端与项目 DUT。 开发时所需的 xcomm 提交、包版本、ABI 和协议版本统一记录在 依赖清单,不要混用不同版本的生成包和运行库。
- 从零开始:安装、断言、输入、时钟和逐步练习。
- Driver、Monitor、 Agent 与参考模型:组织可复用的验证环境。
- Scoreboard:比较结果,关联流水线中的输入与输出。
- 功能覆盖率:定义需要测到的场景,查看和合并实际命中。
- 用类定义覆盖模型、 时序覆盖:组织较大的模型,统计跨周期事件。
- 运行测试与汇总覆盖率:多进程回归、报告和失败排查。
- 可运行示例、API 索引:按功能查代码。
完整目录见用户手册。参与开发请阅读 CONTRIBUTING.md。
python3 -m pip install -e '.[docs]'
mkdocs serve