OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_47/] [or1ksim/] [testbench/] [mc_common.c] - Diff between revs 1419 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 1419 Rev 1765
/* mc_common.c -- Memory Controller testbenck common routines
/* mc_common.c -- Memory Controller testbenck common routines
         Copyright (C) 2001 by Ivan Guzvinec, ivang@opencores.org
         Copyright (C) 2001 by Ivan Guzvinec, ivang@opencores.org
 
 
         This file is part of OpenRISC 1000 Architectural Simulator.
         This file is part of OpenRISC 1000 Architectural Simulator.
 
 
         This program is free software; you can redistribute it and/or modify
         This program is free software; you can redistribute it and/or modify
         it under the terms of the GNU General Public License as published by
         it under the terms of the GNU General Public License as published by
         the Free Software Foundation; either version 2 of the License, or
         the Free Software Foundation; either version 2 of the License, or
         (at your option) any later version.
         (at your option) any later version.
 
 
         This program is distributed in the hope that it will be useful,
         This program is distributed in the hope that it will be useful,
         but WITHOUT ANY WARRANTY; without even the implied warranty of
         but WITHOUT ANY WARRANTY; without even the implied warranty of
         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.    See the
         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.    See the
         GNU General Public License for more details.
         GNU General Public License for more details.
 
 
         You should have received a copy of the GNU General Public License
         You should have received a copy of the GNU General Public License
         along with this program; if not, write to the Free Software
         along with this program; if not, write to the Free Software
         Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
         Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
*/
 
 
#include "support.h"
#include "support.h"
#include "mc_common.h"
#include "mc_common.h"
 
 
static int r_Xn;
static int r_Xn;
static int r_mod;
static int r_mod;
 
 
void randomin(unsigned long seed)
void randomin(unsigned long seed)
{
{
  r_Xn = seed;
  r_Xn = seed;
  r_mod = 33554431; /* 2^25 - 1*/
  r_mod = 33554431; /* 2^25 - 1*/
}
}
 
 
unsigned long random(unsigned long max)
unsigned long random(unsigned long max)
{
{
  r_Xn = ((r_Xn * (r_Xn + 1))%r_mod);
  r_Xn = ((r_Xn * (r_Xn + 1))%r_mod);
  if (r_Xn == 0) r_Xn = 42+1;
  if (r_Xn == 0) r_Xn = 42+1;
  return r_Xn%max;
  return r_Xn%max;
}
}
 
 
void mc_clear_row(unsigned long nFrom, unsigned long nTo)
void mc_clear_row(unsigned long nFrom, unsigned long nTo)
{
{
  MEMLOC32 mem32 = 0;
  MEMLOC32 mem32 = 0;
  unsigned long i;
  unsigned long i;
 
 
  for(i=nFrom; i<nTo; i+=4) {
  for(i=nFrom; i<nTo; i+=4) {
    mem32  = (unsigned long*)i;
    mem32  = (unsigned long*)i;
    *mem32 = 0UL;
    *mem32 = 0UL;
  }
  }
}
}
 
 
unsigned long mc_test_row_8(int run, int seq, unsigned long nFrom, unsigned long nTo)
unsigned long mc_test_row_8(int run, int seq, unsigned long nFrom, unsigned long nTo)
{
{
    MEMLOC8  mem8  = 0;
    MEMLOC8  mem8  = 0;
    MEMLOC16 mem16 = 0;
    MEMLOC16 mem16 = 0;
    MEMLOC32 mem32 = 0;
    MEMLOC32 mem32 = 0;
 
 
    unsigned char pattern    = 0;
    unsigned char pattern    = 0;
    unsigned short pattern16 = 0;
    unsigned short pattern16 = 0;
    unsigned long pattern32  = 0;
    unsigned long pattern32  = 0;
    unsigned char read;
    unsigned char read;
    unsigned short read16;
    unsigned short read16;
    unsigned long read32;
    unsigned long read32;
    int inc = 0;
    int inc = 0;
 
 
    unsigned long i;
    unsigned long i;
 
 
    /* number of locations to test */
    /* number of locations to test */
    unsigned long nWords = nTo - nFrom;
    unsigned long nWords = nTo - nFrom;
 
 
    switch (run) {
    switch (run) {
    case 0:
    case 0:
        pattern = MC_TEST_PAT1_8;
        pattern = MC_TEST_PAT1_8;
        pattern16 = (pattern << 8);
        pattern16 = (pattern << 8);
        pattern32 = (pattern16 << 16); break;
        pattern32 = (pattern16 << 16); break;
    case 1:
    case 1:
        pattern = MC_TEST_PAT2_8;
        pattern = MC_TEST_PAT2_8;
        pattern16 = (pattern << 8);
        pattern16 = (pattern << 8);
        pattern32 = (pattern16 << 16); break;
        pattern32 = (pattern16 << 16); break;
    case 2:
    case 2:
        pattern = MC_TEST_PAT3_8;
        pattern = MC_TEST_PAT3_8;
        pattern16 = (pattern << 8);
        pattern16 = (pattern << 8);
        pattern32 = (pattern16 << 16); break;
        pattern32 = (pattern16 << 16); break;
    case 3:
    case 3:
        pattern = MC_TEST_PAT4_8;
        pattern = MC_TEST_PAT4_8;
        pattern16 = (pattern << 8);
        pattern16 = (pattern << 8);
        pattern32 = (pattern16 << 16); break;
        pattern32 = (pattern16 << 16); break;
    case 4:
    case 4:
        pattern32 = pattern16 = pattern = 0; inc = 1; break;
        pattern32 = pattern16 = pattern = 0; inc = 1; break;
    } /*switch*/
    } /*switch*/
 
 
    printf ("\tmc_test_row_8(0x%02dX, %d, 0x%08lX, 0x%08lX);\n", pattern, seq, nFrom, nTo);
    printf ("\tmc_test_row_8(0x%02dX, %d, 0x%08lX, 0x%08lX);\n", pattern, seq, nFrom, nTo);
 
 
    switch (seq) {
    switch (seq) {
    case 0: /*seq. row write, row read*/
    case 0: /*seq. row write, row read*/
        for (i=nFrom; i<nTo; i++) {
        for (i=nFrom; i<nTo; i++) {
            mem8  = (unsigned char*)i;
            mem8  = (unsigned char*)i;
            *mem8 = pattern;
            *mem8 = pattern;
            if (inc) pattern++;
            if (inc) pattern++;
        } /*for*/
        } /*for*/
 
 
        if (inc) pattern = 0;
        if (inc) pattern = 0;
        for (i=nFrom; i<nTo; i++) {
        for (i=nFrom; i<nTo; i++) {
            mem8 = (unsigned char*)i;
            mem8 = (unsigned char*)i;
            read = *mem8;
            read = *mem8;
 
 
            if ( read != pattern ) {
            if ( read != pattern ) {
                printf("\ti=%lX, read=0x%02dX, pattern=0x%02dX\n", i, read, pattern);
                printf("\ti=%lX, read=0x%02dX, pattern=0x%02dX\n", i, read, pattern);
                return (unsigned long)mem8;
                return (unsigned long)mem8;
            }
            }
 
 
            if (inc) pattern++;
            if (inc) pattern++;
        } /*for*/
        } /*for*/
        break;
        break;
    case 1: /*seq. word write, word read*/
    case 1: /*seq. word write, word read*/
        for (i=nFrom; i<nTo; i++) {
        for (i=nFrom; i<nTo; i++) {
            mem8  = (unsigned char*)i;
            mem8  = (unsigned char*)i;
            *mem8 = pattern;
            *mem8 = pattern;
            read = *mem8;
            read = *mem8;
 
 
            if (read != pattern ) {
            if (read != pattern ) {
                printf("\ti=%lX, read=0x%02dX, pattern=0x%02dX\n", i, read, pattern);
                printf("\ti=%lX, read=0x%02dX, pattern=0x%02dX\n", i, read, pattern);
                return (unsigned long)mem8;
                return (unsigned long)mem8;
            }
            }
 
 
            mem16  = (unsigned short*)(i & 0xFFFFFFFELU);
            mem16  = (unsigned short*)(i & 0xFFFFFFFELU);
            read16 = *mem16;
            read16 = *mem16;
            if (read16 != pattern16) {
            if (read16 != pattern16) {
                printf("\ti=%lX, read16=0x%04dX, pattern16=0x%04dX\n", i, read16, pattern16);
                printf("\ti=%lX, read16=0x%04dX, pattern16=0x%04dX\n", i, read16, pattern16);
                return (unsigned long)mem16;
                return (unsigned long)mem16;
            }
            }
            mem32  = (unsigned long*)(i & 0xFFFFFFFCLU);
            mem32  = (unsigned long*)(i & 0xFFFFFFFCLU);
            read32 = *mem32;
            read32 = *mem32;
            if (read32 != pattern32) {
            if (read32 != pattern32) {
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                return (unsigned long)mem32;
                return (unsigned long)mem32;
            }
            }
 
 
            if (inc) pattern++;
            if (inc) pattern++;
            switch ((i+1)%4) {
            switch ((i+1)%4) {
            case 0:
            case 0:
                pattern16 = (pattern << 8);
                pattern16 = (pattern << 8);
                pattern32 = (pattern << 24); break;
                pattern32 = (pattern << 24); break;
            case 1:
            case 1:
                pattern16 += pattern;
                pattern16 += pattern;
                pattern32 = pattern16 << 16; break;
                pattern32 = pattern16 << 16; break;
            case 2:
            case 2:
                pattern16 = (pattern << 8);
                pattern16 = (pattern << 8);
                pattern32 += pattern16;break;
                pattern32 += pattern16;break;
            case 3:
            case 3:
                pattern16 += pattern;
                pattern16 += pattern;
                pattern32 += pattern; break;
                pattern32 += pattern; break;
            } /*switch i%4*/
            } /*switch i%4*/
        } /*for*/
        } /*for*/
        break;
        break;
    case 2: /*rand. word write, word read*/
    case 2: /*rand. word write, word read*/
        for (i=0; i<nWords; i++) {
        for (i=0; i<nWords; i++) {
            mem8  = (unsigned char*)(nFrom + random(nWords));
            mem8  = (unsigned char*)(nFrom + random(nWords));
            *mem8 = pattern;
            *mem8 = pattern;
            read  = *mem8;
            read  = *mem8;
 
 
            if (read != pattern ) {
            if (read != pattern ) {
                printf("\ti=%lX, read=0x%02dX, pattern=0x%02dX\n", i, read, pattern);
                printf("\ti=%lX, read=0x%02dX, pattern=0x%02dX\n", i, read, pattern);
                return (unsigned long)mem8;
                return (unsigned long)mem8;
            }
            }
 
 
            if (inc) pattern++;
            if (inc) pattern++;
        }
        }
        break;
        break;
    } /*switch seq*/
    } /*switch seq*/
 
 
    return 0;
    return 0;
} /* mc_test_row_8 */
} /* mc_test_row_8 */
 
 
unsigned long mc_test_row_16(int run, int seq, unsigned long nFrom, unsigned long nTo)
unsigned long mc_test_row_16(int run, int seq, unsigned long nFrom, unsigned long nTo)
{
{
    MEMLOC16 mem16 = 0;
    MEMLOC16 mem16 = 0;
    MEMLOC32 mem32 = 0;
    MEMLOC32 mem32 = 0;
 
 
    unsigned short pattern16 = 0;
    unsigned short pattern16 = 0;
    unsigned long pattern32  = 0;
    unsigned long pattern32  = 0;
    unsigned short read16;
    unsigned short read16;
    unsigned long read32;
    unsigned long read32;
    int inc = 0;
    int inc = 0;
 
 
    unsigned long i;
    unsigned long i;
 
 
    unsigned long nWords = (nTo - nFrom)/2;
    unsigned long nWords = (nTo - nFrom)/2;
 
 
    switch (run) {
    switch (run) {
    case 0:
    case 0:
        pattern16 = MC_TEST_PAT1_16;
        pattern16 = MC_TEST_PAT1_16;
        pattern32 = (pattern16 << 16); break;
        pattern32 = (pattern16 << 16); break;
    case 1:
    case 1:
        pattern16 = MC_TEST_PAT2_16;
        pattern16 = MC_TEST_PAT2_16;
        pattern32 = (pattern16 << 16); break;
        pattern32 = (pattern16 << 16); break;
    case 2:
    case 2:
        pattern16 = MC_TEST_PAT3_16;
        pattern16 = MC_TEST_PAT3_16;
        pattern32 = (pattern16 << 16);break;
        pattern32 = (pattern16 << 16);break;
    case 3:
    case 3:
        pattern16 = MC_TEST_PAT4_16;
        pattern16 = MC_TEST_PAT4_16;
        pattern32 = (pattern16 << 16); break;
        pattern32 = (pattern16 << 16); break;
    case 4:
    case 4:
        pattern16 = pattern32 = 0; inc = 1; break;
        pattern16 = pattern32 = 0; inc = 1; break;
    } /*switch*/
    } /*switch*/
 
 
    printf ("\tmc_test_row_16(0x%04dX, %d, 0x%08lX, 0x%08lX);\n", pattern16, seq, nFrom, nTo);
    printf ("\tmc_test_row_16(0x%04dX, %d, 0x%08lX, 0x%08lX);\n", pattern16, seq, nFrom, nTo);
 
 
    switch (seq) {
    switch (seq) {
    case 0: /*seq. row write, row read*/
    case 0: /*seq. row write, row read*/
        for (i=nFrom; i<nTo; i+=2) {
        for (i=nFrom; i<nTo; i+=2) {
            mem16  = (unsigned short*)i;
            mem16  = (unsigned short*)i;
            *mem16 = pattern16;
            *mem16 = pattern16;
            if (inc) pattern16++;
            if (inc) pattern16++;
        } /*for*/
        } /*for*/
 
 
        if (inc) pattern16 = 0;
        if (inc) pattern16 = 0;
        for (i=nFrom; i<nTo; i+=2) {
        for (i=nFrom; i<nTo; i+=2) {
            mem16  = (unsigned short*)i;
            mem16  = (unsigned short*)i;
            read16 = *mem16;
            read16 = *mem16;
 
 
            if ( read16 != pattern16 ) {
            if ( read16 != pattern16 ) {
                printf("\ti=%lX, read16=0x%04dX, pattern16=0x%04dX\n", i, read16, pattern16);
                printf("\ti=%lX, read16=0x%04dX, pattern16=0x%04dX\n", i, read16, pattern16);
                return (unsigned long)mem16;
                return (unsigned long)mem16;
            }
            }
 
 
            if (inc) pattern16++;
            if (inc) pattern16++;
        } /*for*/
        } /*for*/
        break;
        break;
    case 1: /*seq. word write, word read*/
    case 1: /*seq. word write, word read*/
        for (i=nFrom; i<nTo; i+=2) {
        for (i=nFrom; i<nTo; i+=2) {
            mem16  = (unsigned short*)i;
            mem16  = (unsigned short*)i;
            *mem16 = pattern16;
            *mem16 = pattern16;
            read16 = *mem16;
            read16 = *mem16;
 
 
            if (read16 != pattern16 ) {
            if (read16 != pattern16 ) {
                printf("\ti=%lX, read16=0x%04dX, pattern16=0x%04dX\n", i, read16, pattern16);
                printf("\ti=%lX, read16=0x%04dX, pattern16=0x%04dX\n", i, read16, pattern16);
                return (unsigned long)mem16;
                return (unsigned long)mem16;
            }
            }
 
 
            mem32  = (unsigned long*)(i & 0xFFFFFFFCLU);
            mem32  = (unsigned long*)(i & 0xFFFFFFFCLU);
            read32 = *mem32;
            read32 = *mem32;
            if (read32 != pattern32) {
            if (read32 != pattern32) {
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                return (unsigned long)mem32;
                return (unsigned long)mem32;
            }
            }
 
 
            if (inc) pattern16++;
            if (inc) pattern16++;
            switch ((i+2)%4) {
            switch ((i+2)%4) {
            case 0:
            case 0:
                pattern32 = (pattern16 << 16); break;
                pattern32 = (pattern16 << 16); break;
            case 2:
            case 2:
                pattern32 += pattern16;
                pattern32 += pattern16;
            } /*switch i%4*/
            } /*switch i%4*/
        } /*for*/
        } /*for*/
        break;
        break;
    case 2: /*rand. word write, word read*/
    case 2: /*rand. word write, word read*/
        for (i=0; i<nWords; i++) {
        for (i=0; i<nWords; i++) {
            mem16  = (unsigned short*)(nFrom + random(nWords)*2);
            mem16  = (unsigned short*)(nFrom + random(nWords)*2);
            *mem16 = pattern16;
            *mem16 = pattern16;
            read16 = *mem16;
            read16 = *mem16;
 
 
            if (read16 != pattern16 ) {
            if (read16 != pattern16 ) {
                printf("\ti=%lX, read16=0x%04dX, pattern16=0x%04dX\n", i, read16, pattern16);
                printf("\ti=%lX, read16=0x%04dX, pattern16=0x%04dX\n", i, read16, pattern16);
                return (unsigned long)mem16;
                return (unsigned long)mem16;
            }
            }
 
 
            if (inc) pattern16++;
            if (inc) pattern16++;
        }
        }
        break;
        break;
    } /*switch seq*/
    } /*switch seq*/
    return 0;
    return 0;
} /* mc_test_row_16 */
} /* mc_test_row_16 */
 
 
unsigned long mc_test_row_32(int run, int seq, unsigned long nFrom, unsigned long nTo)
unsigned long mc_test_row_32(int run, int seq, unsigned long nFrom, unsigned long nTo)
{
{
    MEMLOC32 mem32 = 0;
    MEMLOC32 mem32 = 0;
 
 
    unsigned long pattern32 = 0;
    unsigned long pattern32 = 0;
    unsigned long read32;
    unsigned long read32;
    int inc = 0;
    int inc = 0;
 
 
    unsigned long i;
    unsigned long i;
 
 
    unsigned long nWords = (nTo - nFrom)/4;
    unsigned long nWords = (nTo - nFrom)/4;
 
 
    switch (run) {
    switch (run) {
    case 0:
    case 0:
        pattern32 = MC_TEST_PAT1_32; break;
        pattern32 = MC_TEST_PAT1_32; break;
    case 1:
    case 1:
        pattern32 = MC_TEST_PAT2_32; break;
        pattern32 = MC_TEST_PAT2_32; break;
    case 2:
    case 2:
        pattern32 = MC_TEST_PAT3_32; break;
        pattern32 = MC_TEST_PAT3_32; break;
    case 3:
    case 3:
        pattern32 = MC_TEST_PAT4_32; break;
        pattern32 = MC_TEST_PAT4_32; break;
    case 4:
    case 4:
        pattern32 = nFrom; inc = 1; break;
        pattern32 = nFrom; inc = 1; break;
    } /*switch*/
    } /*switch*/
 
 
    printf ("\tmc_test_row_32(0x%08lX, %d, 0x%08lX, 0x%08lX);\n", pattern32, seq, nFrom, nTo);
    printf ("\tmc_test_row_32(0x%08lX, %d, 0x%08lX, 0x%08lX);\n", pattern32, seq, nFrom, nTo);
 
 
    switch (seq) {
    switch (seq) {
    case 0: /*seq. row write, row read*/
    case 0: /*seq. row write, row read*/
        for (i=nFrom; i<nTo; i+=4) {
        for (i=nFrom; i<nTo; i+=4) {
            mem32  = (unsigned long*)i;
            mem32  = (unsigned long*)i;
            *mem32 = pattern32;
            *mem32 = pattern32;
            if (inc) pattern32 += 4;
            if (inc) pattern32 += 4;
        } /*for*/
        } /*for*/
 
 
        if (inc) pattern32 = nFrom;
        if (inc) pattern32 = nFrom;
        for (i=nFrom; i<nTo; i+=4) {
        for (i=nFrom; i<nTo; i+=4) {
            mem32 = (unsigned long *)i;
            mem32 = (unsigned long *)i;
            read32 = *mem32;
            read32 = *mem32;
 
 
            if ( read32 != pattern32 ) {
            if ( read32 != pattern32 ) {
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                return (unsigned long)mem32;
                return (unsigned long)mem32;
            }
            }
 
 
            if (inc) pattern32 += 4;
            if (inc) pattern32 += 4;
        } /*for*/
        } /*for*/
        break;
        break;
    case 1: /*seq. word write, word read*/
    case 1: /*seq. word write, word read*/
        for (i=nFrom; i<nTo; i+=4) {
        for (i=nFrom; i<nTo; i+=4) {
            mem32  = (unsigned long*)i;
            mem32  = (unsigned long*)i;
            *mem32 = pattern32;
            *mem32 = pattern32;
            read32 = *mem32;
            read32 = *mem32;
 
 
            if (read32 != pattern32 ) {
            if (read32 != pattern32 ) {
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                return (unsigned long)mem32;
                return (unsigned long)mem32;
            }
            }
 
 
            if (inc) pattern32 += 4;
            if (inc) pattern32 += 4;
 
 
        }
        }
        break;
        break;
    case 2: /*rand. word write, word read*/
    case 2: /*rand. word write, word read*/
        for (i=0; i<nWords; i++) {
        for (i=0; i<nWords; i++) {
            mem32 = (unsigned long*)(nFrom + random(nWords)*4);
            mem32 = (unsigned long*)(nFrom + random(nWords)*4);
            if (inc)
            if (inc)
                pattern32 = (unsigned long)mem32;
                pattern32 = (unsigned long)mem32;
            *mem32 = pattern32;
            *mem32 = pattern32;
            read32  = *mem32;
            read32  = *mem32;
 
 
            if (read32 != pattern32 ) {
            if (read32 != pattern32 ) {
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                printf("\ti=%lX, read32=0x%08lX, pattern32=0x%08lX\n", i, read32, pattern32);
                return (unsigned long)mem32;
                return (unsigned long)mem32;
            }
            }
        } /*for*/
        } /*for*/
        break;
        break;
    } /*switch seq*/
    } /*switch seq*/
    return 0;
    return 0;
} /* mc_test_row_32 */
} /* mc_test_row_32 */
 
 
 
 
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
 
 
 
 
/*-----[ Common Functions ]--------------------------------------------------*/
/*-----[ Common Functions ]--------------------------------------------------*/
unsigned long mc_test_row(unsigned long nFrom, unsigned long nTo, unsigned long flags)
unsigned long mc_test_row(unsigned long nFrom, unsigned long nTo, unsigned long flags)
{
{
    int nRun, nSize, nSeq;
    int nRun, nSize, nSeq;
    int ret = 0;
    int ret = 0;
 
 
    printf("\nmc_test_row(0x%08lX, 0x%08lX)\n", nFrom, nTo);
    printf("\nmc_test_row(0x%08lX, 0x%08lX)\n", nFrom, nTo);
 
 
    for (nRun = 0; nRun < 5; nRun++) {
    for (nRun = 0; nRun < 5; nRun++) {
        switch (nRun) {
        switch (nRun) {
        case 0:
        case 0:
            if ( (flags & MC_TEST_RUN0) != MC_TEST_RUN0 )
            if ( (flags & MC_TEST_RUN0) != MC_TEST_RUN0 )
                continue;
                continue;
            break;
            break;
        case 1:
        case 1:
            if ( (flags & MC_TEST_RUN1) != MC_TEST_RUN1 )
            if ( (flags & MC_TEST_RUN1) != MC_TEST_RUN1 )
                continue;
                continue;
            break;
            break;
        case 2:
        case 2:
            if ( (flags & MC_TEST_RUN01) != MC_TEST_RUN01 )
            if ( (flags & MC_TEST_RUN01) != MC_TEST_RUN01 )
                continue;
                continue;
            break;
            break;
        case 3:
        case 3:
            if ( (flags & MC_TEST_RUN10) != MC_TEST_RUN10 )
            if ( (flags & MC_TEST_RUN10) != MC_TEST_RUN10 )
                continue;
                continue;
            break;
            break;
        case 4:
        case 4:
            if ( (flags & MC_TEST_RUNINC) != MC_TEST_RUNINC )
            if ( (flags & MC_TEST_RUNINC) != MC_TEST_RUNINC )
                continue;
                continue;
        } /*switch*/
        } /*switch*/
 
 
        for (nSeq = 0; nSeq < 3; nSeq++) {
        for (nSeq = 0; nSeq < 3; nSeq++) {
            switch (nSeq) {
            switch (nSeq) {
            case 0:
            case 0:
                if ( (flags & MC_TEST_SEQ) != MC_TEST_SEQ )
                if ( (flags & MC_TEST_SEQ) != MC_TEST_SEQ )
                    continue;
                    continue;
                break;
                break;
            case 1:
            case 1:
                if ( (flags & MC_TEST_SEQ1) != MC_TEST_SEQ1 )
                if ( (flags & MC_TEST_SEQ1) != MC_TEST_SEQ1 )
                    continue;
                    continue;
                break;
                break;
            case 2:
            case 2:
              if ( (flags & MC_TEST_RAND) != MC_TEST_RAND )
              if ( (flags & MC_TEST_RAND) != MC_TEST_RAND )
                    continue;
                    continue;
            } /*switch*/
            } /*switch*/
 
 
            for (nSize = 0; nSize < 3; nSize++) {
            for (nSize = 0; nSize < 3; nSize++) {
                switch (nSize) {
                switch (nSize) {
                case 0:
                case 0:
                    if ( (flags & MC_TEST_8) != MC_TEST_8 )
                    if ( (flags & MC_TEST_8) != MC_TEST_8 )
                        continue;
                        continue;
                    ret = mc_test_row_8(nRun, nSeq, nFrom, nTo);
                    ret = mc_test_row_8(nRun, nSeq, nFrom, nTo);
                    break;
                    break;
                case 1:
                case 1:
                    if ( (flags & MC_TEST_16) != MC_TEST_16)
                    if ( (flags & MC_TEST_16) != MC_TEST_16)
                        continue;
                        continue;
                    ret = mc_test_row_16(nRun, nSeq, nFrom, nTo);
                    ret = mc_test_row_16(nRun, nSeq, nFrom, nTo);
                    break;
                    break;
                case 2:
                case 2:
                    if ( (flags & MC_TEST_32) != MC_TEST_32)
                    if ( (flags & MC_TEST_32) != MC_TEST_32)
                        continue;
                        continue;
                    ret = mc_test_row_32(nRun, nSeq, nFrom, nTo);
                    ret = mc_test_row_32(nRun, nSeq, nFrom, nTo);
                } /*switch*/
                } /*switch*/
 
 
                if (ret) return ret;
                if (ret) return ret;
                mc_clear_row(nFrom, nTo);
                mc_clear_row(nFrom, nTo);
            } /*for nSize*/
            } /*for nSize*/
        } /*for nSeq*/
        } /*for nSeq*/
        /*report(0xDEADDEAD);*/
        /*report(0xDEADDEAD);*/
    } /*for nRun*/
    } /*for nRun*/
 
 
    return 0;
    return 0;
} /* mc_test_row */
} /* mc_test_row */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.