📄 test_vec_512mddr2_x8.h
字号:
/* 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 + -