No description
  • C# 56.7%
  • HTML 33.8%
  • CSS 9.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
joe cbb4994c6d Autoprober.Abilene: the Advanced Sensors autoprober on PhAT
A rebuild of AdvancedSensors on PhAT and PhAT.Razor: a FormFactor PA200
BlueRay over Velox, the horn on positioner 1, Spectrum vision, and the
tester's TCP commands on 43431, each running a sequence (Sequences/*.csx).
Includes the Spectrum / direct camera switch, the VeloxPro start-up gate,
Velox notifications, fixtures with their own scope homes, and per-job scope
positions. Needs PhAT.Razor checked out next to it. Docs in docs/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:37:54 -05:00
Components Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
docs Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
Instances/BlueRay Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
Machine Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
maps Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
Properties Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
Sequences Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
Tester Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
wwwroot Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
.editorconfig Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
.gitignore Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
appsettings.json Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
Autoprober.Abilene.csproj Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
Directory.Build.props Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
Directory.Build.targets Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
duts.json Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00
Program.cs Autoprober.Abilene: the Advanced Sensors autoprober on PhAT 2026-10-28 21:37:54 -05:00

Autoprober.Abilene

The Advanced Sensors autoprober on PhAT: a clean rebuild of AdvancedSensors (AdvancedSensors.Autoprober). A FormFactor PA200 BlueRay is driven over Velox: the chuck carries the DUT, the horn sits on positioner 1, and the prober's Spectrum vision finds each site. The tester connects over TCP and sends LOAD, LAUNCH, UNLOAD and the alignment commands. Each command runs a sequence (Sequences/*.csx).

Doc
tester.md The tester protocol: commands, replies, errors
sequences.md Load, Launch, AlignTheta, CorrectXY, Init, InitProbe…: what each does; ProberMachine for scripts
setup.md Settings (Autoprober, Prober), the DUT file, maps, vision jobs, the old core.json mapped to the new settings, before the first run
alignment.md Teaching a new DUT or probe card (also on the Alignment page)
phat-additions.md What this app added to PhAT: the Velox client, commanders and simulator, VeloxProber
plan.md The survey of the old code and what came over

Running it

Profile Settings URL
http (desk) appsettings.json: Velox simulated (Prober:Driver VeloxSimulator on 127.0.0.1:1413), DUTs in duts.json, maps in maps/ http://localhost:5193
BlueRay (the machine) Instances/BlueRay/appsettings.json replaces appsettings.json; the app runs on the prober PC, Velox at 127.0.0.1:1412 http://:5193
dotnet run --launch-profile http
dotnet run --launch-profile BlueRay

The tester's port is 43431, as before. On the desk it listens on 127.0.0.1 only; on the machine on every interface, which needs a Windows firewall rule for port 43431 (not created by the app).

The desk simulator listens on 1413, not Velox's 1412, so it can't collide with another app's simulator (MessageLog's ProjectD uses the same prober).

Standalone or as a Windows service

