improved overall diagnostics, and specifically TMU-FBI BUS.
This commit is contained in:
147
Test_Data_Huge.c
147
Test_Data_Huge.c
@@ -122,11 +122,8 @@ AssignFault(const def_sFaultSheet * const
|
||||
def_sFaultSourceScoreRec * const
|
||||
pFaultSrcCtx)
|
||||
{
|
||||
//const unsigned char relbitIdxQuartet= bitIdx%4;
|
||||
const unsigned char relbitIdxQuartet = _relbitIdxQuartet;
|
||||
//const unsigned char relbitIdx = bitIdx%8;
|
||||
const unsigned char relbitIdx = _relbitIdx;
|
||||
//const unsigned char relbitIdxWord = bitIdx%16;
|
||||
const unsigned char relbitIdxWord = _relbitIdxWord;
|
||||
|
||||
static unsigned char nbErrLWord = 0;
|
||||
@@ -144,67 +141,90 @@ AssignFault(const def_sFaultSheet * const
|
||||
|
||||
logD("## fault on LW bit: %d\n",bitIdx);
|
||||
|
||||
/* We need to remap the faulty bit to the ARGB Bus, from the RGB565 Value.
|
||||
* Based on this code:
|
||||
* uint16_t u16Bus_r8 = ((u16pix1>>11) & 0x1F) << 3;
|
||||
* uint16_t u16Bus_g8 = ((u16pix1>>5) & 0x3F) << 2;
|
||||
* uint16_t u16Bus_b8 = ((u16pix1>>0) & 0x1F) << 3;
|
||||
* uint16_t u16Bus_a8 = 0;
|
||||
*
|
||||
* //uint16_t u16Fault_W1 = (u16Bus_g8<<8) + u16Bus_b8;
|
||||
* //uint16_t u16Fault_W2 = (u16Bus_a8<<8) + u16Bus_r8;
|
||||
*
|
||||
*/
|
||||
|
||||
uint8_t ARGBrelbitIdx;
|
||||
double dARGBScore = 1.0/4.0;
|
||||
if(relbitIdxWord>=11) //RED
|
||||
{
|
||||
ARGBrelbitIdx = relbitIdxWord -11 +3;
|
||||
//There is no Alpha channel so score shouldnt be divided by 2
|
||||
}
|
||||
else if(relbitIdxWord>=5) //GREEN
|
||||
{
|
||||
ARGBrelbitIdx = relbitIdxWord -5 +2 +8;
|
||||
dARGBScore /= 2;
|
||||
}
|
||||
else //BLUE
|
||||
{
|
||||
ARGBrelbitIdx = relbitIdxWord +3;
|
||||
dARGBScore /= 2;
|
||||
}
|
||||
|
||||
logD("## ARGB Bus bit: %d\n",ARGBrelbitIdx);
|
||||
|
||||
logD("- TMU : %s\n",pFaultSrcCtx[psCurFaultSheet->Ux_TMU].szName);
|
||||
|
||||
/* Texture Source path, FBI to TMUx*/
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
psCurFaultSheet->Ux_TMU
|
||||
+ 81 //Ux_TMUx_FT_DATA_x
|
||||
+ relbitIdxWord,
|
||||
1.0/4);
|
||||
+ ARGBrelbitIdx,
|
||||
dARGBScore);
|
||||
|
||||
/* Output path, TMU0 to FBI*/
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
U9_TMU0
|
||||
+ 97 //U9_TMU0_TF_DATA_x
|
||||
+ relbitIdxWord,
|
||||
1.0/4);
|
||||
+ ARGBrelbitIdx,
|
||||
dARGBScore);
|
||||
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
U3_FBI_TF_DATA_0
|
||||
+ relbitIdxWord,
|
||||
1.0/4);
|
||||
+ ARGBrelbitIdx,
|
||||
dARGBScore);
|
||||
|
||||
switch(WordIdx)
|
||||
if(ARGBrelbitIdx>=12)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
if(relbitIdx<=3)
|
||||
{
|
||||
logD("- RA1x_x : %s\n",pFaultSrcCtx[RA10_1+relbitIdxQuartet].szName);
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
RA10_1
|
||||
+ relbitIdxQuartet,
|
||||
1.0/8);
|
||||
}
|
||||
else
|
||||
{
|
||||
logD("- RA1x_x : %s\n",pFaultSrcCtx[RA11_1+relbitIdxQuartet].szName);
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
RA11_1
|
||||
+ relbitIdxQuartet,
|
||||
1.0/8);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
if(relbitIdx<=3)
|
||||
{
|
||||
logD("- RA1x_x : %s\n",pFaultSrcCtx[RA12_1+relbitIdxQuartet].szName);
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
RA12_1
|
||||
+ relbitIdxQuartet,
|
||||
1.0/8);
|
||||
}
|
||||
else
|
||||
{
|
||||
logD("- RA1x_x : %s\n",pFaultSrcCtx[RA13_1+relbitIdxQuartet].szName);
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
RA13_1
|
||||
+ relbitIdxQuartet,
|
||||
1.0/8);
|
||||
}
|
||||
break;
|
||||
logD("- RA13_x : %s\n",pFaultSrcCtx[RA13_1+ARGBrelbitIdx-12].szName);
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
RA13_1
|
||||
+ ARGBrelbitIdx -12,
|
||||
dARGBScore);
|
||||
}
|
||||
else if(ARGBrelbitIdx>=8)
|
||||
{
|
||||
logD("- RA12_x : %s\n",pFaultSrcCtx[RA12_1+ARGBrelbitIdx-8].szName);
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
RA12_1
|
||||
+ ARGBrelbitIdx -8,
|
||||
dARGBScore);
|
||||
}
|
||||
else if(ARGBrelbitIdx>=4)
|
||||
{
|
||||
logD("- RA11_x : %s\n",pFaultSrcCtx[RA11_1+ARGBrelbitIdx-4].szName);
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
RA11_1
|
||||
+ ARGBrelbitIdx -4,
|
||||
dARGBScore);
|
||||
}
|
||||
else
|
||||
{
|
||||
logD("- RA10_x : %s\n",pFaultSrcCtx[RA10_1+ARGBrelbitIdx].szName);
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
RA10_1
|
||||
+ ARGBrelbitIdx,
|
||||
dARGBScore);
|
||||
}
|
||||
|
||||
/* Transfert path, TMU1 to TMU0*/
|
||||
@@ -214,21 +234,21 @@ AssignFault(const def_sFaultSheet * const
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
U8_TMU1
|
||||
+ 97 //U8_TMU1_TF_DATA_x
|
||||
+ relbitIdxWord,
|
||||
1.0/4);
|
||||
+ ARGBrelbitIdx,
|
||||
dARGBScore);
|
||||
/* line adaptation resistors */
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
TT_TDATA_R131
|
||||
+ 0
|
||||
+ relbitIdxWord,
|
||||
1.0/4);
|
||||
+ ARGBrelbitIdx,
|
||||
dARGBScore);
|
||||
/* TMU0 input */
|
||||
/* Note: U9_TMU0_TT_DATA_x is only tested when using TMU1 */
|
||||
FaultSource_addScore( pFaultSrcCtx,
|
||||
U9_TMU0
|
||||
+ 65 //U9_TMU0_TT_DATA_x
|
||||
+ relbitIdxWord,
|
||||
1.0/4);
|
||||
+ ARGBrelbitIdx,
|
||||
dARGBScore);
|
||||
}
|
||||
|
||||
if(WordIdx>=2)
|
||||
@@ -583,13 +603,18 @@ RenderTest( sst1DeviceInfoStruct * const
|
||||
}
|
||||
#ifdef _PROFILING
|
||||
clock_t end = clock();
|
||||
logI("time to create: %f\n",(double)(after_create-begin)/CLOCKS_PER_SEC);
|
||||
logI("time to write: %f\n",(double)(after_write-after_create)/CLOCKS_PER_SEC);
|
||||
logI("time to create: %f\n",
|
||||
(double)(after_create-begin)/CLOCKS_PER_SEC);
|
||||
logI("time to write: %f\n",
|
||||
(double)(after_write-after_create)/CLOCKS_PER_SEC);
|
||||
for(unsigned int i = 0; i<_NB_CHECK_LOOP; i++)
|
||||
{
|
||||
logI("time to draw [%d]: %f\n",i,(double)(after_draw[i]-before_draw[i])/CLOCKS_PER_SEC);
|
||||
logI("time to read [%d]: %f\n",i,(double)(after_read[i]-after_draw[i])/CLOCKS_PER_SEC);
|
||||
logI("time to check [%d]: %f\n",i,(double)(after_check[i]-after_read[i])/CLOCKS_PER_SEC);
|
||||
logI("time to draw [%d]: %f\n",
|
||||
i, (double)(after_draw[i]-before_draw[i])/CLOCKS_PER_SEC);
|
||||
logI("time to read [%d]: %f\n",
|
||||
i, (double)(after_read[i]-after_draw[i])/CLOCKS_PER_SEC);
|
||||
logI("time to check [%d]: %f\n",
|
||||
i, (double)(after_check[i]-after_read[i])/CLOCKS_PER_SEC);
|
||||
}
|
||||
logI("overall: %f\n",(double)(end-begin)/CLOCKS_PER_SEC);
|
||||
#endif
|
||||
@@ -654,7 +679,7 @@ test_TMU_datalines_Huge( sst1DeviceInfoStruct * const
|
||||
addrTest < (pMemBlk->ulAddStart + pMemBlk->ulAddLength);
|
||||
addrTest += 131072) /* 256x256x2 (16bit pixels texture) */
|
||||
{
|
||||
logD("Testing memory block 0x%08x ...\n", addrTest);
|
||||
logT("Testing memory block 0x%08x ...\n", addrTest);
|
||||
const unsigned long long
|
||||
ullNbError = RenderTest( devInfo,
|
||||
sst,
|
||||
@@ -672,7 +697,7 @@ test_TMU_datalines_Huge( sst1DeviceInfoStruct * const
|
||||
}
|
||||
}
|
||||
|
||||
clearScreen(sstregs,0x00000000,256,256);
|
||||
clearScreen(sstregs, 0x00000000, 256, 256);
|
||||
|
||||
/* reset the Init0 register back to its previous value */
|
||||
sst1InitIdle(sst);
|
||||
|
||||
Reference in New Issue
Block a user