Skip to content

Commit d7cff0c

Browse files
committed
derive LFSR ML polynomials with mlpolygen
1 parent 6046f30 commit d7cff0c

File tree

1 file changed

+38
-17
lines changed

1 file changed

+38
-17
lines changed

src/xorshift.sv

+38-17
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,21 @@ generate
4343
assign polynomial = POLYNOMIAL;
4444
else
4545
case (WIDTH)
46-
// Special thanks to Philip Koopman for these maximal length LFSR feedback polynomials
47-
// for i in {4..64}; do echo -n $i': assign polynomial = '$i"'"'h'; curl 'http://users.ece.cmu.edu/~koopman/lfsr/'$i'.txt' 2>/dev/null | head -n 1 | tr -d '\n'; echo ';'; done
46+
// Derived with mlpolygen:
47+
// for i in {1..256}; do echo -n $i': assign polynomial = '$i"'h"; ./mlpolygen -n1 $i 2>/dev/null; done
48+
1: assign polynomial = 1'h1;
49+
2: assign polynomial = 2'h3;
50+
3: assign polynomial = 3'h5;
4851
4: assign polynomial = 4'h9;
4952
5: assign polynomial = 5'h12;
5053
6: assign polynomial = 6'h21;
5154
7: assign polynomial = 7'h41;
52-
8: assign polynomial = 8'h8E;
55+
8: assign polynomial = 8'h8e;
5356
9: assign polynomial = 9'h108;
5457
10: assign polynomial = 10'h204;
5558
11: assign polynomial = 11'h402;
5659
12: assign polynomial = 12'h829;
57-
13: assign polynomial = 13'h100D;
60+
13: assign polynomial = 13'h100d;
5861
14: assign polynomial = 14'h2015;
5962
15: assign polynomial = 15'h4001;
6063
16: assign polynomial = 16'h8016;
@@ -65,7 +68,7 @@ generate
6568
21: assign polynomial = 21'h100002;
6669
22: assign polynomial = 22'h200001;
6770
23: assign polynomial = 23'h400010;
68-
24: assign polynomial = 24'h80000D;
71+
24: assign polynomial = 24'h80000d;
6972
25: assign polynomial = 25'h1000004;
7073
26: assign polynomial = 26'h2000023;
7174
27: assign polynomial = 27'h4000013;
@@ -77,35 +80,53 @@ generate
7780
33: assign polynomial = 33'h100000029;
7881
34: assign polynomial = 34'h200000073;
7982
35: assign polynomial = 35'h400000002;
80-
36: assign polynomial = 36'h80000003B;
81-
37: assign polynomial = 37'h100000001F;
83+
36: assign polynomial = 36'h80000003b;
84+
37: assign polynomial = 37'h100000001f;
8285
38: assign polynomial = 38'h2000000031;
8386
39: assign polynomial = 39'h4000000008;
84-
40: assign polynomial = 40'h800000001C;
87+
40: assign polynomial = 40'h800000001c;
8588
41: assign polynomial = 41'h10000000004;
86-
42: assign polynomial = 42'h2000000001F;
87-
43: assign polynomial = 43'h4000000002C;
89+
42: assign polynomial = 42'h2000000001f;
90+
43: assign polynomial = 43'h4000000002c;
8891
44: assign polynomial = 44'h80000000032;
89-
45: assign polynomial = 45'h10000000000D;
92+
45: assign polynomial = 45'h10000000000d;
9093
46: assign polynomial = 46'h200000000097;
9194
47: assign polynomial = 47'h400000000010;
92-
48: assign polynomial = 48'h80000000005B;
95+
48: assign polynomial = 48'h80000000005b;
9396
49: assign polynomial = 49'h1000000000038;
94-
50: assign polynomial = 50'h200000000000E;
97+
50: assign polynomial = 50'h200000000000e;
9598
51: assign polynomial = 51'h4000000000025;
9699
52: assign polynomial = 52'h8000000000004;
97100
53: assign polynomial = 53'h10000000000023;
98-
54: assign polynomial = 54'h2000000000003E;
101+
54: assign polynomial = 54'h2000000000003e;
99102
55: assign polynomial = 55'h40000000000023;
100-
56: assign polynomial = 56'h8000000000004A;
103+
56: assign polynomial = 56'h8000000000004a;
101104
57: assign polynomial = 57'h100000000000016;
102105
58: assign polynomial = 58'h200000000000031;
103-
59: assign polynomial = 59'h40000000000003D;
106+
59: assign polynomial = 59'h40000000000003d;
104107
60: assign polynomial = 60'h800000000000001;
105108
61: assign polynomial = 61'h1000000000000013;
106109
62: assign polynomial = 62'h2000000000000034;
107110
63: assign polynomial = 63'h4000000000000001;
108-
64: assign polynomial = 64'h800000000000000D;
111+
64: assign polynomial = 64'h800000000000000d;
112+
65: assign polynomial = 65'h1000000000000000d;
113+
66: assign polynomial = 66'h200000000000000b6;
114+
67: assign polynomial = 67'h40000000000000013;
115+
68: assign polynomial = 68'h80000000000000051;
116+
69: assign polynomial = 69'h100000000000000032;
117+
70: assign polynomial = 70'h200000000000000015;
118+
71: assign polynomial = 71'h400000000000000015;
119+
72: assign polynomial = 72'h80000000000000002f;
120+
73: assign polynomial = 73'h100000000000000000e;
121+
74: assign polynomial = 74'h200000000000000004c;
122+
75: assign polynomial = 75'h4000000000000000025;
123+
76: assign polynomial = 76'h800000000000000001a;
124+
77: assign polynomial = 77'h10000000000000000032;
125+
78: assign polynomial = 78'h20000000000000000043;
126+
79: assign polynomial = 79'h4000000000000000000e;
127+
80: assign polynomial = 80'h80000000000000000057;
128+
81: assign polynomial = 81'h100000000000000000008;
129+
82: assign polynomial = 82'h2000000000000000000e9;
109130
endcase
110131
endgenerate
111132

0 commit comments

Comments
 (0)