As with Autoprober.NewYork, the same build runs standalone or as a service (PhAT.Hosting.AppHost, see PhAT/build/README-service.md). The web port comes from "Urls" in the settings file (a service or published exe doesn't read the launch profiles), and each instance is its own service: Autoprober.Abilene (desk) or Autoprober.Abilene-BlueRay.

PhAT\build\Publish-App.ps1 -Project D:\Workspace\source\Autoprober.Abilene
Autoprober.Abilene.exe --Instance BlueRay
PhAT\build\Install-AppService.ps1 -Name Autoprober.Abilene-BlueRay -Exe <publish>\Autoprober.Abilene.exe -Arguments '--Instance BlueRay' -Start

The second line runs it standalone. The last one installs it as a service and must run as administrator. Publishing leaves out the files each PC keeps: the DUT file, stage positions, users, page access, databases and logs. So copy Instances/BlueRay/duts.json to the same path under the exe's folder before the first start. Without it there are no DUTs.

Pages

Page Who
Messages (home, /) everyone Every tester line in and out (the message log)
Autoprober (/autoprober) everyone Velox connection and status; the DUT, its fixture, site and last vision result; the Fixture list (each fixture has its own scope home, setup.md); the tester (last command, Accept commands); vision: who has the scope camera (Spectrum or this app), with Use Spectrum / Take over for engineers (setup.md); the defaults for the tester's optional fields; buttons for Load, Launch, Unload, Align theta, Correct XY, Vision test, Load settings, Open project, Cancel. Engineers also get the teach buttons: Init DUT at site, Init horn, Chuck home from site.
Prober everyone Chuck, horn and scope: positions, heights, gaps, Velox status flags, the project and the scope light (read on a second connection once a second and on every Velox alert, so it follows moves, including ones made in Velox or with the joystick)
Maps everyone Each DUT's sites as the launches use them (centred, scaled, swapped, µm), the vision job each site gets, map load errors, Reload
Controller everyone Chuck, horn and scope as PhAT stages: jog, stored positions
Launches everyone Every launch with its position (MSN = <dut>/<site>)
Settings engineer The DUT editor (map, alignment sites, homes, heights, vision jobs); the machine settings, read only
Alignment engineer The teaching procedure, with the horn tool photos
Engine engineer The sequences: run, edit, history and logs
Tester commands engineer Connected testers and the recent lines
Vision, Vision logs, Templates, Masks, Calibration, Camera diagnostics engineer PhAT's vision pages (for DUTs whose vision jobs use PhAT)
Users admin Accounts and page access

The footer shows the motion state, the tester, the prober connection, the vision owner, the DUT and site, and the version with its build time. GET /buildinfo returns the same as JSON.

Logs

What Where
Tester lines (SQLite) MessageLog:DatabasePath (Messages page)
Tester lines (text, one file a day) CommandServer:TextLogFolder
Launches Launches:DatabasePath (Launches page)
Vision searches, theta results and launches (CSV, one file a day) Autoprober:VisionLogFolder: vision.yyyy-MM-dd.csv
Scope images before vision and after each launch (with LogLaunchImages) Autoprober:ImageFolder on the prober PC (Spectrum saves them)
Sequence runs Engine page

Tested, and not

Tested on the desk against PhAT's Velox simulator (Prober:Driver VeloxSimulator):

  • Velox client: framing, units, reference frames, error replies and STOP during a move: 22 checks in a scratch program, run when the client was written.
  • Tester: LOAD with and without align theta / correct XY, LAUNCH with each optional field, UNLOAD, ALIGNTHETA, CORRECTXY, INIT (with and without chuck gaps and vision), INITPROBE (with and without vision), DUT 1 and DUT 3, and the error replies: unknown site (SiteNotFound), unknown DUT (DutNotFound), a missing field, and AlignTheta measuring the simulator's 0.04° DUT rotation (0.0397°; a second run finds 0.0003° left), STOP and SNAPWAFER (NotImplemented), an unknown command (NotSupported), and vision failing when a different DUT is on the chuck (VisionError).
  • Pages: each page opens. The Settings page saves the DUT file.
  • Waiting for VeloxPro, with a stand-in process and a 5 s wait: commands answer RECOVERABLE,Waiting for <name>.exe (not running), then Waiting for <name>.exe to load (2 of 5 s), at once, then work.
  • Velox notifications from the simulator. A client registering and dropping as "Spectrum" shows as registered / unregistered. During an UNLOAD move the Prober page updated about every 0.4 s (the poll alone: once a second). PhAT's stages follow alerts too (PhAT/README.md).
  • Spectrum / direct switch, with a stand-in Spectrum.exe (a program that only waits) and PhAT's file camera. Use Spectrum starts it and releases the camera. Take over kills it (no window to close) and reopens the camera. Repeating either does nothing. LOAD in Direct switches to Spectrum by itself for its Spectrum jobs. Closing Spectrum outside the app shows on the Autoprober page.
  • Fixtures and scope positions (DUT 1 with two test fixtures, B's home 150 / −80 µm from A's, and its PositiveY job BySite: −500 µm for NegativeX sites, +500 µm otherwise). LAUNCH put the scope at −500 for J126Top and +500 for X207. Fixture B while loaded moved Velox's scope home by the difference, and the next LAUNCH went back to +500 from the new home. The Autoprober page's list saves the choice. INIT on fixture A taught A's home only. An unknown name gives FixtureNotFound.

Not covered on the desk:

  • Images: the simulator's SnapImage draws a stand-in picture.

Not tried on the real machine. Check these first:

  • the replies the new client parses differently from the old one: ReadScopeHeights (the old client checked for 3 values and read 8), FindFeature matches, and the status flags on the Prober page;
  • the Spectrum feature ids, shutter and gain of each vision job (copied from the old core.json);
  • the theta sign: compare one AlignTheta with the old app's result on the same DUT;
  • the horn home after INITPROBE (the old code never got this far: it failed whenever the feature was found);
  • ImageFolder (D:\vision_logs) exists on the prober PC.
  • the Spectrum switch with the real Spectrum: that it closes or can be killed without upsetting Velox, that the scope camera is free a moment later (CameraRelease), and that it starts again through the scheduled task and answers within StartTimeout; also its real process name;
  • Velox notifications: the line format and alert values are from the manual, not a real prober (the old library never got this working); check moves from Velox's own UI show at once;
  • direct control with the Guppy F-046C (FirePackage provider, first camera found): the image, colour (Bayer RG) and 90° rotation, and that Spectrum can open the camera after Use Spectrum (setup.md).