
硬件开发网络嵌入式【免费下载链接】taxiAXI, AXI stream, Ethernet, and PCIe components in System Verilog项目地址https://gitcode.com/gh_mirrors/taxi7/taxi点击查看免费下载Taxi 是一个用 System Verilog 编写的 AXI、AXI stream、Ethernet 与 PCIe 组件库即 Corundum 网卡、Zircon 协议栈的底层积木每个模块都配有完整的 cocotb 测试平台。本文带你完整走通Taxi 回归测试工作流安装 cocotb 与 Verilator 环境、看懂测试目录结构再掌握 pytest、tox、cocotb Makefile 三种运行方式最后学会像 CI 一样把回归任务拆成 20 组并行执行。环境准备安装 cocotb 与 Verilator 依赖Taxi 的仿真基于两大支柱VerilatorSystem Verilog 仿真器cocotbPython 驱动的测试平台。运行测试前需要安装以下软件包版本以 tox.ini 为准组件作用参考版本Verilator编译并运行 System Verilog 仿真v5.050CI 所用版本cocotbPython 协程驱动的 HDL 测试框架2.0.1cocotb-test让 pytest 直接调用 cocotb 仿真0.2.6cocotb-bus总线抽象辅助库0.3.0cocotbext-axi / eth / uart / pcie / i2c各协议的驱动与监视器见 tox.inipytest pytest-xdist pytest-split测试运行与并行拆分8.3.4 / 3.6.1 / 0.10.0安装 Verilator以 Ubuntu 为例sudo apt install verilatorPython 依赖可以用 pip 手动安装也可以交给 tox 自动处理见下文pip install pytest pytest-xdist pytest-split \ cocotb cocotb-bus cocotb-test \ cocotbext-axi cocotbext-eth cocotbext-uart \ cocotbext-pcie cocotbext-i2c scapy 推荐用 tox 或虚拟环境隔离依赖避免污染系统 Python。看懂 Taxi 测试目录结构tb 文件夹三件套Taxi 按功能模块组织代码src/ 下的axi、axis、eth、dma、pcie、lss等。以taxi_axis_fifo为例每个测试目录都遵循统一的三件套结构src/axis/tb/taxi_axis_fifo/ ├── Makefile # cocotb make 流程SIM、WAVES、参数配置 ├── test_taxi_axis_fifo.py # cocotb 测试 pytest 用例含参数矩阵 └── test_taxi_axis_fifo.sv # 仿真顶层把 RTL 例化进 cocotb 顶层Makefile如 src/axis/tb/taxi_axis_fifo/Makefile声明SIM ? verilator指定 RTL 源文件并通过PARAM_*导出模块参数最终 include cocotb 的Makefile.sim。test_xxx.py上半部分是cocotb.test()协程测试发帧、收帧、断言下半部分是 cocotb-test 的 pytest 用例通过pytest.mark.parametrize展开出大量参数组合如数据位宽 8/16/32/64 × 多种 FIFO 配置见 src/axis/tb/taxi_axis_fifo/test_taxi_axis_fifo.py。test_xxx.sv仿真顶层 wrapper将 DUT 例化其中供 cocotb 访问。另外注意每个模块下的lib/taxi是一个指向仓库根的符号链接用于把整个仓库的源文件纳入仿真编译路径无需特殊处理。三种运行回归测试的方式Taxi 官方支持三种运行方式README.md 中的 Testing 一节有说明灵活选择即可方式一pytest 直接运行单个测试用例开发调试时最常用——只跑一个模块甚至一个参数组合# 在仓库根目录执行只跑 taxi_axis_fifo 这一个模块 pytest src/axis/tb/taxi_axis_fifo --verbose # 用 -k 精确过滤参数组合 pytest src/axis/tb/taxi_axis_fifo --verbose -k data_w8pytest 配置来自 tox.initestpaths src让 pytest 递归收集src/下所有tb/测试norecursedirs lib则跳过符号链接的 lib 目录避免重复。每个参数组合会编译一个独立的sim_build目录并缓存重复运行无需重新编译。方式二tox 一键运行完整回归tox 会自动创建隔离的 Python 虚拟环境并装好全部依赖然后执行pytest -n auto --verbose-n auto由 pytest-xdist 提供按 CPU 核数并行pip install tox # 在项目根目录运行全部回归测试 tox想覆盖默认参数比如限制并行数直接在后面追加即可tox -- -n 4 --verbose方式三cocotb Makefile 单独仿真一个模块不走 pytest直接用 make 驱动 cocotb适合只想快速复现单个用例并查看波形的场景# 进入某个测试目录 cd src/axis/tb/taxi_axis_fifo # 用 Verilator 仿真Makefile 默认 SIMverilator make SIMverilator # 打开 FST 波形便于用 GTKWave 等工具查看 make SIMverilator WAVES1WAVES1会给 Verilator 加上--trace-fst并导出波形文件Makefile 还支持SIMicarus等其它模拟器切换。像 CI 一样并行pytest-split 拆分 20 组回归完整回归包含数百个用例每个用例都是一次完整的 Verilator 编译仿真官方 CI.github/workflows/regression-tests.yml的策略是把全部测试按历史耗时拆成 20 组在 20 个并行 runner 上各跑一组。本地可以照抄这条命令--splitting-algorithm least_duration基于仓库中的 .test_durations 耗时数据做均衡分配tox -- -n auto --verbose --splits 20 --group 1 --splitting-algorithm least_duration把--group 1换成 2~20 就是其余各组。如果你在自己的机器上跑一般只需tox -- -n auto --verbose让所有核火力全开即可。常见问题与调试验招首次运行很慢正常。每个参数组合都要单独编译一份 Verilator 仿真二进制sim_build/目录后续重跑会命中缓存显著加速。想改参数调试直接改对应tb/*/Makefile里的PARAM_*值或 pytest 用例里的parameters字典再用方式三 make 单独跑。想换模拟器Makefile 通过SIM变量切换verilator / icarusicarus 下参数以-P形式注入verilator 下以-G形式注入Makefile 已自动处理。产物不用提交.gitignore已忽略sim_build、*.fst、results.xml等仿真产物。贡献或学习测试写法任意tb/目录都是完整范例例如 src/axi/tb/taxi_axi_interconnect/ 展示了多主多从互联的测试组织方式。按这套工作流从单个模块的快速调试到全量回归并行验证Taxi 的测试体系都能从容应对 。赞分享硬件开发网络嵌入式【免费下载链接】taxiAXI, AXI stream, Ethernet, and PCIe components in System Verilog项目地址https://gitcode.com/gh_mirrors/taxi7/taxi点击查看免费下载相关推荐Pylint 测试启动指南pytest、tox 与 Primer 回归测试全解析Pylint 测试启动指南pytest、tox 与 Primer 回归测试全解析 本文聚焦 Pylint 仓库的测试运行体系围绕 launching_tes静态分析代码质量Lint开发工具Detectron2 测试指南单元测试与端到端回归测试的完整运行方法Detectron2 测试指南单元测试与端到端回归测试的完整运行方法 本文是 Detectron2 仓库中 tests/README.md https://l人工智能计算机视觉深度学习Conductor 工作流单元测试与回归测试实战指南Conductor 工作流单元测试与回归测试实战指南 工作流编排引擎 Conductor 提供了一套完整的测试机制允许开发者不启动任何 Worker 程序仅工作流自动化任务调度后端上一篇LocalAGI安全最佳实践本地数据处理与模型隔离技巧下一篇终极指南Windows上运行安卓应用的完整解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考