OpenCores
URL https://opencores.org/ocsvn/othellogame/othellogame/trunk

Subversion Repositories othellogame

[/] [othellogame/] [trunk/] [generator/] [heur.py] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 marius_mtm
#!/usr/bin/python
2
 
3
# heuristics generator, for Othello FPGA Project
4
# Marius TIVADAR, 2 May 2009
5
 
6
L = [
7
         '64\'h0000000000000001',
8
         '64\'h0000000000000103',
9
         '64\'h0000000000010307',
10
         '64\'h000000000103070F',
11
         '64\'h0000000103070F1F',
12
         '64\'h00000103070F1F3F',
13
         '64\'h000103070F1F3F7F',
14
         '64\'h0103070F1F3F7FFF',
15
 
16
         '64\'h0000000000000080',
17
         '64\'h00000000000080C0',
18
         '64\'h000000000080C0E0',
19
         '64\'h0000000080C0E0F0',
20
         '64\'h00000080C0E0F0F8',
21
         '64\'h000080C0E0F0F8FC',
22
         '64\'h0080C0E0F0F8FCFE',
23
         '64\'h80C0E0F0F8FCFEFF',
24
 
25
         '64\'h8000000000000000',
26
         '64\'hC080000000000000',
27
         '64\'hE0C0800000000000',
28
         '64\'hF0E0C08000000000',
29
         '64\'hF8F0E0C080000000',
30
         '64\'hFCF8F0E0C0800000',
31
         '64\'hFEFCF8F0E0C08000',
32
         '64\'hFFFEFCF8F0E0C080',
33
 
34
         '64\'h0100000000000000',
35
         '64\'h0301000000000000',
36
         '64\'h0703010000000000',
37
         '64\'h0F07030100000000',
38
         '64\'h1F0F070301000000',
39
         '64\'h3F1F0F0703010000',
40
         '64\'h7F3F1F0F07030100',
41
         '64\'hFF7F3F1F0F070301',
42
 
43
         '64\'h0101010101010101',
44
         '64\'h0303030303030303',
45
         '64\'h0707070707070707',
46
         '64\'h0F0F0F0F0F0F0F0F',
47
         '64\'h8080808080808080',
48
         '64\'hC0C0C0C0C0C0C0C0',
49
         '64\'hE0E0E0E0E0E0E0E0',
50
         '64\'hF0F0F0F0F0F0F0F0',
51
 
52
         '64\'h00000000000000FF',
53
         '64\'h000000000000FFFF',
54
         '64\'h0000000000FFFFFF',
55
         '64\'h00000000FFFFFFFF',
56
         '64\'hFFFFFFFF00000000',
57
         '64\'hFFFFFF0000000000',
58
         '64\'hFFFF000000000000',
59
         '64\'hFF00000000000000'
60
 
61
]
62
 
63
P = []
64
PN = []
65
 
66
for (i, pattern) in enumerate(L):
67
#    print """if ( (R[63:0] & %(pat)s) == %(pat)s ) begin
68
#     %(idx)s = %(scor)d;
69
#end
70
#else begin
71
#     %(idx)s = 0;
72
#end
73
#
74
#""" % {'pat': pattern, 'idx':'pattern' + str(i) + '_d', 'scor':i%8 + 1}
75
 
76
 
77
    print 'assign %(idx)s = ((R[63:0] & %(pat)s) == %(pat)s) ?  %(scor)d : 0;' % {'pat': pattern, 'idx':'pattern' + '0'*(2-(len(str(i)))) + str(i) + '_Rd', 'scor':i%8 + 1}
78
    print 'assign %(idx)s = ((B[63:0] & %(pat)s) == %(pat)s) ? %(scor)d : 0;' % {'pat': pattern, 'idx':'pattern' + '0'*(2-(len(str(i)))) + str(i) + '_Bd', 'scor':-(i%8 + 1)}
79
    P += ['pattern' + '0'*(2-(len(str(i)))) + str(i) + '_Rd']
80
    PN += ['pattern' + '0'*(2-(len(str(i)))) + str(i) + '_Bd']
81
 
82
print '\n'
83
#print 'value_d = '
84
 
85
PART = []
86
for i in range(len(P)/4):
87
#    print 'value_p%(idx)d_d = ' % {'idx':i}
88
    print '\t' + 'value_Rp%(idx)d_d = ' % {'idx':i} + ' + '.join(P[i*4:(i+1)*4]) + '; '
89
    PART += ['value_Rp%(idx)d_d' % {'idx':i}]
90
 
91
print '\n'
92
 
93
for i in range(len(PN)/4):
94
    print '\t' + 'value_Bp%(idx)d_d = ' % {'idx':i} + ' + '.join(PN[i*4:(i+1)*4]) + '; '
95
    PART += ['value_Bp%(idx)d_d' % {'idx':i}]
96
#    print '\t' + ' + '.join(PN[i*8:(i+1)*8]) + ' + '
97
 
98
print '\n'
99
 
100
PART2 = []
101
for i in range(len(PART)/4):
102
#    print 'value_p%(idx)d_d = ' % {'idx':i}
103
    print '\t' + 'value_pp%(idx)d_d = ' % {'idx':i} + ' + '.join(PART[i*4:(i+1)*4]) + '; '
104
    PART2 += ['value_pp%(idx)d_d' % {'idx':i}]
105
 
106
 
107
print '\n'
108
#print PART2
109
 
110
print 'value_d = ' + ' + '.join(PART2) + ';'
111
 
112
 
113
for p in PART:
114
    print 'reg signed [5:0] ' + p + ';'
115
 
116
print '\n'
117
 
118
for p in PART2:
119
    print 'reg signed [6:0] ' + p + ';'
120
 
121
print '\n'
122
 
123
for p in P:
124
    print 'wire signed [4:0] ' + p + ';'
125
 
126
print '\n'
127
 
128
for p in PN:
129
    print 'wire signed [4:0] ' + p + ';'
130
 
131
 
132
MUT = ['M[' + str(i) + ']' for i in range(64)]
133
 
134
print '\n'
135
 
136
print 'mutability_d = ' + ' + '.join(MUT) + ';'

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.