Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flying Probe ICT Import

Cover

Import in-circuit test results from a Takaya flying probe tester (ATD and ATDX result files) into TofuPilot with the Python SDK. One run per board, one phase per component class, one measurement per tester step with the limits the tester applied. Includes a drop-folder watcher for the tester's export directory and three real result files to try it on.

What This Shows

Feature Where
ATDX parser (APT-1400F and newer, semicolon-delimited) takaya/atdx.py
ATD parser (classic tab-delimited, multi-board panels) takaya/atd.py
Tester units and tolerances to SDK validators takaya/units.py, takaya/mapping.py
Steps grouped into phases by component class takaya/mapping.py -- classify()
Tester verdict kept as measurement outcome (PASS / FAIL / UNSET) takaya/mapping.py -- outcome()
client.runs.create() with phases, measurements, validators, metadata import_takaya.py
Payload validated against the SDK schema before upload (--dry-run) import_takaya.py
Drop-folder import with imported/ and failed/ handling watch_folder.py
Real tester files, MIT-licensed samples/

Get Started

  1. Sign up for a free TofuPilot account at tofupilot.app.
  2. Create a procedure for your ICT station and copy its ID from the procedure page.
  3. Create an API key under Settings > API Keys, then:
pip install "tofupilot>=2.18.0"
export TOFUPILOT_API_KEY=...
python import_takaya.py samples/PB2939800_E_BOT-20230420130239.ATD --procedure-id <id>

--dry-run --json out/ builds and validates the payloads without uploading. --serial-suffix-group appends -G<n> to the serial when the tester prints the work order instead of a board serial. For continuous import, point watch_folder.py at the tester's export directory.

For deeper guides, see the TofuPilot docs and the Flying Probe ICT template page.

Structure

.
├── import_takaya.py              # CLI: parse, map, validate, upload
├── watch_folder.py               # Poll the tester's export folder, import new files
├── takaya/
│   ├── model.py                  # Board and Step, shared by both parsers
│   ├── atdx.py                   # ATDX parser
│   ├── atd.py                    # ATD parser (panels: one group per board)
│   ├── units.py                  # O / KO / NF ... to Ω / kΩ / nF, tolerance strings
│   └── mapping.py                # Board -> runs.create payload
├── samples/                      # Real Takaya result files (Virinco, MIT)
├── tests/test_takaya.py          # Parser and schema checks on the samples
├── pyproject.toml
└── README.md

How a Step Becomes a Measurement

The tester's Func column says how it judged the step; the importer turns that into the same limits as validators:

Func Meaning Validators
EQ reference within -tol% / +tol% >= ref·(1-tol-), <= ref·(1+tol+)
OP open: resistance at least ref >= ref
SH short: resistance at most ref <= ref
GE / LE one-sided >= ref / <= ref

PASS stays PASS; FAIL, UPPER, LOWER, PHA.MISALIGN become FAIL; SKIP, UnTested, UNMEASURED and the ATD ...... jump marker become UNSET with no value. Values stay in the unit the tester printed (4.7 kΩ stays 4.7 kΩ).

Other Testers

SPEA, Seica and Acculogic write their own report formats. The Board / Step model in takaya/model.py and the mapping in takaya/mapping.py do not depend on Takaya; add a parser that fills a Board and the rest of the pipeline is reused.

Sample Files

samples/ holds three result files from the Virinco WATS Takaya converter (MIT License, Copyright 2025 Virinco): one ATDX panel with two failing boards, one ATD panel with four boards, one single-board ATD.

About

Import Takaya flying-probe (ATD, ATDX) in-circuit test results into TofuPilot with the Python SDK

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages