int main(int argc, char *argv[]){ e_loader_diag_t e_verbose; e_platform_t platform; e_epiphany_t dev, *pdev; e_mem_t dram, *pdram; size_t size; int status=1;//pass char elfFile[4096]; pdev = &dev; pdram = &dram; int a,b; int i,j; unsigned result[N]; unsigned data = 0xDEADBEEF; unsigned tmp,fail; int idelay[TAPS]={0x00000000,0x00000000,//0 0x11111111,0x00000001,//1 0x22222222,0x00000002,//2 0x33333333,0x00000003,//3 0x44444444,0x00000004,//4 0x55555555,0x00000005,//5 0x66666666,0x00000006,//6 0x77777777,0x00000007,//7 0x88888888,0x00000008,//8 0x99999999,0x00000009,//9 0xaaaaaaaa,0x0000000a,//10 0xbbbbbbbb,0x0000000b,//11 0xcccccccc,0x0000000c,//12 0xdddddddd,0x0000000d,//13 0xeeeeeeee,0x0000000e,//14 0xffffffff,0x0000000f,//15 0x00000000,0x00000010,//16 0x11111111,0x00000011,//17 0x22222222,0x00000012,//18 0x33333333,0x00000013,//29 0x44444444,0x00000014,//20 0x55555555,0x00000015,//21 0x66666666,0x00000016,//22 0x77777777,0x00000017,//23 0x88888888,0x00000018,//24 0x99999999,0x00000019,//25 0xaaaaaaaa,0x0000001a,//26 0xbbbbbbbb,0x0000001b,//27 0xcccccccc,0x0000001c,//28 0xdddddddd,0x0000001d,//29 0xeeeeeeee,0x0000001e,//30 0xffffffff,0x0000001f};//31 //Gets ELF file name from command line strcpy(elfFile, "./bin/e-task.elf"); //Initalize Epiphany device e_set_host_verbosity(H_D0); e_init(NULL); my_reset_system(); e_get_platform_info(&platform); e_open(&dev, 0, 0, 1, 1); //open core 0,0 e_alloc(pdram, 0x00000000, 0x00400000); //Set Idelay ee_write_esys(0xF0310, idelay[2*7]); ee_write_esys(0xF0314, idelay[2*7+1]); //Start Program e_load_group(elfFile, &dev, 0, 0, 1, 1, E_FALSE); e_start_group(&dev); usleep(1000000); //Check status int pre_stat,mbox_lo,mbox_hi,post_stat; int ddata; for(i=0;i<32;i++){ e_read(pdram,0,0, i, &ddata, sizeof(ddata)); pre_stat = ee_read_esys(0xF0738); mbox_lo = ee_read_esys(0xF0730); //mbox_hi = ee_read_esys(0xF0734); post_stat = ee_read_esys(0xF0738); printf ("PRE_STAT=%08x POST_STAT=%08x LO=%08x HI=%08x DDATA=%04x\n", pre_stat, post_stat, mbox_lo, mbox_hi,ddata); } for(i=0;i<16;i++){ e_read(pdram,0,0, i*4, &ddata, sizeof(ddata)); printf ("DDATA=%04x\n", ddata); } //Close down Epiphany device e_close(&dev); e_finalize(); //self check if(status){ return EXIT_SUCCESS; } else{ return EXIT_FAILURE; } }
int main(int argc, char *argv[]){ //---------------------------- e_platform_t platform; e_epiphany_t dev; e_hal_diag_t e_verbose; unsigned int i,j,k,addr; unsigned int data; int status=1;//pass int row0,col0,rows,cols; int verbose=0; unsigned int high_pattern = 0xaaaaaaaa; unsigned int low_pattern = 0x55555555; unsigned int result; if (argc < 5){ usage(); exit(1); } else{ row0 = atoi(argv[1]); col0 = atoi(argv[2]); rows = atoi(argv[3]); cols = atoi(argv[4]); } //Open e_init(NULL); my_reset_system(); e_get_platform_info(&platform); e_open(&dev, 0, 0, platform.rows, platform.cols); printf("-------------------------------------------------------\n"); for (i=row0; i<(row0+rows); i++) { for (j=col0; j<(col0+cols); j++) { printf("Running host register file test for core (%d,%d)\n", i,j); for(k=0;k<REGS;k++){ addr=0xF0000+k; //high pattern e_write(&dev, i, j, addr, &high_pattern, sizeof(int)); e_read(&dev, i, j, addr, &result, sizeof(int)); printf("res=%x\n",result); if(result!=high_pattern){ status=0; } //low pattern e_write(&dev, i, j, addr, &low_pattern, sizeof(int)); e_read(&dev, i, j, addr, &result, sizeof(int)); if(result!=low_pattern){ status=0; } } } } //Close e_close(&dev); e_finalize(); //Self Check if(status){ return EXIT_SUCCESS; } else{ return EXIT_FAILURE; } }
int main(int argc, char *argv[]){ //---------------------------- e_platform_t platform; e_epiphany_t dev; e_loader_diag_t e_verbose; unsigned int i,j,k,addr; unsigned int data; int status=1;//pass int row0,col0,rows,cols; int verbose=0; char result,data_in,expected; char high_pattern = 0xff; char low_pattern = 0x00; if (argc < 5){ usage(); exit(1); } else{ row0 = atoi(argv[1]); col0 = atoi(argv[2]); rows = atoi(argv[3]); cols = atoi(argv[4]); } //Open e_init(NULL); my_reset_system(); e_get_platform_info(&platform); e_open(&dev, 0, 0, platform.rows, platform.cols); //e_set_loader_verbosity(L_D3); printf("-------------------------------------------------------\n"); for (i=row0; i<(row0+rows); i++) { for (j=col0; j<(col0+cols); j++) { printf("Running host march-C read/write test for core (%d,%d)\n", i,j); //M0: UP{w0} for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){ addr= k; //W0 data_in=low_pattern; e_write(&dev, i, j, k, &data_in, sizeof(data_in)); } //M1: UP{r0,w1,r1,w0,r0,w1} for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){ addr= k; //R0 expected=low_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M1: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } //W1 data_in=high_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); //R1 expected=high_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M1: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } //W0 data_in=low_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); //R0 expected=low_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M1: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } //W1 data_in=high_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); } //M2: UP{r1,w0,w1} for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){ addr=(k); //R1 expected=high_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M2: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } //W0 data_in=low_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); //W1 data_in=high_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); } //M3: DOWN{R1,W0,W1,W0} for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){ addr=(RAM_SIZE-k-WORD_SIZE); //R1 expected=high_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M3: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } //W0 data_in=low_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); //W1 data_in=high_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); //W0 data_in=low_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); } //M4:DOWN{R0,W1,W0} for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){ addr=(RAM_SIZE-k-WORD_SIZE); //R0 expected=low_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M4: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } //W1 data_in=high_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); //W0 data_in=low_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); } //M5:DOWN{R0,W1,R1} for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){ addr=(RAM_SIZE-k-WORD_SIZE); //R0 expected=low_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M5: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } //W1 data_in=high_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); //R1 expected=high_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M5: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } } //M6:DOWN{R1,W0,R0} for(k=0;k<(RAM_SIZE);k=k+WORD_SIZE){ addr=(RAM_SIZE-k-WORD_SIZE); //R1 expected=high_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M6: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } //W0 data_in=low_pattern; e_write(&dev, i, j, addr, &data_in, sizeof(data_in)); //R0 expected=low_pattern; e_read(&dev, i, j, addr, &result, sizeof(result)); if(result!=expected){ if(verbose){ printf("FAIL-PAT-M6: addr=0x%x expected=0x%x result=0x%x\n",addr,expected,result); } status=0; } } } } //Close e_close(&dev); e_finalize(); //Self Check if(status){ return EXIT_SUCCESS; } else{ return EXIT_FAILURE; } }