-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbiased_pattern_generation.cpp
More file actions
83 lines (67 loc) · 1.56 KB
/
Copy pathbiased_pattern_generation.cpp
File metadata and controls
83 lines (67 loc) · 1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
int AND (int a, int b) {
if(a==1 && b==1) return 1;
else return 0;
}
int OR (int a, int b){
if(a==0 && b==0) return 0;
else return 1;
}
int XOR (int a, int b){
if(a == b) return 0;
else return 1;
}
int main(void){
FILE *txt0 = fopen("myscanchain0.txt", "w");
FILE *txt1 = fopen("myscanchain1.txt", "w");
FILE *txt2 = fopen("myscanchain2.txt", "w");
FILE *txt3 = fopen("myscanchain3.txt", "w");
int LFSR[32];
int feedback;
int si[4];
int mysc[4] = {48, 54, 40, 32};
int t = 0;
int basket1;
int basket0;
int i,j,k;
char p[4][59];
for(t=0;t<4;t++){
p[t][57] = '\n';
p[t][58] = '\0';
}
for(i = 0; i<32; i++){
if(i == 31 || i == 28) LFSR[i] = 1;
else LFSR[i] = 0;
}
for(i = 0; i<60000; i++){
for(j = 0; j < 57; j++){
si[0] = OR(LFSR[0],OR(LFSR[1],LFSR[2]));
si[1] = OR(LFSR[3],OR(LFSR[4],LFSR[5]));
si[2] = OR(LFSR[31],AND(LFSR[30],OR(LFSR[29],LFSR[28])));
si[3] = OR(LFSR[27],AND(LFSR[26],OR(LFSR[25],LFSR[24])));
for(t=0; t<4; t++){
if( j < mysc[t]) {
p[t][j] = si[t] ? '1' : '0';
}
else p[t][j] = si[t] ? '0' : '1';
}
feedback= XOR(XOR(LFSR[31],LFSR[27]),XOR(LFSR[26],LFSR[0]));
basket0 = LFSR[0];
for(k = 1; k<32; k++){
basket1 = LFSR[k];
LFSR[k] = basket0;
basket0 = basket1;
}
LFSR[0] = feedback;
}
fputs(p[0], txt0);
fputs(p[1], txt1);
fputs(p[2], txt2);
fputs(p[3], txt3);
}
fclose(txt0);
fclose(txt1);
fclose(txt2);
fclose(txt3);
return 0;
}