ZHCSJM7 April 2019 BQ79606A-Q1
PRODUCTION DATA.
The BQ79606A-Q1 provides a diagnostic tool to test the ECC function. There are two modes that are available to run the diagnostic. The first, auto mode (ECC_TEST[MANUAL_AUTO]=0), uses internal data to run the tests. In auto mode, the ECC_TEST[DED_SEC] bit selects the type of test that is to be done and the ECC_TEST[ENC_DEC] bit determines if the encoder or decoder function is to be tested. The result of the ECC test is provided in the ECC_DATAOUT* registers. The expected results from each test are shown in Table 28.
The second, manual mode (ECC_TEST[MANUAL_AUTO] = 1) ECC function allows the user to insert their own SEC or DED errors into the ECC tester. The ECC_DATAIN* registers are used to write the values for the test. The ECC is calculated using the information in the previous section. The ECC_DATAOUT* registers output the result of the test. The SYS_FAULT3[SEC_DET] and SYS_FAULT3[DED_DET] bits indicate which type of error (if any) is detected for the decoding test ONLY. Make sure to clear these bits while disabling the ECC test before starting a decoding test. For the encoding test, these bits do not get updated or affected by the encoding test. Once the required test is configured and the SYS_FAULT3 bits above are reset, write the ECC_TEST[ENABLE]=1 to enable the test. Here are the recommended steps to execute the ECC for both the encoder and the decoding tests:
Manual Decoding:
1. Pick up any 72-bits value for the test and block write to ECC_DATAIN[8:0]
2. Set the ECC_TEST to manual ECC_TEST[MANUAL_AUTO]=1
3. Set decoder setting ECC_TEST[ENC_DEC]=0
4. Set decoder to single or double encoding setting with ECC_TEST[DED_SEC] (1 for DED or 0 for SEC)
5. Enable ECC test ECC_TEST[ENABLE]=1
6. Clear all SEC/DED faults by SYS_FLT3_RST[SEC_DET_RST]=1 and SYS_FLT3_RST[DED_DET_RST]=1
7. Read SYS_FAULT3[SEC_DETECT] flag for SEC or SYS_FAULT3[DED_DETECT] flag for DED
8. Block read ECC_DATAOUT[7:0] to verify the Decoder test results
9. Disable ECC test ECC_TEST[ENABLE]=0.
10. Clear SEC/DEC faults.
Manual Encoding steps:
1. Pick up any 64-bits value for the test and block write to ECC_DATAIN[7:0]
2. Set ECC_TEST to manual ECC_TEST[MANUAL_AUTO]=1
3. Set the encoder setting using ECC_TEST[ENC_DEC]=1
4. Enable the ECC test with ECC_TEST[ENABLE]=1
5. Ensure ECC_DATAOUT[8:0] match the value in step “1”
6. Disable ECC test ECC_TEST[ENABLE]=0.
7. Clear SEC/DEC faults.
Automatic Decoding steps:
1. Set ECC_TEST to automatic ECC_TEST[MANUAL_AUTO]=0
2. Set decoder setting ECC_TEST[ENC_DEC]=0
3. Set decoder to single or double encoding setting with ECC_TEST[DED_SEC] (1 for DED or 0 for SEC)
4. Enable ECC test ECC_TEST[ENABLE]=1
5. Clear all SEC/DED faults by SYS_FLT3_RST[SEC_DET_RST]=1 and SYS_FLT3_RST[DED_DET_RST]=1
6. Read SYS_FAULT3[SEC_DETECT] flag for SEC or SYS_FAULT3[DED_DETECT] flag for DED
7. Block read ECC_DATAOUT[7:0] to verify the Decoder test results as in the table below
8. Disable ECC test ECC_TEST[ENABLE]=0
Automatic Encoding steps:
1. Set ECC_TEST to automatic ECC_TEST[MANUAL_AUTO]=0
2. Set the encoder setting using ECC_TEST[ENC_DEC]=1
3. Enable the ECC test with ECC_TEST[ENABLE]=1
4. Block read ECC_DATAOUT[8:0] to verify the Encoder test results as in the table below
5. Disable ECC test ECC_TEST[ENABLE]=0
ECC_TEST[DED_SEC] | ECC_TEST[ENC_DEC] | SYS_FAULT3[SEC_DET] | SYS_FAULT3[DED_DET] | ECC_DATAOUT* |
---|---|---|---|---|
0 (SEC test) | 0 (Decoder test) | 1 | 0 | 0x18C3_FF8A_68A9_8069 |
0 (SEC test) | 1 (Encoder test) | N/A | N/A | 0xCD_3968_C140_2EA5_ED6D |
1 (DED test) | 0 (Decoder test) | 0 | 1 | 0x0000_0000_0000_0000 |
1 (DED test) | 1 (Encoder test) | N/A | N/A | 0xCD_3968_C140_2EA5_ED6D |