⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_vec_512mddr2_x8.h

📁 ddr 2 接口读写测试模块 ddr 2 接口读写测试模块
💻 H
📖 第 1 页 / 共 3 页
字号:
/* test_vec_512mddr2_x8.h */#include <stdio.h>#include <stdlib.h>#include <math.h>unsigned GETBITS(unsigned x, int p){  return (x >> p) & ~(~0 << 1);}TEST_PGM_CODE_GEN(char *rdchar, unsigned bank, unsigned cycle, unsigned cke, unsigned u_dqm,       unsigned l_dqm, unsigned udqs, unsigned ldqs, unsigned addr, unsigned data, FILE *fpw){  unsigned int i, j, k, l, m = 0;  unsigned dq[8], a[14], b[2];  unsigned udqm, udqm1, ldqm, ldqm1;  if (u_dqm == 0)    {udqm = 0; udqm1 = 0;}  else if (u_dqm == 10)    {udqm = 1; udqm1 = 0;}  else if (u_dqm == 01)    {udqm = 0; udqm1 = 1;}  else if (u_dqm == 11)    {udqm = 1; udqm1 = 1;}  if (l_dqm == 0)    {ldqm = 0; ldqm1 = 0;}  else if (l_dqm == 10)    {ldqm = 1; ldqm1 = 0;}  else if (l_dqm == 01)    {ldqm = 0; ldqm1 = 1;}  else if (l_dqm == 11)    {ldqm = 1; ldqm1 = 1;}  if (data != 10000)  {    for(j=0;j<8;j++)      dq[j] = GETBITS(data, j);  }  if (addr != 10000)  {    for(k=0;k<14;k++)      a[k] = GETBITS(addr, k);  }  if (bank == 0)     {b[1] = 0;b[0] = 0;}  else if (bank == 1)    {b[1] = 0;b[0] = 1;}  else if (bank == 2)    {b[1] = 1;b[0] = 0;}  else if (bank == 3)    {b[1] = 1;b[0] = 1;}  else    printf("Bank Addr. Input ERROR!\n");      if (strcmp(rdchar,"NOP") == 0)  {    fprintf(fpw, "###################################   %s   #####################################\n", rdchar);    for (i=0;i<cycle;i++)    {      fprintf(fpw, "0 %d 0 1 1 1 %d %d ", cke, udqm, ldqm);      if (udqs == 10000)        fprintf(fpw, "Z ");      else if (udqs == 5000)       fprintf(fpw, "0 ");      else       fprintf(fpw, "%d ", udqs);      if (ldqs == 10000)       fprintf(fpw, "Z ");      else if(ldqs == 5000)       fprintf(fpw, "0 ");      else       fprintf(fpw, "%d ", ldqs);      fprintf(fpw, "%d %d ", b[1], b[0]);      if (addr == 10000)        fprintf(fpw, "- - - - - - - - - - - - - - ");      else         fprintf(fpw, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d ", a[13], a[12], a[11], a[10], a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);      if (data == 10000)        fprintf(fpw, "Z Z Z Z Z Z Z Z\n");      else       {        for(m=0;m<8;m++)          fprintf(fpw, "%d ", dq[7-m]);        fprintf(fpw, "\n");      }      fprintf(fpw, "1 %d 0 1 1 1 %d %d ", cke, udqm1, ldqm1);      if (udqs == 10000)       fprintf(fpw, "Z ");      else if(udqs == 5000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", abs(udqs - 1));      if (ldqs == 10000)       fprintf(fpw, "Z ");      else if(udqs == 5000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", abs(ldqs - 1));      fprintf(fpw, "%d %d ", b[1], b[0]);      if (addr == 10000)         fprintf(fpw, "- - - - - - - - - - - - - - ");      else         fprintf(fpw, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d ", a[13], a[12], a[11], a[10] ,a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);      if (data == 10000)        fprintf(fpw, "Z Z Z Z Z Z Z Z\n");      else       {        for(m=0;m<8;m++)          fprintf(fpw, "%d ", !dq[7-m]);        fprintf(fpw, "\n");      }    }    printf("%s Command Is Completed!\n", rdchar);   }  else if (strcmp(rdchar,"DSEL") == 0)  {    fprintf(fpw, "###################################   %s   ####################################\n", rdchar);    for (i=0;i<cycle;i++)    {      fprintf(fpw, "0 %d 1 - - - %d %d ", cke, udqm, ldqm);      if (udqs == 10000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", udqs);      if (ldqs == 10000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", ldqs);      fprintf(fpw, "%d %d ", b[1], b[0]);      if (addr == 10000)        fprintf(fpw, "- - - - - - - - - - - - - - ");      else        fprintf(fpw, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d ", a[13], a[12], a[11], a[10], a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);      if (data == 10000)        fprintf(fpw, "Z Z Z Z Z Z Z Z\n");      else      {        for(m=0;m<8;m++)          fprintf(fpw, "%d ", dq[7-m]);        fprintf(fpw, "\n");      }      fprintf(fpw, "1 %d 1 - - - %d %d ", cke, udqm1, ldqm1);      if (udqs == 10000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", udqs);      if (ldqs == 10000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", ldqs);      fprintf(fpw, "%d %d ", b[1], b[0]);      if (addr == 10000)        fprintf(fpw, "- - - - - - - - - - - - - - ");      else        fprintf(fpw, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d ", a[13], a[12], a[11], a[10], a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);      if (data == 10000)        fprintf(fpw, "Z Z Z Z Z Z Z Z\n");      else      {        for(m=0;m<8;m++)          fprintf(fpw, "%d ", dq[7-m]);        fprintf(fpw, "\n");      }    }    printf("%s Command Is Completed!\n", rdchar);  }  else if (strcmp(rdchar,"RD") == 0)  {    fprintf(fpw, "####################################   %s   #####################################\n", rdchar);    for (i=0;i<cycle;i++)    {      fprintf(fpw, "0 %d 0 1 0 1 %d %d ", cke, udqm, ldqm);      if (udqs == 10000)       fprintf(fpw, "Z ");      else if (udqs == 5000)       fprintf(fpw, "0 ");      else if (udqs == 0)       fprintf(fpw, "0 ");      if (ldqs == 10000)       fprintf(fpw, "Z ");      else if (ldqs == 5000)       fprintf(fpw, "0 ");      else if (ldqs == 0)       fprintf(fpw, "0 ");      fprintf(fpw, "%d %d ", b[1], b[0]);      if (addr == 10000)        fprintf(fpw, "- - - - - - - - - - - - - - ");      else        fprintf(fpw, "0 0 0 0 %d %d %d %d %d %d %d %d %d %d ", a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);      if (data == 10000)        fprintf(fpw, "Z Z Z Z Z Z Z Z\n");      else      {        for(m=0;m<8;m++)          fprintf(fpw, "%d ", dq[7-m]);        fprintf(fpw, "\n");      }      fprintf(fpw, "1 %d 0 1 0 1 %d %d ", cke, udqm1, ldqm1);      if (udqs == 10000)       fprintf(fpw, "Z ");      else if (udqs == 5000)       fprintf(fpw, "Z ");      else if (udqs == 0)       fprintf(fpw, "1 ");      if (ldqs == 10000)       fprintf(fpw, "Z ");      else if (ldqs == 5000)       fprintf(fpw, "Z ");      else if (ldqs == 0)       fprintf(fpw, "1 ");      fprintf(fpw, "%d %d ", b[1], b[0]);      if (addr == 10000)        fprintf(fpw, "- - - - - - - - - - - - - - ");      else        fprintf(fpw, "0 0 0 0 %d %d %d %d %d %d %d %d %d %d ", a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);      if (data == 10000)        fprintf(fpw, "Z Z Z Z Z Z Z Z\n");      else      {        for(m=0;m<8;m++)          fprintf(fpw, "%d ", dq[7-m]);        fprintf(fpw, "\n");      }    }    printf("%s Command Is Completed!\n", rdchar);  }  else if (strcmp(rdchar,"RDAP") == 0)  {    fprintf(fpw, "###################################   %s   ####################################\n", rdchar);    for (i=0;i<cycle;i++)    {      fprintf(fpw, "0 %d 0 1 0 1 %d %d ", cke, udqm, ldqm);      if (udqs == 10000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", udqs);      if (ldqs == 10000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", ldqs);      fprintf(fpw, "%d %d ", b[1], b[0]);      if (addr == 10000)        fprintf(fpw, "- - - - - - - - - - - - - - ");      else        fprintf(fpw, "0 0 0 1 %d %d %d %d %d %d %d %d %d %d ", a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);      if (data == 10000)        fprintf(fpw, "Z Z Z Z Z Z Z Z\n");      else      {        for(m=0;m<8;m++)          fprintf(fpw, "%d ", dq[7-m]);        fprintf(fpw, "\n");      }      fprintf(fpw, "1 %d 0 1 0 1 %d %d ", cke, udqm1, ldqm1);      if (udqs == 10000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", udqs);      if (ldqs == 10000)       fprintf(fpw, "Z ");      else       fprintf(fpw, "%d ", ldqs);      fprintf(fpw, "%d %d ", b[1], b[0]);      if (addr == 10000)        fprintf(fpw, "- - - - - - - - - - - - - - ");      else        fprintf(fpw, "0 0 0 1 %d %d %d %d %d %d %d %d %d %d ", a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);      if (data == 10000)        fprintf(fpw, "Z Z Z Z Z Z Z Z\n");      else      {        for(m=0;m<8;m++)          fprintf(fpw, "%d ", dq[7-m]);        fprintf(fpw, "\n");      }    }    printf("%s Command Is Completed!\n", rdchar);  }  else if (strcmp(rdchar,"WR") == 0)  {    fprintf(fpw, "####################################   %s   #####################################\n", rdchar);    for (i=0;i<cycle;i++)    {      fprintf(fpw, "0 %d 0 1 0 0 %d %d ", cke, udqm, ldqm);      if (udqs == 10000)       fprintf(fpw, "Z ");      else if (udqs == 5000)       fprintf(fpw, "0 ");      else if (udqs == 0 || udqs == 1)       fprintf(fpw, "%d ", udqs);      else       printf("UDQS input ERROR in the WR Command!\n");               if (ldqs == 10000)       fprintf(fpw, "Z ");      else if (ldqs == 5000)       fprintf(fpw, "0 ");      else if (ldqs == 0 || ldqs == 1)       fprintf(fpw, "%d ", ldqs);      else       printf("LDQS input ERROR in the WR Command!\n");       fprintf(fpw, "%d %d ", b[1], b[0]);      if (addr == 10000)        fprintf(fpw, "- - - - - - - - - - - - - - ");      else        fprintf(fpw, "0 0 0 0 %d %d %d %d %d %d %d %d %d %d ", a[9], a[8], a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]);      if (data == 10000)        fprintf(fpw, "Z Z Z Z Z Z Z Z\n");      else      {        for(m=0;m<8;m++)          fprintf(fpw, "%d ", dq[7-m]);        fprintf(fpw, "\n");      }      fprintf(fpw, "1 %d 0 1 0 0 %d %d ", cke, udqm1, ldqm1);      if (udqs == 10000)       fprintf(fpw, "Z ");      else if (udqs == 5000)       fprintf(fpw, "Z ");      else if (udqs == 0)       fprintf(fpw, "%d ", !udqs);      else       printf("UDQS input ERROR in the WR Command!\n");       if (ldqs == 10000)       fprintf(fpw, "Z ");      else if (ldqs == 5000)       fprintf(fpw, "Z ");      else if (ldqs == 0)       fprintf(fpw, "%d ", !ldqs);      else       printf("LDQS input ERROR in the WR Command!\n"); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -