Function $08 implements controls for the BIST (Built-In Self Test) functions for testing, characterization, and analysis of a system and its ASIC. There are two BIST functions, Function $08 and Function $09.
Only one of these functions is applicable for a device; it is dependent upon the sensor chip. See the device Product Specification for information on which BIST function is used.
4.1. Typical BIST usage scenario
The BIST function is typically used to test devices after assembly. The basic functionality is not intended as a complete test or replacement for module testing. BIST can be run after the device has powered on and begun reporting after POR (PowerOnReset).
The BIST control limit registers default to the correct values for the test, but they can be changed by re-flashing the device with new Firmware.
The command RunBIST (F08_BIST_Cmd0, bit 0) executes TestNumber=0 by default, runs a complete BIST, and reports the first failing sub-test (for example, Test1).
In a typical case, running the default BIST command should result in a Passing ($00) result in the
F08_BIST_Data1 register. In the case of a failing non-zero result, the output of the data register indicates the failed sub-test number. The failing sub-test result can be loaded into the Test Number Control register F08_BIST_Data0 to determine the cause of the fault. Running RunBIST (F08_BIST_Cmd0) again, with the Test Number Control register properly loaded with the sub-test number, produces a result in the BIST data registers that indicates an electrode that failed the BIST sub-test.
Copyright © 2007–2011 Synaptics Incorporated. All Rights Reserved. 37
4.2. Function $08: query registers
The various BIST queries provide the mechanism for configuring and reading the BIST controls (limits), commands (tests), and data (results) variables. The BIST limits may be configurable and set to defaults by Flash-backed registers or set in Flash on a per-product basis. Additional control limit registers are
necessary for additional BIST tests.
Name 7 6 5 4 3 2 1 0
F08_BIST_Query0 Limit Register Count
F08_BIST_Query1 HostTestEn — — — — — — —
Figure 18. Function $08 query registers
The locations of the control, data, and command registers for basic BIST tests are calculated from the F08_BIST_Query0 register. Any additional BIST tests and adjustments to the BIST register placements can be calculated based on F08_BIST_Query1.
Limit Register Count (F08_BIST_Query0)
Indicates the number of control registers used to set the limits for BIST testing capabilities.
HostTestEn (F08_BIST_Query1, bit 7)
Indicates that BIST host-level testing is available.
38 Copyright © 2007–2011 Synaptics Incorporated. All Rights Reserved.
4.3. Function $08: control registers
The control registers determine the limits for each of the implemented BIST tests. Depending on the configuration, a device can have one or two defined tests. The example below describes a Function $08 configuration with two tests:
Name 7 6 5 4 3 2 1 0
F08_BIST_Ctrl0 Test1LimitLo
F08_BIST_ Ctrl1 Test1LimitHi
F08_BIST_ Ctrl2 Test1LimitDiff
F08_BIST_ Ctrl3 Test2LimitLo
F08_BIST_ Ctrl4 Test2LimitHi
F08_BIST_ Ctrl5 Test2LimitDiff
Figure 19. Function $08 Limit control registers These registers are defined as follows:
Test1LimitLo (F08_BIST_Ctrl0)
Controls the acceptance Low BIST Limit for Test1.
Test1LimitHi (F08_BIST_Ctrl1)
Controls the acceptance High BIST Limit for Test1.
Test1LimitDiff (F08_BIST_Ctrl2)
Controls the acceptance Difference BIST Limit for Test1.
Test2LimitLo (F08_BIST_Ctrl3)
Controls the acceptance Low BIST Limit for Test2.
Test2LimitHi (F08_BIST_Ctrl4)
Controls the acceptance High BIST Limit for Test2.
Test2LimitDiff (F08_BIST_Ctrl5)
Controls the acceptance Difference BIST Limit for Test2.
Copyright © 2007–2011 Synaptics Incorporated. All Rights Reserved. 39
4.4. Function $08: data registers
Function $08’s data result registers are allocated as necessary for the tests defined by design capability.
The data registers are filled upon the completion of a command. Reported data values may change, depending on the configuration of the control limit and the command executed. Future unimplemented extended BIST capabilities may add additional data registers.
The Test Number Control register determines which BIST tests are run. If ‘0’, all implemented tests are run.
Name 7 6 5 4 3 2 1 0
F08_BIST_ Data0 TestNumberControl
Figure 20. Function $08 Test Number Control data register TestNumberControl (F08_BIST_Data0)
Controls the test (or tests) run by the BIST command. Test capabilities are defined and documented on a design basis. Additional tests may be available, but not all devices will have all tests or necessarily sequential test numbers. ‘3’–‘255’ are reserved test numbers.
By default:
• If ‘0’, the complete BIST test executes each of the one or more BIST sub-tests in order until there is a failure. Reports the first failing test in the Test Result data register.
• If ‘1’, then the RunBIST (F08_BIST_Cmd0) command executes the BIST sub-test 1 using the limits set by the Test1 limit control registers. Reports the failing electrode in the Test Result data register.
• If ‘2’, then the RunBIST (F08_BIST_Cmd0) command executes the BIST sub-test 2 using the limits set by the Test2 limit control registers. Reports the failing electrode in the Test Result data register.
The Overall BIST Result register is ‘0’ for success, or indicates the number of the first failing test.
Name 7 6 5 4 3 2 1 0
F08_BIST_Data1 Overall BIST Result
Figure 21. Function $08 Overall BIST Result data register Overall BIST Result (F08_BIST_Data1)
Reports the overall result of the BIST command executed:
• If ‘0’, all requested BIST tests have passed.
• If ‘1’, Test 1 has failed and F08_BIST_Data2 will indicate the failing electrode number.
• If ‘2’, Test 2 has failed and F08_BIST_Data2 will indicate the failing electrode number.
‘3-255’ are reserved test numbers.
40 Copyright © 2007–2011 Synaptics Incorporated. All Rights Reserved.
If the Overall BIST Result is non-zero, then the Test Result register contains test specific error information or the default complete test.
Name 7 6 5 4 3 2 1 0
F08_BIST_Data2 Test Result
Figure 22. Function $08 Test Result data register
For example, if Test1 failed, the Test Result data register would indicate which limit test failed and an electrode number associated with the failure, as shown below:
Name 7 6 5 4 3 2 1 0
F08_BIST_Data2 Limit Failure Code — Failing Electrode Number
Figure 23. Function $08 Test Result (Test1) Failing Electrode Number (F08_BIST_Data2, bits 4:0)
Reports an electrode that fails the test. The value of this register is meaningful only if F08_BIST_Data1 is non-zero.
Limit Failure Code (F08_BIST_Data2, bits 7:6) Reports which limit test fails the test:
00 = No failure.
01 = Low Limit failed.
10 = High Limit failed.
11 = Difference Limit failed.
4.4.1. Function $08: interrupt source
The BIST data source asserts an interrupt request at the end of any report period in which a command register bit has been cleared.
Copyright © 2007–2011 Synaptics Incorporated. All Rights Reserved. 41
4.5. Function $08: command registers
The BIST command register provides the mechanism for executing the built-in self tests. Test times vary;
test completion is indicated by the automatic clearing of the RunBIST bit and the assertion of the BIST interrupt request.
Name 7 6 5 4 3 2 1 0
F08_BIST_Cmd0 — — — — — — — RunBIST
Figure 24. Function $08 command register RunBIST (F08_BIST_Cmd0, bit 0)
Runs the BIST using the test number and limits set in the data and control registers.
42 Copyright © 2007–2011 Synaptics Incorporated. All Rights Reserved.