Sipeed SLogic 系列逻辑分析仪产线产测工具,数据驱动多产品:SLogic16U3、SLogic32U3 及未来产品。
新增产品 = 在 resources/products/ 加一份 TOML 档案 + 按约定放置夹具位流(有夹具的产品),无需改代码(详见 resources/README.md)。
| 工位 | 工具 | 接什么 | 做什么 |
|---|---|---|---|
| ① JTAG 烧录 | 另行提供(不在本工具内) | Gowin 烧录器 + 空板 | eFuse 写入 AES 密钥 → 烧 DFU 底包 |
| ② OTA 烧应用固件 | 批量 OTA 网页工具 https://slogic.sipeed.com/ota/ | 多块 DFU 板(USB2 即可) | 并行烧 app 固件;前提是①已完成(DFU 底包 + 已加密) |
| ③ 产测 | 本工具 | 被测板(运行 app 固件)+ 信号源夹具 + 一个 5G 口 | 32U3:先经 USB RECONFIG 切到 DFU 再切回 APP → 10G 链路全测 → 提示换插 5G 口 → 5G 链路再全测,全部通过才 PASS;16U3:同一夹具(转接线接 CH0..CH15),5G 链路测一轮 |
本工具只负责③产测。点 开始 即"布防":每接入一块被测板, 工具自动识别产品并跑完全部步骤;结论以大卡片显示在窗口中央,直到下一块板接入。点 停止 撤防(运行中则取消)。 撤防时把鼠标移到步骤条上的某一步、点击即可对最近识别的板单步执行。
界面:顶栏(语言 / 主题 / 复位 / 开始·停止)→ 产品与设备状态(含本次启动以来的通过/失败计数)→ 横向步骤条 → 中央结论区 → 底部可展开的「报告 / 运行日志 / 环境准备」。中央结论区按状态显示:
| 状态 | 显示 |
|---|---|
| 待机 / 等待接入 | 就绪清单:分析仪(台数、链路速率)、夹具串口、sigrok-cli、设备权限(Linux udev),缺什么一眼可见 |
| 执行中 | 当前在做什么(哪个模式、通道数 × 采样率、阈值)+ 进度条;模式矩阵(每轮链路 × 各模式)逐格变成通过/失败 |
| 需要操作 | 操作提示(如"换插 5G 口"),卡片描边呼吸提示 |
| PASS / FAIL | 结论 + 产品·SN·链路·耗时,模式矩阵保留(悬停失败格子看原因) |
-
只有通过 / 失败两种结论:判不了(采不到、解码不出、测不了)一律算失败,没有"跳过""覆盖"之类的中间状态。
-
失败原因就近显示:失败步骤下方直接写简要原因(哪个模式、哪几路),结论卡片同步显示;完整明细在「报告」里。
-
重试:失败步骤下方有「重试」按钮,由操作员决定是否重跑(只在撤防、或布防后板子还没拔时可用), 会连同它后面依赖它的待执行步骤一起重跑(如 10G 某步重试通过后继续换插 5G)。工具不会自己重试失败的步骤; 唯一的自动重试是采集时主机侧的瞬时错误(USB 传输/超时类),最多 3 次,并在报告里注明。分析仪卡死(stall)不自动重试。
-
复位:清空结果回到待机,并复位台架:结束残留的 sigrok-cli、检查夹具(不应答则重新载入位流)并切回 M0。 分析仪不做 USB 复位(实测 32U3 在 10G 口上被复位后会掉线,需重新拔插);分析仪异常请人工拔插。 底栏展开后拖动它上方的小把手可调高度(会记住)。 主题默认跟随系统明暗,也可在顶栏手动切换(会记住);切换语言或主题不会丢失当前步骤状态、结论与日志。
-
DFU/APP 来回切换(
[usb] reconfig = true,目前只有 32U3):第一步向板子发 USB RECONFIG 切到 DFU、再发一次切回 APP, 每次都要在 30 s 内以目标模式重新枚举、且是主机上唯一的 SLogic,切回 APP 后 USB 序列号(固件标识)不变; 失败即 FAIL,不再测 Mx。实测一次来回 Linux 约 1.5 s、Windows 约 2.3 s。16U3 不支持 RECONFIG,没有这一步。 -
逐台测:sigrok-cli 无法在多台分析仪中选定一台(驱动不支持
conn=),所以主机上同时只能有一台被测分析仪;多于一台时工具会提示而不开测。 -
逐轮链路测试(
product.toml的[usb] links,如 32U3 =["10G", "5G"]):第一轮是门槛,达不到直接 FAIL、不进入图案测试;之后每轮在结论卡片上提示把线换到对应速率的口,检测到该速率重新枚举后自动继续(固件暂无降速命令,换口是人工的)。各轮用各自的采集配置([[plan]]的configs带link标签:5G 下驱动限速,32U3 为 4ch@800 / 8ch@400 / 16ch@200 / 32ch@100)。 -
5G 轮的接法:换一根只支持 5G 的线直插主机口(或主机原生 USB 3.0 口),不要经过 Hub。实测经 Hub 接 5G 时,M5(旧夹具位流下 27 路 1 kHz 同时翻转;2026-10-20 起相邻反相)会因地弹在所有通道同一时刻出约 30 ns 毛刺,恒低的 CH1 被读成高、1 kHz 读成 2 kHz;同一块板直连则 10G/5G 都干净。
-
夹具 GND 与分析仪 GND 之间要有短而粗的地线。M5 时过时不过先查接地:M5 下用 16ch@200M、1.5 V 采 4 ms,恒低的 CH1 应 0 个边沿、1 kHz 的 CH5 应 8 个。
-
夹具位流载入 SRAM:本次启动后第一次用到夹具时,把
resources/fixture/testgen.fs载入 Tang Nano 9K 的 SRAM(约 1.5 s),之后换板测试不再载入;夹具串口不应答(被拔插、掉过电)时自动重新载入。 不写夹具 Flash:openFPGALoader 写 GW1NR-9C 片上 Flash 报CRC check : FAIL,写后不启动。 -
结果只在界面显示(报告区可一键复制),不存档。
├── slogicpt/ # 产测应用(唯一代码目录)
│ ├── ui/ # 工站界面(Material 3 风格,仅依赖 PyQt5)
│ │ ├── app.py # 入口:主题、语言、全局异常兜底(槽函数异常只记日志,不退出)
│ │ ├── main_window.py # 组装:顶栏 / 步骤条 / 结论区 / 报告·日志·环境准备;重试、复位
│ │ ├── station.py # 布防状态机(与界面分离)、手动重试、台架复位
│ │ ├── widgets.py # 步骤条(含重试按钮)、结论卡片、就绪清单、模式矩阵、Chip、底部抽屉、采集参数对话框
│ │ ├── report.py # 报告文本
│ │ ├── theme.py # 明/暗色 token、调色板与样式表、系统明暗检测
│ │ └── icons.py # 内嵌 SVG 图标
│ ├── procutil.py # 跨平台子进程:隐藏窗口、杀进程树、超时/取消运行器
│ ├── env_setup.py # 「环境准备」一键部署:Linux udev 规则 / Windows 夹具 FTDI 的 WinUSB 驱动
│ ├── i18n.py, _translations.py # 中英界面文案
│ ├── pipeline.py # 流程引擎:步骤表、链路门槛、采集瞬时错误重试、超时/人工提示
│ ├── profiles.py # 产品档案加载/校验/资源自检
│ ├── device_watch.py # USB 设备检测(产品 + APP/DFU 模式 + 链路速率)
│ ├── patterns.py # 夹具图案的期望值(唯一权威,由 RTL 推导)
│ ├── checks.py # 判定层:逐通道 + 结构化判定(不滤波;判不了即 FAIL)
│ ├── deep_checks.py # 内容级检查:SPI/I2C/UART 解码、突发包络
│ ├── fixture.py # 夹具(Tang Nano 9K)位流载入 SRAM(本次启动首次用到时 / 不应答时)
│ ├── fpga.py # 夹具串口:切模式、存活检查
│ ├── sigrok.py # sigrok-cli 采样封装(logic_channels 分组、回卷检测)
│ └── waveform.py # 波形拆包(任意通道数)与接线置换
├── resources/ # 管理员资源:产品档案 / 夹具位流 / sigrok-cli(见其 README)
├── out/ # 运行时采样输出(自动创建,不入库)
├── build.py # PyInstaller 单二进制打包
├── requirements.txt
└── TODO.md # 待验证 / 固件侧 / 台架侧的未完成事项
python -m venv .venv && source .venv/bin/activate # Windows: .\.venv\Scripts\Activate.ps1
pip install -r requirements.txt # 需 Python 3.11+
# 放置 sigrok-cli(夹具位流已随仓库),见 resources/README.md
python -m slogicpt # 启动 GUI,点「开始」台架要点:
- sigrok-cli 须用 SLogic 2.3.0 及以上:旧版在 4ch@1400M 会回卷到 1600M、8ch@800M 收不到数据。
- 产测台架不要接 Gowin 烧录器:它和夹具(BL702)同为 FTDI
0403:6010,其 JTAG 操作还会干扰夹具 FPGA 的 SRAM 配置。 - 产品识别:按 USB PID。
- 夹具位流载入用 openFPGALoader:Linux 用发行版包;Windows 放
resources/bin/openFPGALoader/openFPGALoader.exe, 并在「环境准备」里一键给夹具 FTDI 装 WinUSB 驱动(见 resources/README.md)。
python -m slogicpt.profiles # 档案加载与资源自检
python -m slogicpt.device_watch # 设备插拔监视(含链路速率)
python -m slogicpt.pipeline # 流程引擎自测(步骤表、链路判据)
python -m slogicpt.patterns # 夹具图案期望值自测
python -m slogicpt.checks # 判定层自测
python -m slogicpt.deep_checks # SPI/I2C/UART 解码、突发包络自测
python -m slogicpt.waveform # 波形拆包自测
python -m slogicpt.fpga # 找到夹具串口并切换模式(需接夹具)
python -m slogicpt.fixture # 夹具载入自测
python -m slogicpt.sigrok # 查找 sigrok-cli、扫描并试采一次(需真机)pip install pyinstaller
python build.py # 产出 dist/slogic-pt-<platform>,与 resources/ 平级摆放分发