Overview
Converts Keysight Medalist i3070 test result files in the i3070 Log Record Format to WATS UUT reports. Extended variant with full test type coverage.
and any integration-specific context not covered by the README. -->
Integration Details
| Property | Value |
|---|---|
| Category | WATS Client converter |
| Type | FileConverter |
| Format | TXT |
| Test type | ICT |
File Format Assumptions and Requirements
Examples: encoding (UTF-8/ASCII), line endings, required vs optional fields, field order constraints, supported file version(s) -->
- Input encoding: UTF-8
Hardcoded Values and Defaults
- Status
"0"or"00"maps to Passed; any other value maps to Failed - Block designator prefix matching
^\d+%is parsed as socket index (multi-board fixture support) - Report text fields are truncated at 5000 characters
Converter Parameters
These parameters are configured in the WATS Client Configurator converter arguments.
| Parameter | Default Value |
|---|---|
numberFormatMode | prefix |
| Parameter | Default | Effect |
|---|---|---|
numberFormatMode | prefix |
Input Record Types and Regex Patterns
The converter uses TextConverterBase.SearchFields to match lines. Each entry below is one regex field registration with the associated capture groups.
Header field: UUTField.UseSubFields (parsed in InHeader state)
Format: |operator id (string)|controller (string)|testplan id (string)|testplan rev (string)|parent panel type (string)|parent panel type rev (string)}
^\{@BATCH\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|([^|]*)\|(?<Station>([^|]*))\|([^|]*)\|(?<Revision>([^|]*))\|([^|]*)\|([^|]*)\|(?<PartNumber>([^|]*))$
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Station | string | UUTField.StationName |
PartNumber | string | UUTField.PartNumber |
Revision | string | UUTField.PartRevisionNumber |
Status | string | used in ProcessMatchedLine |
SerialNumber | string | used in ProcessMatchedLine |
StartDate | DateTime | used in ProcessMatchedLine |
ExecutionTime | double | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
SerialNumber | string | used in ProcessMatchedLine |
StartDate | DateTime | used in ProcessMatchedLine |
ExecutionTime | double | used in ProcessMatchedLine |
Record: BTEST (parsed in InHeader state)
Format: |learning (bool)|known good (bool)|end datetime (int)|status qualifier (string)|board number (int)|parent panel id (string)}
^\{@BTEST\|((?<SerialNumber>[^|]*))\|(?<Status>([^|]*))\|(((?<StartDate>[^|]*)))\|((\b0*(?<ExecutionTime>[1-9][0-9]*|0)\b))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))$
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Status | string | used in ProcessMatchedLine |
SerialNumber | string | used in ProcessMatchedLine |
StartDate | DateTime | used in ProcessMatchedLine |
ExecutionTime | double | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
SerialNumber | string | used in ProcessMatchedLine |
StartDate | DateTime | used in ProcessMatchedLine |
ExecutionTime | double | used in ProcessMatchedLine |
BlockDesignator | string | used in ProcessMatchedLine |
Record: BTEST (parsed in InHeader state)
Format: For some reason some reports have 12 separators (|) and another reports har 13 separators. This may be because a the field 'parent panel type rev' is a field newly added to the format. Anyways we check for both.
^\{@BTEST\|((?<SerialNumber>[^|]*))\|(?<Status>([^|]*))\|(((?<StartDate>[^|]*)))\|((\b0*(?<ExecutionTime>[1-9][0-9]*|0)\b))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))\|(([^|]*))$
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Status | string | used in ProcessMatchedLine |
SerialNumber | string | used in ProcessMatchedLine |
StartDate | DateTime | used in ProcessMatchedLine |
ExecutionTime | double | used in ProcessMatchedLine |
BlockDesignator | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
Meas | double | used in ProcessMatchedLine |
HighLim | double | used in ProcessMatchedLine |
LowLim | double | used in ProcessMatchedLine |
Record: BLOCK (parsed in InTest state)
Format: Format: {@BLOCK|block designator (string)|block status (int)}
^{@BLOCK[|](?<BlockDesignator>[^|]*)[|][^|]*$
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
BlockDesignator | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
Meas | double | used in ProcessMatchedLine |
HighLim | double | used in ProcessMatchedLine |
LowLim | double | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
Meas | double | used in ProcessMatchedLine |
MeasName | string | used in ProcessMatchedLine |
HighLim | double | used in ProcessMatchedLine |
Record: TestLIM2 (parsed in InTest state)
Format: Matches these group names: @A-RES, @A-MEA, @A-NFE, @A-NPN, @A-PFE, @A-PNP, @A-SWI, @A-DIO, @A-JUM
{@(?<Group>[^|]+)[|](?<Status>[^|]*)[|]\s*(?<Meas>[0-9+-E.]+)[|]*{@LIM2[|]\s*(?<HighLim>[0-9+-E.]+)[|]\s*(?<LowLim>[0-9+-E.]+)}
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Group | string | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
Meas | double | used in ProcessMatchedLine |
HighLim | double | used in ProcessMatchedLine |
LowLim | double | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
Meas | double | used in ProcessMatchedLine |
MeasName | string | used in ProcessMatchedLine |
HighLim | double | used in ProcessMatchedLine |
LowLim | double | used in ProcessMatchedLine |
Record: TestLIM2Multi (parsed in InTest state)
Format: Matches these group names: @A-RES, @A-MEA, @A-NFE, @A-NPN, @A-PFE, @A-PNP, @A-SWI, @A-DIO, @A-JUM
{@(?<Group>[^|]+)[|](?<Status>[^|]*)[|]\s*(?<Meas>[0-9+-E.]+)[|](?<MeasName>[^}]+)[|]*{@LIM2[|]\s*(?<HighLim>[0-9+-E.]+)[|]\s*(?<LowLim>[0-9+-E.]+)}}
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Group | string | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
Meas | double | used in ProcessMatchedLine |
MeasName | string | used in ProcessMatchedLine |
HighLim | double | used in ProcessMatchedLine |
LowLim | double | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
Meas | double | used in ProcessMatchedLine |
Nominal | double | used in ProcessMatchedLine |
HighLim | double | used in ProcessMatchedLine |
LowLim | double | used in ProcessMatchedLine |
Record: TestLIM3 (parsed in InTest state)
Format: Matches these group names: @A-RES, @A-ZEN, @A-CAP, @A-FUS, @A-IND, @A-POT
{@(?<Group>[^|]+)[^|]*[|](?<Status>[^|]*)[|](?<Meas>[0-9+-E.]+)[|]*{@LIM3[|](?<Nominal>[0-9+-E.]+)[|](?<HighLim>[0-9+-E.]+)[|](?<LowLim>[0-9+-E.]+)}}
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Group | string | used in ProcessMatchedLine |
Status | string | used in ProcessMatchedLine |
Meas | double | used in ProcessMatchedLine |
Nominal | double | used in ProcessMatchedLine |
HighLim | double | used in ProcessMatchedLine |
LowLim | double | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
testName | string | used in ProcessMatchedLine |
status | string | used in ProcessMatchedLine |
shortCount | int | used in ProcessMatchedLine |
opensCount | int | used in ProcessMatchedLine |
RepTxt | string | used in ProcessMatchedLine |
Record: BS-CON (parsed in InTest state)
Format: Format: {@BS-CON|test designator (string)|status (int)|shorts count (int)|opens count (int)}
{@(?<Group>BS-CON)[|](?<testName>.*)[|](?<status>[^|]*)[|](?<shortCount>\d+)[|](?<opensCount>\d+)
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Group | string | used in ProcessMatchedLine |
testName | string | used in ProcessMatchedLine |
status | string | used in ProcessMatchedLine |
shortCount | int | used in ProcessMatchedLine |
opensCount | int | used in ProcessMatchedLine |
RepTxt | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
TestSubstatus | int | used in ProcessMatchedLine |
FailingVectorNumber | int | used in ProcessMatchedLine |
PinCount | int | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
Record: Report (parsed in InTest state)
Format: Format: {@RPT|message (string)}
{@RPT[|](?<RepTxt>.*)}
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
RepTxt | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
TestSubstatus | int | used in ProcessMatchedLine |
FailingVectorNumber | int | used in ProcessMatchedLine |
PinCount | int | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
PinCount | int | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
Record: D-T (parsed in InTest state)
Format: Format: {@D-T|test status (int)|test substatus (int)|failing vector number (int)|pin count (int)|test designator (string)}
\{@(?<Group>D-T)\|(?<TestStatus>(0|1|5|7|8))*\|(?<TestSubstatus>([0-9]*))\|(?<FailingVectorNumber>([0-9]*))\|(?<PinCount>([0-9]*))\|(?<TestName>(.*))
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Group | string | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
TestSubstatus | int | used in ProcessMatchedLine |
FailingVectorNumber | int | used in ProcessMatchedLine |
PinCount | int | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
PinCount | int | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
totalPins | int | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
Record: TJET (parsed in InTest state)
Format: Format: {@TJET|test status (int)|pin count (int)|test designator (string)}
\{@(?<Group>TJET)\|(?<TestStatus>(00|01|07))*\|(?<PinCount>([0-9]*))\|(?<TestName>(.*))
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Group | string | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
PinCount | int | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
totalPins | int | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
ShortsCount | int | used in ProcessMatchedLine |
OpensCount | int | used in ProcessMatchedLine |
PhantomsCount | int | used in ProcessMatchedLine |
Record: PF (parsed in InTest state)
Format: Format: {@PF|designator (string)|test status (int)|total pins (int)}
\{@(?<Group>PF)\|(?<TestName>(.*))\|(?<TestStatus>(0|1))\|((?<totalPins>([0-9]*)))
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Group | string | used in ProcessMatchedLine |
totalPins | int | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
Group | string | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
ShortsCount | int | used in ProcessMatchedLine |
OpensCount | int | used in ProcessMatchedLine |
PhantomsCount | int | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
Record: TS (parsed in InTest state)
Format: Format: {@TS|test status (int)|shorts count (int)|opens count (int)|phantoms count (int)|designator (string)}
\{@(?<Group>TS)\|(?<TestStatus>(0|1|20))*\|(?<ShortsCount>([0-9]*))\|((?<OpensCount>([0-9]*)))\|((?<PhantomsCount>([0-9]*)))\|(?<TestName>(.*))
| Capture Group | Type | Maps to WATS Field |
|---|---|---|
Group | string | used in ProcessMatchedLine |
TestStatus | string | used in ProcessMatchedLine |
ShortsCount | int | used in ProcessMatchedLine |
OpensCount | int | used in ProcessMatchedLine |
PhantomsCount | int | used in ProcessMatchedLine |
TestName | string | used in ProcessMatchedLine |
WATS Step Type Mapping
For each matched record, ProcessMatchedLine creates the following WATS objects:
| Record / Field | WATS Step / UUT Field | Sub-measurements |
|---|---|---|
BTEST | [UUT] SerialNumber [UUT] StartDateTime [UUT] ExecutionTime [UUT] TestSocketIndex | |
BLOCK | [UUT] TestSocketIndex | |
TestLIM2 | SequenceCall (group) | |
TestLIM3 | NumericLimitStep SequenceCall (group) | |
TestLIM2Multi | NumericLimitStep SequenceCall (group) | |
BS-CON | SequenceCall (group) [UUT] TestSocketIndex | |
Report | ||
D-T | SequenceCall (group) [UUT] TestSocketIndex | |
TJET | SequenceCall (group) [UUT] TestSocketIndex | |
PF | SequenceCall (group) [UUT] TestSocketIndex | |
TS | SequenceCall (group) [UUT] TestSocketIndex |
Unit Mapping (UnitMapper)
When numberFormatMode = prefix, SI prefixes are chosen dynamically based on value magnitude. The following table shows every recognized record-type prefix and its associated unit:
| Record Prefix | Unit | Purpose |
|---|---|---|
A-CAP | F | capacitor test results |
A-DIO | V | diode test results |
A-FUS | A | fuse test results |
A-IND | H | inductor test results |
A-JUM | Ω | jumper test results |
A-MEA | measurement results | |
A-NFE | N-channel FET test results | |
A-NPN | NPN transistor test results | |
A-PFE | P-channel FET test results | |
A-PNP | PNP transistor test results | |
A-POT | Ω | potentiometer test results |
A-RES | Ω | resistor test results |
A-SWI | switch test results | |
A-ZEN | V | zener test results |
ALM | identify a real-time alarm | |
AID | identify board causing an alarm | |
ARRAY | V | digitizer results analysis |
BATCH | batch identifier log | |
BLOCK | test block identifier | |
BS-CON | describe boundary-scan test | |
BS-O | list of open pins (boundary-scan) | |
BS-S | list of shorted pins (boundary-scan) | |
BTEST | describe board test log | |
DPIN | list failing pins for one device | |
D-PLD | PLD programming results log | |
D-T | digital shorts test results | |
INDICT | list potentially failing devices | |
LIM2 | analog test high/low limits | |
LIM3 | analog test nominal and tolerance limits | |
NETV | network verification record | |
NODE | list of nodes | |
PCHK | Polarity Check test results | |
PIN | list of pins | |
PF | pins failure results | |
PRB | probe card identification | |
P-T | probe tips test results | |
P-VOL | V | power supply voltage results |
P-WAV | V | waveform digitizer results |
RID | rework identifier log | |
SP-CON | describe spectral analysis | |
SP-D | list of defect sites (spectral analysis) | |
SP-F | list of failing sites (spectral analysis) | |
TID | identify test invoking the alarm | |
V-CON | describe vectorless test | |
V-D | list of defect sites (vectorless test) | |
V-F | list of failing sites (vectorless test) | |
V-M | vectorless test results | |
W | description of warning | |
WID | work order identifier log | |
Z-CON | describe impedance test | |
Z-D | list of defect sites (impedance test) | |
Z-F | list of failing sites (impedance test) | |
Z-M | Ω | impedance test results |
Known Limitations and Edge Cases
that operators should be aware of -->
Configuration Guidance
Parameters are configured in the WATS Client Configurator under the converter's Arguments XML. Example:
<Arguments>
<!-- TODO: paste a real example Arguments XML block here -->
</Arguments>
Getting Started
Download
The recommended installation method is via the MSI installer. Download the latest release from the Releases page.
Installation
Using the MSI Installer (Recommended)
- Download the
.msifile from the Releases page. - Run the installer - it will automatically place the converter in the correct WATS Client folder.
- Restart the WATS Client Service.
Comments
0 comments
Please sign in to leave a comment.