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

Subversion Repositories othellogame

[/] [othellogame/] [trunk/] [rtl/] [moves_map.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 marius_mtm
`timescale 1ns / 1ps
2
//////////////////////////////////////////////////////////////////////////////////
3
// Company: 
4
// Engineer: 
5
// 
6
// Create Date:    22:01:47 02/03/2009 
7
// Design Name: Move map generator
8
// Module Name:    moves_map 
9
// Project Name: The FPGA Othello
10
// Target Devices: Spartan 3E, @50MHz
11
// Tool versions: 
12
// Description: 
13
//     1cc, combinational.
14
// Dependencies: 
15
//    n/a
16
// Revision: 
17
// Revision 0.01 - File Created
18
// Additional Comments: 
19
//         Marius TIVADAR.
20
//////////////////////////////////////////////////////////////////////////////////
21
module moves_map(clk, RST, B_, R_, player, M_);
22
input [63:0] B_;
23
input [63:0] R_;
24
input player;
25
input clk;
26
input RST;
27
output [63:0] M_;
28
 
29
 
30
wire [63:0] B;
31
wire [63:0] R;
32
reg [7:0] M [7:0][7:0];
33
 
34
reg [63:0] RES_Q;
35
reg [63:0] RES_D;
36
 
37
parameter ZEROP   = 3'd0;
38
parameter DOWN45P = 3'd1;
39
parameter DOWN    = 3'd2;
40
parameter DOWN45M = 3'd3;
41
parameter ZEROM   = 3'd4;
42
parameter UP45M   = 3'd5;
43
parameter UP      = 3'd6;
44
parameter UP45P   = 3'd7;
45
 
46
always @(posedge clk) begin
47
        if ( RST ) begin
48
                RES_Q <= 64'b0;
49
        end
50
        else begin
51
                RES_Q <= RES_D;
52
        end
53
end
54
 
55
/* continuous assignment, inputs are function of player */
56
assign R = (player) ? B_ : R_;
57
assign B = (player) ? R_ : B_;
58
 
59
always @( R or B ) begin
60
 
61
 
62
// Expresii generate pentru patrate A
63
    M[0][0][ZEROP] = (!R[0*8 + 0] && !B[0*8 + 0]) &&
64
 
65
                 (
66
                 (R[1*8 + 1] && B[2*8 + 2]) ||
67
                 (R[1*8 + 1] && R[2*8 + 2] && B[3*8 + 3]) ||
68
                 (R[1*8 + 1] && R[2*8 + 2] && R[3*8 + 3] && B[4*8 + 4]) ||
69
                 (R[1*8 + 1] && R[2*8 + 2] && R[3*8 + 3] && R[4*8 + 4] && B[5*8 + 5]) ||
70
                 (R[1*8 + 1] && R[2*8 + 2] && R[3*8 + 3] && R[4*8 + 4] && R[5*8 + 5] && B[6*8 + 6]) ||
71
                 (R[1*8 + 1] && R[2*8 + 2] && R[3*8 + 3] && R[4*8 + 4] && R[5*8 + 5] && R[6*8 + 6] && B[7*8 + 7])
72
                 );
73
    M[0][0][DOWN45P] = 1'b0;
74
    M[0][0][DOWN] = 1'b0;
75
    M[0][0][DOWN45M] = 1'b0;
76
    M[0][0][ZEROM] = (!R[0*8 + 0] && !B[0*8 + 0]) &&
77
 
78
                 (
79
                 (R[0*8 + 1] && B[0*8 + 2]) ||
80
                 (R[0*8 + 1] && R[0*8 + 2] && B[0*8 + 3]) ||
81
                 (R[0*8 + 1] && R[0*8 + 2] && R[0*8 + 3] && B[0*8 + 4]) ||
82
                 (R[0*8 + 1] && R[0*8 + 2] && R[0*8 + 3] && R[0*8 + 4] && B[0*8 + 5]) ||
83
                 (R[0*8 + 1] && R[0*8 + 2] && R[0*8 + 3] && R[0*8 + 4] && R[0*8 + 5] && B[0*8 + 6]) ||
84
                 (R[0*8 + 1] && R[0*8 + 2] && R[0*8 + 3] && R[0*8 + 4] && R[0*8 + 5] && R[0*8 + 6] && B[0*8 + 7])
85
                 );
86
    M[0][0][UP45M] = (!R[0*8 + 0] && !B[0*8 + 0]) &&
87
 
88
                 (
89
                 (R[1*8 + 0] && B[2*8 + 0]) ||
90
                 (R[1*8 + 0] && R[2*8 + 0] && B[3*8 + 0]) ||
91
                 (R[1*8 + 0] && R[2*8 + 0] && R[3*8 + 0] && B[4*8 + 0]) ||
92
                 (R[1*8 + 0] && R[2*8 + 0] && R[3*8 + 0] && R[4*8 + 0] && B[5*8 + 0]) ||
93
                 (R[1*8 + 0] && R[2*8 + 0] && R[3*8 + 0] && R[4*8 + 0] && R[5*8 + 0] && B[6*8 + 0]) ||
94
                 (R[1*8 + 0] && R[2*8 + 0] && R[3*8 + 0] && R[4*8 + 0] && R[5*8 + 0] && R[6*8 + 0] && B[7*8 + 0])
95
                 );
96
    M[0][0][UP] = 1'b0;
97
    M[0][0][UP45P] = 1'b0;
98
    M[0][7][ZEROP] = 1'b0;
99
    M[0][7][DOWN45P] = (!R[0*8 + 7] && !B[0*8 + 7]) &&
100
 
101
                 (
102
                 (R[1*8 + 6] && B[2*8 + 5]) ||
103
                 (R[1*8 + 6] && R[2*8 + 5] && B[3*8 + 4]) ||
104
                 (R[1*8 + 6] && R[2*8 + 5] && R[3*8 + 4] && B[4*8 + 3]) ||
105
                 (R[1*8 + 6] && R[2*8 + 5] && R[3*8 + 4] && R[4*8 + 3] && B[5*8 + 2]) ||
106
                 (R[1*8 + 6] && R[2*8 + 5] && R[3*8 + 4] && R[4*8 + 3] && R[5*8 + 2] && B[6*8 + 1]) ||
107
                 (R[1*8 + 6] && R[2*8 + 5] && R[3*8 + 4] && R[4*8 + 3] && R[5*8 + 2] && R[6*8 + 1] && B[7*8 + 0])
108
                 );
109
    M[0][7][DOWN] = 1'b0;
110
    M[0][7][DOWN45M] = 1'b0;
111
    M[0][7][ZEROM] = 1'b0;
112
    M[0][7][UP45M] = (!R[0*8 + 7] && !B[0*8 + 7]) &&
113
 
114
                 (
115
                 (R[1*8 + 7] && B[2*8 + 7]) ||
116
                 (R[1*8 + 7] && R[2*8 + 7] && B[3*8 + 7]) ||
117
                 (R[1*8 + 7] && R[2*8 + 7] && R[3*8 + 7] && B[4*8 + 7]) ||
118
                 (R[1*8 + 7] && R[2*8 + 7] && R[3*8 + 7] && R[4*8 + 7] && B[5*8 + 7]) ||
119
                 (R[1*8 + 7] && R[2*8 + 7] && R[3*8 + 7] && R[4*8 + 7] && R[5*8 + 7] && B[6*8 + 7]) ||
120
                 (R[1*8 + 7] && R[2*8 + 7] && R[3*8 + 7] && R[4*8 + 7] && R[5*8 + 7] && R[6*8 + 7] && B[7*8 + 7])
121
                 );
122
    M[0][7][UP] = 1'b0;
123
    M[0][7][UP45P] = (!R[0*8 + 7] && !B[0*8 + 7]) &&
124
 
125
                 (
126
                 (R[0*8 + 6] && B[0*8 + 5]) ||
127
                 (R[0*8 + 6] && R[0*8 + 5] && B[0*8 + 4]) ||
128
                 (R[0*8 + 6] && R[0*8 + 5] && R[0*8 + 4] && B[0*8 + 3]) ||
129
                 (R[0*8 + 6] && R[0*8 + 5] && R[0*8 + 4] && R[0*8 + 3] && B[0*8 + 2]) ||
130
                 (R[0*8 + 6] && R[0*8 + 5] && R[0*8 + 4] && R[0*8 + 3] && R[0*8 + 2] && B[0*8 + 1]) ||
131
                 (R[0*8 + 6] && R[0*8 + 5] && R[0*8 + 4] && R[0*8 + 3] && R[0*8 + 2] && R[0*8 + 1] && B[0*8 + 0])
132
                 );
133
    M[7][7][ZEROP] = 1'b0;
134
    M[7][7][DOWN45P] = 1'b0;
135
    M[7][7][DOWN] = (!R[7*8 + 7] && !B[7*8 + 7]) &&
136
 
137
                 (
138
                 (R[6*8 + 6] && B[5*8 + 5]) ||
139
                 (R[6*8 + 6] && R[5*8 + 5] && B[4*8 + 4]) ||
140
                 (R[6*8 + 6] && R[5*8 + 5] && R[4*8 + 4] && B[3*8 + 3]) ||
141
                 (R[6*8 + 6] && R[5*8 + 5] && R[4*8 + 4] && R[3*8 + 3] && B[2*8 + 2]) ||
142
                 (R[6*8 + 6] && R[5*8 + 5] && R[4*8 + 4] && R[3*8 + 3] && R[2*8 + 2] && B[1*8 + 1]) ||
143
                 (R[6*8 + 6] && R[5*8 + 5] && R[4*8 + 4] && R[3*8 + 3] && R[2*8 + 2] && R[1*8 + 1] && B[0*8 + 0])
144
                 );
145
    M[7][7][DOWN45M] = 1'b0;
146
    M[7][7][ZEROM] = 1'b0;
147
    M[7][7][UP45M] = 1'b0;
148
    M[7][7][UP] = (!R[7*8 + 7] && !B[7*8 + 7]) &&
149
 
150
                 (
151
                 (R[6*8 + 7] && B[5*8 + 7]) ||
152
                 (R[6*8 + 7] && R[5*8 + 7] && B[4*8 + 7]) ||
153
                 (R[6*8 + 7] && R[5*8 + 7] && R[4*8 + 7] && B[3*8 + 7]) ||
154
                 (R[6*8 + 7] && R[5*8 + 7] && R[4*8 + 7] && R[3*8 + 7] && B[2*8 + 7]) ||
155
                 (R[6*8 + 7] && R[5*8 + 7] && R[4*8 + 7] && R[3*8 + 7] && R[2*8 + 7] && B[1*8 + 7]) ||
156
                 (R[6*8 + 7] && R[5*8 + 7] && R[4*8 + 7] && R[3*8 + 7] && R[2*8 + 7] && R[1*8 + 7] && B[0*8 + 7])
157
                 );
158
    M[7][7][UP45P] = (!R[7*8 + 7] && !B[7*8 + 7]) &&
159
 
160
                 (
161
                 (R[7*8 + 6] && B[7*8 + 5]) ||
162
                 (R[7*8 + 6] && R[7*8 + 5] && B[7*8 + 4]) ||
163
                 (R[7*8 + 6] && R[7*8 + 5] && R[7*8 + 4] && B[7*8 + 3]) ||
164
                 (R[7*8 + 6] && R[7*8 + 5] && R[7*8 + 4] && R[7*8 + 3] && B[7*8 + 2]) ||
165
                 (R[7*8 + 6] && R[7*8 + 5] && R[7*8 + 4] && R[7*8 + 3] && R[7*8 + 2] && B[7*8 + 1]) ||
166
                 (R[7*8 + 6] && R[7*8 + 5] && R[7*8 + 4] && R[7*8 + 3] && R[7*8 + 2] && R[7*8 + 1] && B[7*8 + 0])
167
                 );
168
    M[7][0][ZEROP] = 1'b0;
169
    M[7][0][DOWN45P] = 1'b0;
170
    M[7][0][DOWN] = 1'b0;
171
    M[7][0][DOWN45M] = (!R[7*8 + 0] && !B[7*8 + 0]) &&
172
 
173
                 (
174
                 (R[6*8 + 1] && B[5*8 + 2]) ||
175
                 (R[6*8 + 1] && R[5*8 + 2] && B[4*8 + 3]) ||
176
                 (R[6*8 + 1] && R[5*8 + 2] && R[4*8 + 3] && B[3*8 + 4]) ||
177
                 (R[6*8 + 1] && R[5*8 + 2] && R[4*8 + 3] && R[3*8 + 4] && B[2*8 + 5]) ||
178
                 (R[6*8 + 1] && R[5*8 + 2] && R[4*8 + 3] && R[3*8 + 4] && R[2*8 + 5] && B[1*8 + 6]) ||
179
                 (R[6*8 + 1] && R[5*8 + 2] && R[4*8 + 3] && R[3*8 + 4] && R[2*8 + 5] && R[1*8 + 6] && B[0*8 + 7])
180
                 );
181
    M[7][0][ZEROM] = (!R[7*8 + 0] && !B[7*8 + 0]) &&
182
 
183
                 (
184
                 (R[7*8 + 1] && B[7*8 + 2]) ||
185
                 (R[7*8 + 1] && R[7*8 + 2] && B[7*8 + 3]) ||
186
                 (R[7*8 + 1] && R[7*8 + 2] && R[7*8 + 3] && B[7*8 + 4]) ||
187
                 (R[7*8 + 1] && R[7*8 + 2] && R[7*8 + 3] && R[7*8 + 4] && B[7*8 + 5]) ||
188
                 (R[7*8 + 1] && R[7*8 + 2] && R[7*8 + 3] && R[7*8 + 4] && R[7*8 + 5] && B[7*8 + 6]) ||
189
                 (R[7*8 + 1] && R[7*8 + 2] && R[7*8 + 3] && R[7*8 + 4] && R[7*8 + 5] && R[7*8 + 6] && B[7*8 + 7])
190
                 );
191
    M[7][0][UP45M] = 1'b0;
192
    M[7][0][UP] = (!R[7*8 + 0] && !B[7*8 + 0]) &&
193
 
194
                 (
195
                 (R[6*8 + 0] && B[5*8 + 0]) ||
196
                 (R[6*8 + 0] && R[5*8 + 0] && B[4*8 + 0]) ||
197
                 (R[6*8 + 0] && R[5*8 + 0] && R[4*8 + 0] && B[3*8 + 0]) ||
198
                 (R[6*8 + 0] && R[5*8 + 0] && R[4*8 + 0] && R[3*8 + 0] && B[2*8 + 0]) ||
199
                 (R[6*8 + 0] && R[5*8 + 0] && R[4*8 + 0] && R[3*8 + 0] && R[2*8 + 0] && B[1*8 + 0]) ||
200
                 (R[6*8 + 0] && R[5*8 + 0] && R[4*8 + 0] && R[3*8 + 0] && R[2*8 + 0] && R[1*8 + 0] && B[0*8 + 0])
201
                 );
202
    M[7][0][UP45P] = 1'b0;
203
 
204
 
205
// Expresii generate pentru patrate B
206
    M[0][1][ZEROP] = (!R[0*8 + 1] && !B[0*8 + 1]) &&
207
 
208
                 (
209
                 (R[1*8 + 2] && B[2*8 + 3]) ||
210
                 (R[1*8 + 2] && R[2*8 + 3] && B[3*8 + 4]) ||
211
                 (R[1*8 + 2] && R[2*8 + 3] && R[3*8 + 4] && B[4*8 + 5]) ||
212
                 (R[1*8 + 2] && R[2*8 + 3] && R[3*8 + 4] && R[4*8 + 5] && B[5*8 + 6]) ||
213
                 (R[1*8 + 2] && R[2*8 + 3] && R[3*8 + 4] && R[4*8 + 5] && R[5*8 + 6] && B[6*8 + 7])
214
                 );
215
    M[0][1][DOWN45P] = 1'b0;
216
    M[0][1][DOWN] = 1'b0;
217
    M[0][1][DOWN45M] = 1'b0;
218
    M[0][1][ZEROM] = (!R[0*8 + 1] && !B[0*8 + 1]) &&
219
 
220
                 (
221
                 (R[0*8 + 2] && B[0*8 + 3]) ||
222
                 (R[0*8 + 2] && R[0*8 + 3] && B[0*8 + 4]) ||
223
                 (R[0*8 + 2] && R[0*8 + 3] && R[0*8 + 4] && B[0*8 + 5]) ||
224
                 (R[0*8 + 2] && R[0*8 + 3] && R[0*8 + 4] && R[0*8 + 5] && B[0*8 + 6]) ||
225
                 (R[0*8 + 2] && R[0*8 + 3] && R[0*8 + 4] && R[0*8 + 5] && R[0*8 + 6] && B[0*8 + 7])
226
                 );
227
    M[0][1][UP45M] = (!R[0*8 + 1] && !B[0*8 + 1]) &&
228
 
229
                 (
230
                 (R[1*8 + 1] && B[2*8 + 1]) ||
231
                 (R[1*8 + 1] && R[2*8 + 1] && B[3*8 + 1]) ||
232
                 (R[1*8 + 1] && R[2*8 + 1] && R[3*8 + 1] && B[4*8 + 1]) ||
233
                 (R[1*8 + 1] && R[2*8 + 1] && R[3*8 + 1] && R[4*8 + 1] && B[5*8 + 1]) ||
234
                 (R[1*8 + 1] && R[2*8 + 1] && R[3*8 + 1] && R[4*8 + 1] && R[5*8 + 1] && B[6*8 + 1]) ||
235
                 (R[1*8 + 1] && R[2*8 + 1] && R[3*8 + 1] && R[4*8 + 1] && R[5*8 + 1] && R[6*8 + 1] && B[7*8 + 1])
236
                 );
237
    M[0][1][UP] = 1'b0;
238
    M[0][1][UP45P] = 1'b0;
239
    M[0][6][ZEROP] = 1'b0;
240
    M[0][6][DOWN45P] = (!R[0*8 + 6] && !B[0*8 + 6]) &&
241
 
242
                 (
243
                 (R[1*8 + 5] && B[2*8 + 4]) ||
244
                 (R[1*8 + 5] && R[2*8 + 4] && B[3*8 + 3]) ||
245
                 (R[1*8 + 5] && R[2*8 + 4] && R[3*8 + 3] && B[4*8 + 2]) ||
246
                 (R[1*8 + 5] && R[2*8 + 4] && R[3*8 + 3] && R[4*8 + 2] && B[5*8 + 1]) ||
247
                 (R[1*8 + 5] && R[2*8 + 4] && R[3*8 + 3] && R[4*8 + 2] && R[5*8 + 1] && B[6*8 + 0])
248
                 );
249
    M[0][6][DOWN] = 1'b0;
250
    M[0][6][DOWN45M] = 1'b0;
251
    M[0][6][ZEROM] = 1'b0;
252
    M[0][6][UP45M] = (!R[0*8 + 6] && !B[0*8 + 6]) &&
253
 
254
                 (
255
                 (R[1*8 + 6] && B[2*8 + 6]) ||
256
                 (R[1*8 + 6] && R[2*8 + 6] && B[3*8 + 6]) ||
257
                 (R[1*8 + 6] && R[2*8 + 6] && R[3*8 + 6] && B[4*8 + 6]) ||
258
                 (R[1*8 + 6] && R[2*8 + 6] && R[3*8 + 6] && R[4*8 + 6] && B[5*8 + 6]) ||
259
                 (R[1*8 + 6] && R[2*8 + 6] && R[3*8 + 6] && R[4*8 + 6] && R[5*8 + 6] && B[6*8 + 6]) ||
260
                 (R[1*8 + 6] && R[2*8 + 6] && R[3*8 + 6] && R[4*8 + 6] && R[5*8 + 6] && R[6*8 + 6] && B[7*8 + 6])
261
                 );
262
    M[0][6][UP] = 1'b0;
263
    M[0][6][UP45P] = (!R[0*8 + 6] && !B[0*8 + 6]) &&
264
 
265
                 (
266
                 (R[0*8 + 5] && B[0*8 + 4]) ||
267
                 (R[0*8 + 5] && R[0*8 + 4] && B[0*8 + 3]) ||
268
                 (R[0*8 + 5] && R[0*8 + 4] && R[0*8 + 3] && B[0*8 + 2]) ||
269
                 (R[0*8 + 5] && R[0*8 + 4] && R[0*8 + 3] && R[0*8 + 2] && B[0*8 + 1]) ||
270
                 (R[0*8 + 5] && R[0*8 + 4] && R[0*8 + 3] && R[0*8 + 2] && R[0*8 + 1] && B[0*8 + 0])
271
                 );
272
    M[1][7][ZEROP] = 1'b0;
273
    M[1][7][DOWN45P] = (!R[1*8 + 7] && !B[1*8 + 7]) &&
274
 
275
                 (
276
                 (R[2*8 + 6] && B[3*8 + 5]) ||
277
                 (R[2*8 + 6] && R[3*8 + 5] && B[4*8 + 4]) ||
278
                 (R[2*8 + 6] && R[3*8 + 5] && R[4*8 + 4] && B[5*8 + 3]) ||
279
                 (R[2*8 + 6] && R[3*8 + 5] && R[4*8 + 4] && R[5*8 + 3] && B[6*8 + 2]) ||
280
                 (R[2*8 + 6] && R[3*8 + 5] && R[4*8 + 4] && R[5*8 + 3] && R[6*8 + 2] && B[7*8 + 1])
281
                 );
282
    M[1][7][DOWN] = 1'b0;
283
    M[1][7][DOWN45M] = 1'b0;
284
    M[1][7][ZEROM] = 1'b0;
285
    M[1][7][UP45M] = (!R[1*8 + 7] && !B[1*8 + 7]) &&
286
 
287
                 (
288
                 (R[2*8 + 7] && B[3*8 + 7]) ||
289
                 (R[2*8 + 7] && R[3*8 + 7] && B[4*8 + 7]) ||
290
                 (R[2*8 + 7] && R[3*8 + 7] && R[4*8 + 7] && B[5*8 + 7]) ||
291
                 (R[2*8 + 7] && R[3*8 + 7] && R[4*8 + 7] && R[5*8 + 7] && B[6*8 + 7]) ||
292
                 (R[2*8 + 7] && R[3*8 + 7] && R[4*8 + 7] && R[5*8 + 7] && R[6*8 + 7] && B[7*8 + 7])
293
                 );
294
    M[1][7][UP] = 1'b0;
295
    M[1][7][UP45P] = (!R[1*8 + 7] && !B[1*8 + 7]) &&
296
 
297
                 (
298
                 (R[1*8 + 6] && B[1*8 + 5]) ||
299
                 (R[1*8 + 6] && R[1*8 + 5] && B[1*8 + 4]) ||
300
                 (R[1*8 + 6] && R[1*8 + 5] && R[1*8 + 4] && B[1*8 + 3]) ||
301
                 (R[1*8 + 6] && R[1*8 + 5] && R[1*8 + 4] && R[1*8 + 3] && B[1*8 + 2]) ||
302
                 (R[1*8 + 6] && R[1*8 + 5] && R[1*8 + 4] && R[1*8 + 3] && R[1*8 + 2] && B[1*8 + 1]) ||
303
                 (R[1*8 + 6] && R[1*8 + 5] && R[1*8 + 4] && R[1*8 + 3] && R[1*8 + 2] && R[1*8 + 1] && B[1*8 + 0])
304
                 );
305
    M[6][7][ZEROP] = 1'b0;
306
    M[6][7][DOWN45P] = 1'b0;
307
    M[6][7][DOWN] = (!R[6*8 + 7] && !B[6*8 + 7]) &&
308
 
309
                 (
310
                 (R[5*8 + 6] && B[4*8 + 5]) ||
311
                 (R[5*8 + 6] && R[4*8 + 5] && B[3*8 + 4]) ||
312
                 (R[5*8 + 6] && R[4*8 + 5] && R[3*8 + 4] && B[2*8 + 3]) ||
313
                 (R[5*8 + 6] && R[4*8 + 5] && R[3*8 + 4] && R[2*8 + 3] && B[1*8 + 2]) ||
314
                 (R[5*8 + 6] && R[4*8 + 5] && R[3*8 + 4] && R[2*8 + 3] && R[1*8 + 2] && B[0*8 + 1])
315
                 );
316
    M[6][7][DOWN45M] = 1'b0;
317
    M[6][7][ZEROM] = 1'b0;
318
    M[6][7][UP45M] = 1'b0;
319
    M[6][7][UP] = (!R[6*8 + 7] && !B[6*8 + 7]) &&
320
 
321
                 (
322
                 (R[5*8 + 7] && B[4*8 + 7]) ||
323
                 (R[5*8 + 7] && R[4*8 + 7] && B[3*8 + 7]) ||
324
                 (R[5*8 + 7] && R[4*8 + 7] && R[3*8 + 7] && B[2*8 + 7]) ||
325
                 (R[5*8 + 7] && R[4*8 + 7] && R[3*8 + 7] && R[2*8 + 7] && B[1*8 + 7]) ||
326
                 (R[5*8 + 7] && R[4*8 + 7] && R[3*8 + 7] && R[2*8 + 7] && R[1*8 + 7] && B[0*8 + 7])
327
                 );
328
    M[6][7][UP45P] = (!R[6*8 + 7] && !B[6*8 + 7]) &&
329
 
330
                 (
331
                 (R[6*8 + 6] && B[6*8 + 5]) ||
332
                 (R[6*8 + 6] && R[6*8 + 5] && B[6*8 + 4]) ||
333
                 (R[6*8 + 6] && R[6*8 + 5] && R[6*8 + 4] && B[6*8 + 3]) ||
334
                 (R[6*8 + 6] && R[6*8 + 5] && R[6*8 + 4] && R[6*8 + 3] && B[6*8 + 2]) ||
335
                 (R[6*8 + 6] && R[6*8 + 5] && R[6*8 + 4] && R[6*8 + 3] && R[6*8 + 2] && B[6*8 + 1]) ||
336
                 (R[6*8 + 6] && R[6*8 + 5] && R[6*8 + 4] && R[6*8 + 3] && R[6*8 + 2] && R[6*8 + 1] && B[6*8 + 0])
337
                 );
338
    M[7][6][ZEROP] = 1'b0;
339
    M[7][6][DOWN45P] = 1'b0;
340
    M[7][6][DOWN] = (!R[7*8 + 6] && !B[7*8 + 6]) &&
341
 
342
                 (
343
                 (R[6*8 + 5] && B[5*8 + 4]) ||
344
                 (R[6*8 + 5] && R[5*8 + 4] && B[4*8 + 3]) ||
345
                 (R[6*8 + 5] && R[5*8 + 4] && R[4*8 + 3] && B[3*8 + 2]) ||
346
                 (R[6*8 + 5] && R[5*8 + 4] && R[4*8 + 3] && R[3*8 + 2] && B[2*8 + 1]) ||
347
                 (R[6*8 + 5] && R[5*8 + 4] && R[4*8 + 3] && R[3*8 + 2] && R[2*8 + 1] && B[1*8 + 0])
348
                 );
349
    M[7][6][DOWN45M] = 1'b0;
350
    M[7][6][ZEROM] = 1'b0;
351
    M[7][6][UP45M] = 1'b0;
352
    M[7][6][UP] = (!R[7*8 + 6] && !B[7*8 + 6]) &&
353
 
354
                 (
355
                 (R[6*8 + 6] && B[5*8 + 6]) ||
356
                 (R[6*8 + 6] && R[5*8 + 6] && B[4*8 + 6]) ||
357
                 (R[6*8 + 6] && R[5*8 + 6] && R[4*8 + 6] && B[3*8 + 6]) ||
358
                 (R[6*8 + 6] && R[5*8 + 6] && R[4*8 + 6] && R[3*8 + 6] && B[2*8 + 6]) ||
359
                 (R[6*8 + 6] && R[5*8 + 6] && R[4*8 + 6] && R[3*8 + 6] && R[2*8 + 6] && B[1*8 + 6]) ||
360
                 (R[6*8 + 6] && R[5*8 + 6] && R[4*8 + 6] && R[3*8 + 6] && R[2*8 + 6] && R[1*8 + 6] && B[0*8 + 6])
361
                 );
362
    M[7][6][UP45P] = (!R[7*8 + 6] && !B[7*8 + 6]) &&
363
 
364
                 (
365
                 (R[7*8 + 5] && B[7*8 + 4]) ||
366
                 (R[7*8 + 5] && R[7*8 + 4] && B[7*8 + 3]) ||
367
                 (R[7*8 + 5] && R[7*8 + 4] && R[7*8 + 3] && B[7*8 + 2]) ||
368
                 (R[7*8 + 5] && R[7*8 + 4] && R[7*8 + 3] && R[7*8 + 2] && B[7*8 + 1]) ||
369
                 (R[7*8 + 5] && R[7*8 + 4] && R[7*8 + 3] && R[7*8 + 2] && R[7*8 + 1] && B[7*8 + 0])
370
                 );
371
    M[7][1][ZEROP] = 1'b0;
372
    M[7][1][DOWN45P] = 1'b0;
373
    M[7][1][DOWN] = 1'b0;
374
    M[7][1][DOWN45M] = (!R[7*8 + 1] && !B[7*8 + 1]) &&
375
 
376
                 (
377
                 (R[6*8 + 2] && B[5*8 + 3]) ||
378
                 (R[6*8 + 2] && R[5*8 + 3] && B[4*8 + 4]) ||
379
                 (R[6*8 + 2] && R[5*8 + 3] && R[4*8 + 4] && B[3*8 + 5]) ||
380
                 (R[6*8 + 2] && R[5*8 + 3] && R[4*8 + 4] && R[3*8 + 5] && B[2*8 + 6]) ||
381
                 (R[6*8 + 2] && R[5*8 + 3] && R[4*8 + 4] && R[3*8 + 5] && R[2*8 + 6] && B[1*8 + 7])
382
                 );
383
    M[7][1][ZEROM] = (!R[7*8 + 1] && !B[7*8 + 1]) &&
384
 
385
                 (
386
                 (R[7*8 + 2] && B[7*8 + 3]) ||
387
                 (R[7*8 + 2] && R[7*8 + 3] && B[7*8 + 4]) ||
388
                 (R[7*8 + 2] && R[7*8 + 3] && R[7*8 + 4] && B[7*8 + 5]) ||
389
                 (R[7*8 + 2] && R[7*8 + 3] && R[7*8 + 4] && R[7*8 + 5] && B[7*8 + 6]) ||
390
                 (R[7*8 + 2] && R[7*8 + 3] && R[7*8 + 4] && R[7*8 + 5] && R[7*8 + 6] && B[7*8 + 7])
391
                 );
392
    M[7][1][UP45M] = 1'b0;
393
    M[7][1][UP] = (!R[7*8 + 1] && !B[7*8 + 1]) &&
394
 
395
                 (
396
                 (R[6*8 + 1] && B[5*8 + 1]) ||
397
                 (R[6*8 + 1] && R[5*8 + 1] && B[4*8 + 1]) ||
398
                 (R[6*8 + 1] && R[5*8 + 1] && R[4*8 + 1] && B[3*8 + 1]) ||
399
                 (R[6*8 + 1] && R[5*8 + 1] && R[4*8 + 1] && R[3*8 + 1] && B[2*8 + 1]) ||
400
                 (R[6*8 + 1] && R[5*8 + 1] && R[4*8 + 1] && R[3*8 + 1] && R[2*8 + 1] && B[1*8 + 1]) ||
401
                 (R[6*8 + 1] && R[5*8 + 1] && R[4*8 + 1] && R[3*8 + 1] && R[2*8 + 1] && R[1*8 + 1] && B[0*8 + 1])
402
                 );
403
    M[7][1][UP45P] = 1'b0;
404
    M[6][0][ZEROP] = 1'b0;
405
    M[6][0][DOWN45P] = 1'b0;
406
    M[6][0][DOWN] = 1'b0;
407
    M[6][0][DOWN45M] = (!R[6*8 + 0] && !B[6*8 + 0]) &&
408
 
409
                 (
410
                 (R[5*8 + 1] && B[4*8 + 2]) ||
411
                 (R[5*8 + 1] && R[4*8 + 2] && B[3*8 + 3]) ||
412
                 (R[5*8 + 1] && R[4*8 + 2] && R[3*8 + 3] && B[2*8 + 4]) ||
413
                 (R[5*8 + 1] && R[4*8 + 2] && R[3*8 + 3] && R[2*8 + 4] && B[1*8 + 5]) ||
414
                 (R[5*8 + 1] && R[4*8 + 2] && R[3*8 + 3] && R[2*8 + 4] && R[1*8 + 5] && B[0*8 + 6])
415
                 );
416
    M[6][0][ZEROM] = (!R[6*8 + 0] && !B[6*8 + 0]) &&
417
 
418
                 (
419
                 (R[6*8 + 1] && B[6*8 + 2]) ||
420
                 (R[6*8 + 1] && R[6*8 + 2] && B[6*8 + 3]) ||
421
                 (R[6*8 + 1] && R[6*8 + 2] && R[6*8 + 3] && B[6*8 + 4]) ||
422
                 (R[6*8 + 1] && R[6*8 + 2] && R[6*8 + 3] && R[6*8 + 4] && B[6*8 + 5]) ||
423
                 (R[6*8 + 1] && R[6*8 + 2] && R[6*8 + 3] && R[6*8 + 4] && R[6*8 + 5] && B[6*8 + 6]) ||
424
                 (R[6*8 + 1] && R[6*8 + 2] && R[6*8 + 3] && R[6*8 + 4] && R[6*8 + 5] && R[6*8 + 6] && B[6*8 + 7])
425
                 );
426
    M[6][0][UP45M] = 1'b0;
427
    M[6][0][UP] = (!R[6*8 + 0] && !B[6*8 + 0]) &&
428
 
429
                 (
430
                 (R[5*8 + 0] && B[4*8 + 0]) ||
431
                 (R[5*8 + 0] && R[4*8 + 0] && B[3*8 + 0]) ||
432
                 (R[5*8 + 0] && R[4*8 + 0] && R[3*8 + 0] && B[2*8 + 0]) ||
433
                 (R[5*8 + 0] && R[4*8 + 0] && R[3*8 + 0] && R[2*8 + 0] && B[1*8 + 0]) ||
434
                 (R[5*8 + 0] && R[4*8 + 0] && R[3*8 + 0] && R[2*8 + 0] && R[1*8 + 0] && B[0*8 + 0])
435
                 );
436
    M[6][0][UP45P] = 1'b0;
437
    M[1][0][ZEROP] = (!R[1*8 + 0] && !B[1*8 + 0]) &&
438
 
439
                 (
440
                 (R[2*8 + 1] && B[3*8 + 2]) ||
441
                 (R[2*8 + 1] && R[3*8 + 2] && B[4*8 + 3]) ||
442
                 (R[2*8 + 1] && R[3*8 + 2] && R[4*8 + 3] && B[5*8 + 4]) ||
443
                 (R[2*8 + 1] && R[3*8 + 2] && R[4*8 + 3] && R[5*8 + 4] && B[6*8 + 5]) ||
444
                 (R[2*8 + 1] && R[3*8 + 2] && R[4*8 + 3] && R[5*8 + 4] && R[6*8 + 5] && B[7*8 + 6])
445
                 );
446
    M[1][0][DOWN45P] = 1'b0;
447
    M[1][0][DOWN] = 1'b0;
448
    M[1][0][DOWN45M] = 1'b0;
449
    M[1][0][ZEROM] = (!R[1*8 + 0] && !B[1*8 + 0]) &&
450
 
451
                 (
452
                 (R[1*8 + 1] && B[1*8 + 2]) ||
453
                 (R[1*8 + 1] && R[1*8 + 2] && B[1*8 + 3]) ||
454
                 (R[1*8 + 1] && R[1*8 + 2] && R[1*8 + 3] && B[1*8 + 4]) ||
455
                 (R[1*8 + 1] && R[1*8 + 2] && R[1*8 + 3] && R[1*8 + 4] && B[1*8 + 5]) ||
456
                 (R[1*8 + 1] && R[1*8 + 2] && R[1*8 + 3] && R[1*8 + 4] && R[1*8 + 5] && B[1*8 + 6]) ||
457
                 (R[1*8 + 1] && R[1*8 + 2] && R[1*8 + 3] && R[1*8 + 4] && R[1*8 + 5] && R[1*8 + 6] && B[1*8 + 7])
458
                 );
459
    M[1][0][UP45M] = (!R[1*8 + 0] && !B[1*8 + 0]) &&
460
 
461
                 (
462
                 (R[2*8 + 0] && B[3*8 + 0]) ||
463
                 (R[2*8 + 0] && R[3*8 + 0] && B[4*8 + 0]) ||
464
                 (R[2*8 + 0] && R[3*8 + 0] && R[4*8 + 0] && B[5*8 + 0]) ||
465
                 (R[2*8 + 0] && R[3*8 + 0] && R[4*8 + 0] && R[5*8 + 0] && B[6*8 + 0]) ||
466
                 (R[2*8 + 0] && R[3*8 + 0] && R[4*8 + 0] && R[5*8 + 0] && R[6*8 + 0] && B[7*8 + 0])
467
                 );
468
    M[1][0][UP] = 1'b0;
469
    M[1][0][UP45P] = 1'b0;
470
 
471
 
472
// Expresii generate pentru patrate C
473
    M[0][2][ZEROP] = (!R[0*8 + 2] && !B[0*8 + 2]) &&
474
 
475
                 (
476
                 (R[1*8 + 3] && B[2*8 + 4]) ||
477
                 (R[1*8 + 3] && R[2*8 + 4] && B[3*8 + 5]) ||
478
                 (R[1*8 + 3] && R[2*8 + 4] && R[3*8 + 5] && B[4*8 + 6]) ||
479
                 (R[1*8 + 3] && R[2*8 + 4] && R[3*8 + 5] && R[4*8 + 6] && B[5*8 + 7])
480
                 );
481
    M[0][2][DOWN45P] = (!R[0*8 + 2] && !B[0*8 + 2]) &&
482
 
483
                 (
484
                 (R[1*8 + 1] && B[2*8 + 0])
485
                 );
486
    M[0][2][DOWN] = 1'b0;
487
    M[0][2][DOWN45M] = 1'b0;
488
    M[0][2][ZEROM] = (!R[0*8 + 2] && !B[0*8 + 2]) &&
489
 
490
                 (
491
                 (R[0*8 + 3] && B[0*8 + 4]) ||
492
                 (R[0*8 + 3] && R[0*8 + 4] && B[0*8 + 5]) ||
493
                 (R[0*8 + 3] && R[0*8 + 4] && R[0*8 + 5] && B[0*8 + 6]) ||
494
                 (R[0*8 + 3] && R[0*8 + 4] && R[0*8 + 5] && R[0*8 + 6] && B[0*8 + 7])
495
                 );
496
    M[0][2][UP45M] = (!R[0*8 + 2] && !B[0*8 + 2]) &&
497
 
498
                 (
499
                 (R[1*8 + 2] && B[2*8 + 2]) ||
500
                 (R[1*8 + 2] && R[2*8 + 2] && B[3*8 + 2]) ||
501
                 (R[1*8 + 2] && R[2*8 + 2] && R[3*8 + 2] && B[4*8 + 2]) ||
502
                 (R[1*8 + 2] && R[2*8 + 2] && R[3*8 + 2] && R[4*8 + 2] && B[5*8 + 2]) ||
503
                 (R[1*8 + 2] && R[2*8 + 2] && R[3*8 + 2] && R[4*8 + 2] && R[5*8 + 2] && B[6*8 + 2]) ||
504
                 (R[1*8 + 2] && R[2*8 + 2] && R[3*8 + 2] && R[4*8 + 2] && R[5*8 + 2] && R[6*8 + 2] && B[7*8 + 2])
505
                 );
506
    M[0][2][UP] = 1'b0;
507
    M[0][2][UP45P] = (!R[0*8 + 2] && !B[0*8 + 2]) &&
508
 
509
                 (
510
                 (R[0*8 + 1] && B[0*8 + 0])
511
                 );
512
    M[0][5][ZEROP] = (!R[0*8 + 5] && !B[0*8 + 5]) &&
513
 
514
                 (
515
                 (R[1*8 + 6] && B[2*8 + 7])
516
                 );
517
    M[0][5][DOWN45P] = (!R[0*8 + 5] && !B[0*8 + 5]) &&
518
 
519
                 (
520
                 (R[1*8 + 4] && B[2*8 + 3]) ||
521
                 (R[1*8 + 4] && R[2*8 + 3] && B[3*8 + 2]) ||
522
                 (R[1*8 + 4] && R[2*8 + 3] && R[3*8 + 2] && B[4*8 + 1]) ||
523
                 (R[1*8 + 4] && R[2*8 + 3] && R[3*8 + 2] && R[4*8 + 1] && B[5*8 + 0])
524
                 );
525
    M[0][5][DOWN] = 1'b0;
526
    M[0][5][DOWN45M] = 1'b0;
527
    M[0][5][ZEROM] = (!R[0*8 + 5] && !B[0*8 + 5]) &&
528
 
529
                 (
530
                 (R[0*8 + 6] && B[0*8 + 7])
531
                 );
532
    M[0][5][UP45M] = (!R[0*8 + 5] && !B[0*8 + 5]) &&
533
 
534
                 (
535
                 (R[1*8 + 5] && B[2*8 + 5]) ||
536
                 (R[1*8 + 5] && R[2*8 + 5] && B[3*8 + 5]) ||
537
                 (R[1*8 + 5] && R[2*8 + 5] && R[3*8 + 5] && B[4*8 + 5]) ||
538
                 (R[1*8 + 5] && R[2*8 + 5] && R[3*8 + 5] && R[4*8 + 5] && B[5*8 + 5]) ||
539
                 (R[1*8 + 5] && R[2*8 + 5] && R[3*8 + 5] && R[4*8 + 5] && R[5*8 + 5] && B[6*8 + 5]) ||
540
                 (R[1*8 + 5] && R[2*8 + 5] && R[3*8 + 5] && R[4*8 + 5] && R[5*8 + 5] && R[6*8 + 5] && B[7*8 + 5])
541
                 );
542
    M[0][5][UP] = 1'b0;
543
    M[0][5][UP45P] = (!R[0*8 + 5] && !B[0*8 + 5]) &&
544
 
545
                 (
546
                 (R[0*8 + 4] && B[0*8 + 3]) ||
547
                 (R[0*8 + 4] && R[0*8 + 3] && B[0*8 + 2]) ||
548
                 (R[0*8 + 4] && R[0*8 + 3] && R[0*8 + 2] && B[0*8 + 1]) ||
549
                 (R[0*8 + 4] && R[0*8 + 3] && R[0*8 + 2] && R[0*8 + 1] && B[0*8 + 0])
550
                 );
551
    M[2][7][ZEROP] = 1'b0;
552
    M[2][7][DOWN45P] = (!R[2*8 + 7] && !B[2*8 + 7]) &&
553
 
554
                 (
555
                 (R[3*8 + 6] && B[4*8 + 5]) ||
556
                 (R[3*8 + 6] && R[4*8 + 5] && B[5*8 + 4]) ||
557
                 (R[3*8 + 6] && R[4*8 + 5] && R[5*8 + 4] && B[6*8 + 3]) ||
558
                 (R[3*8 + 6] && R[4*8 + 5] && R[5*8 + 4] && R[6*8 + 3] && B[7*8 + 2])
559
                 );
560
    M[2][7][DOWN] = (!R[2*8 + 7] && !B[2*8 + 7]) &&
561
 
562
                 (
563
                 (R[1*8 + 6] && B[0*8 + 5])
564
                 );
565
    M[2][7][DOWN45M] = 1'b0;
566
    M[2][7][ZEROM] = 1'b0;
567
    M[2][7][UP45M] = (!R[2*8 + 7] && !B[2*8 + 7]) &&
568
 
569
                 (
570
                 (R[3*8 + 7] && B[4*8 + 7]) ||
571
                 (R[3*8 + 7] && R[4*8 + 7] && B[5*8 + 7]) ||
572
                 (R[3*8 + 7] && R[4*8 + 7] && R[5*8 + 7] && B[6*8 + 7]) ||
573
                 (R[3*8 + 7] && R[4*8 + 7] && R[5*8 + 7] && R[6*8 + 7] && B[7*8 + 7])
574
                 );
575
    M[2][7][UP] = (!R[2*8 + 7] && !B[2*8 + 7]) &&
576
 
577
                 (
578
                 (R[1*8 + 7] && B[0*8 + 7])
579
                 );
580
    M[2][7][UP45P] = (!R[2*8 + 7] && !B[2*8 + 7]) &&
581
 
582
                 (
583
                 (R[2*8 + 6] && B[2*8 + 5]) ||
584
                 (R[2*8 + 6] && R[2*8 + 5] && B[2*8 + 4]) ||
585
                 (R[2*8 + 6] && R[2*8 + 5] && R[2*8 + 4] && B[2*8 + 3]) ||
586
                 (R[2*8 + 6] && R[2*8 + 5] && R[2*8 + 4] && R[2*8 + 3] && B[2*8 + 2]) ||
587
                 (R[2*8 + 6] && R[2*8 + 5] && R[2*8 + 4] && R[2*8 + 3] && R[2*8 + 2] && B[2*8 + 1]) ||
588
                 (R[2*8 + 6] && R[2*8 + 5] && R[2*8 + 4] && R[2*8 + 3] && R[2*8 + 2] && R[2*8 + 1] && B[2*8 + 0])
589
                 );
590
    M[5][7][ZEROP] = 1'b0;
591
    M[5][7][DOWN45P] = (!R[5*8 + 7] && !B[5*8 + 7]) &&
592
 
593
                 (
594
                 (R[6*8 + 6] && B[7*8 + 5])
595
                 );
596
    M[5][7][DOWN] = (!R[5*8 + 7] && !B[5*8 + 7]) &&
597
 
598
                 (
599
                 (R[4*8 + 6] && B[3*8 + 5]) ||
600
                 (R[4*8 + 6] && R[3*8 + 5] && B[2*8 + 4]) ||
601
                 (R[4*8 + 6] && R[3*8 + 5] && R[2*8 + 4] && B[1*8 + 3]) ||
602
                 (R[4*8 + 6] && R[3*8 + 5] && R[2*8 + 4] && R[1*8 + 3] && B[0*8 + 2])
603
                 );
604
    M[5][7][DOWN45M] = 1'b0;
605
    M[5][7][ZEROM] = 1'b0;
606
    M[5][7][UP45M] = (!R[5*8 + 7] && !B[5*8 + 7]) &&
607
 
608
                 (
609
                 (R[6*8 + 7] && B[7*8 + 7])
610
                 );
611
    M[5][7][UP] = (!R[5*8 + 7] && !B[5*8 + 7]) &&
612
 
613
                 (
614
                 (R[4*8 + 7] && B[3*8 + 7]) ||
615
                 (R[4*8 + 7] && R[3*8 + 7] && B[2*8 + 7]) ||
616
                 (R[4*8 + 7] && R[3*8 + 7] && R[2*8 + 7] && B[1*8 + 7]) ||
617
                 (R[4*8 + 7] && R[3*8 + 7] && R[2*8 + 7] && R[1*8 + 7] && B[0*8 + 7])
618
                 );
619
    M[5][7][UP45P] = (!R[5*8 + 7] && !B[5*8 + 7]) &&
620
 
621
                 (
622
                 (R[5*8 + 6] && B[5*8 + 5]) ||
623
                 (R[5*8 + 6] && R[5*8 + 5] && B[5*8 + 4]) ||
624
                 (R[5*8 + 6] && R[5*8 + 5] && R[5*8 + 4] && B[5*8 + 3]) ||
625
                 (R[5*8 + 6] && R[5*8 + 5] && R[5*8 + 4] && R[5*8 + 3] && B[5*8 + 2]) ||
626
                 (R[5*8 + 6] && R[5*8 + 5] && R[5*8 + 4] && R[5*8 + 3] && R[5*8 + 2] && B[5*8 + 1]) ||
627
                 (R[5*8 + 6] && R[5*8 + 5] && R[5*8 + 4] && R[5*8 + 3] && R[5*8 + 2] && R[5*8 + 1] && B[5*8 + 0])
628
                 );
629
    M[7][5][ZEROP] = 1'b0;
630
    M[7][5][DOWN45P] = 1'b0;
631
    M[7][5][DOWN] = (!R[7*8 + 5] && !B[7*8 + 5]) &&
632
 
633
                 (
634
                 (R[6*8 + 4] && B[5*8 + 3]) ||
635
                 (R[6*8 + 4] && R[5*8 + 3] && B[4*8 + 2]) ||
636
                 (R[6*8 + 4] && R[5*8 + 3] && R[4*8 + 2] && B[3*8 + 1]) ||
637
                 (R[6*8 + 4] && R[5*8 + 3] && R[4*8 + 2] && R[3*8 + 1] && B[2*8 + 0])
638
                 );
639
    M[7][5][DOWN45M] = (!R[7*8 + 5] && !B[7*8 + 5]) &&
640
 
641
                 (
642
                 (R[6*8 + 6] && B[5*8 + 7])
643
                 );
644
    M[7][5][ZEROM] = (!R[7*8 + 5] && !B[7*8 + 5]) &&
645
 
646
                 (
647
                 (R[7*8 + 6] && B[7*8 + 7])
648
                 );
649
    M[7][5][UP45M] = 1'b0;
650
    M[7][5][UP] = (!R[7*8 + 5] && !B[7*8 + 5]) &&
651
 
652
                 (
653
                 (R[6*8 + 5] && B[5*8 + 5]) ||
654
                 (R[6*8 + 5] && R[5*8 + 5] && B[4*8 + 5]) ||
655
                 (R[6*8 + 5] && R[5*8 + 5] && R[4*8 + 5] && B[3*8 + 5]) ||
656
                 (R[6*8 + 5] && R[5*8 + 5] && R[4*8 + 5] && R[3*8 + 5] && B[2*8 + 5]) ||
657
                 (R[6*8 + 5] && R[5*8 + 5] && R[4*8 + 5] && R[3*8 + 5] && R[2*8 + 5] && B[1*8 + 5]) ||
658
                 (R[6*8 + 5] && R[5*8 + 5] && R[4*8 + 5] && R[3*8 + 5] && R[2*8 + 5] && R[1*8 + 5] && B[0*8 + 5])
659
                 );
660
    M[7][5][UP45P] = (!R[7*8 + 5] && !B[7*8 + 5]) &&
661
 
662
                 (
663
                 (R[7*8 + 4] && B[7*8 + 3]) ||
664
                 (R[7*8 + 4] && R[7*8 + 3] && B[7*8 + 2]) ||
665
                 (R[7*8 + 4] && R[7*8 + 3] && R[7*8 + 2] && B[7*8 + 1]) ||
666
                 (R[7*8 + 4] && R[7*8 + 3] && R[7*8 + 2] && R[7*8 + 1] && B[7*8 + 0])
667
                 );
668
    M[7][2][ZEROP] = 1'b0;
669
    M[7][2][DOWN45P] = 1'b0;
670
    M[7][2][DOWN] = (!R[7*8 + 2] && !B[7*8 + 2]) &&
671
 
672
                 (
673
                 (R[6*8 + 1] && B[5*8 + 0])
674
                 );
675
    M[7][2][DOWN45M] = (!R[7*8 + 2] && !B[7*8 + 2]) &&
676
 
677
                 (
678
                 (R[6*8 + 3] && B[5*8 + 4]) ||
679
                 (R[6*8 + 3] && R[5*8 + 4] && B[4*8 + 5]) ||
680
                 (R[6*8 + 3] && R[5*8 + 4] && R[4*8 + 5] && B[3*8 + 6]) ||
681
                 (R[6*8 + 3] && R[5*8 + 4] && R[4*8 + 5] && R[3*8 + 6] && B[2*8 + 7])
682
                 );
683
    M[7][2][ZEROM] = (!R[7*8 + 2] && !B[7*8 + 2]) &&
684
 
685
                 (
686
                 (R[7*8 + 3] && B[7*8 + 4]) ||
687
                 (R[7*8 + 3] && R[7*8 + 4] && B[7*8 + 5]) ||
688
                 (R[7*8 + 3] && R[7*8 + 4] && R[7*8 + 5] && B[7*8 + 6]) ||
689
                 (R[7*8 + 3] && R[7*8 + 4] && R[7*8 + 5] && R[7*8 + 6] && B[7*8 + 7])
690
                 );
691
    M[7][2][UP45M] = 1'b0;
692
    M[7][2][UP] = (!R[7*8 + 2] && !B[7*8 + 2]) &&
693
 
694
                 (
695
                 (R[6*8 + 2] && B[5*8 + 2]) ||
696
                 (R[6*8 + 2] && R[5*8 + 2] && B[4*8 + 2]) ||
697
                 (R[6*8 + 2] && R[5*8 + 2] && R[4*8 + 2] && B[3*8 + 2]) ||
698
                 (R[6*8 + 2] && R[5*8 + 2] && R[4*8 + 2] && R[3*8 + 2] && B[2*8 + 2]) ||
699
                 (R[6*8 + 2] && R[5*8 + 2] && R[4*8 + 2] && R[3*8 + 2] && R[2*8 + 2] && B[1*8 + 2]) ||
700
                 (R[6*8 + 2] && R[5*8 + 2] && R[4*8 + 2] && R[3*8 + 2] && R[2*8 + 2] && R[1*8 + 2] && B[0*8 + 2])
701
                 );
702
    M[7][2][UP45P] = (!R[7*8 + 2] && !B[7*8 + 2]) &&
703
 
704
                 (
705
                 (R[7*8 + 1] && B[7*8 + 0])
706
                 );
707
    M[5][0][ZEROP] = (!R[5*8 + 0] && !B[5*8 + 0]) &&
708
 
709
                 (
710
                 (R[6*8 + 1] && B[7*8 + 2])
711
                 );
712
    M[5][0][DOWN45P] = 1'b0;
713
    M[5][0][DOWN] = 1'b0;
714
    M[5][0][DOWN45M] = (!R[5*8 + 0] && !B[5*8 + 0]) &&
715
 
716
                 (
717
                 (R[4*8 + 1] && B[3*8 + 2]) ||
718
                 (R[4*8 + 1] && R[3*8 + 2] && B[2*8 + 3]) ||
719
                 (R[4*8 + 1] && R[3*8 + 2] && R[2*8 + 3] && B[1*8 + 4]) ||
720
                 (R[4*8 + 1] && R[3*8 + 2] && R[2*8 + 3] && R[1*8 + 4] && B[0*8 + 5])
721
                 );
722
    M[5][0][ZEROM] = (!R[5*8 + 0] && !B[5*8 + 0]) &&
723
 
724
                 (
725
                 (R[5*8 + 1] && B[5*8 + 2]) ||
726
                 (R[5*8 + 1] && R[5*8 + 2] && B[5*8 + 3]) ||
727
                 (R[5*8 + 1] && R[5*8 + 2] && R[5*8 + 3] && B[5*8 + 4]) ||
728
                 (R[5*8 + 1] && R[5*8 + 2] && R[5*8 + 3] && R[5*8 + 4] && B[5*8 + 5]) ||
729
                 (R[5*8 + 1] && R[5*8 + 2] && R[5*8 + 3] && R[5*8 + 4] && R[5*8 + 5] && B[5*8 + 6]) ||
730
                 (R[5*8 + 1] && R[5*8 + 2] && R[5*8 + 3] && R[5*8 + 4] && R[5*8 + 5] && R[5*8 + 6] && B[5*8 + 7])
731
                 );
732
    M[5][0][UP45M] = (!R[5*8 + 0] && !B[5*8 + 0]) &&
733
 
734
                 (
735
                 (R[6*8 + 0] && B[7*8 + 0])
736
                 );
737
    M[5][0][UP] = (!R[5*8 + 0] && !B[5*8 + 0]) &&
738
 
739
                 (
740
                 (R[4*8 + 0] && B[3*8 + 0]) ||
741
                 (R[4*8 + 0] && R[3*8 + 0] && B[2*8 + 0]) ||
742
                 (R[4*8 + 0] && R[3*8 + 0] && R[2*8 + 0] && B[1*8 + 0]) ||
743
                 (R[4*8 + 0] && R[3*8 + 0] && R[2*8 + 0] && R[1*8 + 0] && B[0*8 + 0])
744
                 );
745
    M[5][0][UP45P] = 1'b0;
746
    M[2][0][ZEROP] = (!R[2*8 + 0] && !B[2*8 + 0]) &&
747
 
748
                 (
749
                 (R[3*8 + 1] && B[4*8 + 2]) ||
750
                 (R[3*8 + 1] && R[4*8 + 2] && B[5*8 + 3]) ||
751
                 (R[3*8 + 1] && R[4*8 + 2] && R[5*8 + 3] && B[6*8 + 4]) ||
752
                 (R[3*8 + 1] && R[4*8 + 2] && R[5*8 + 3] && R[6*8 + 4] && B[7*8 + 5])
753
                 );
754
    M[2][0][DOWN45P] = 1'b0;
755
    M[2][0][DOWN] = 1'b0;
756
    M[2][0][DOWN45M] = (!R[2*8 + 0] && !B[2*8 + 0]) &&
757
 
758
                 (
759
                 (R[1*8 + 1] && B[0*8 + 2])
760
                 );
761
    M[2][0][ZEROM] = (!R[2*8 + 0] && !B[2*8 + 0]) &&
762
 
763
                 (
764
                 (R[2*8 + 1] && B[2*8 + 2]) ||
765
                 (R[2*8 + 1] && R[2*8 + 2] && B[2*8 + 3]) ||
766
                 (R[2*8 + 1] && R[2*8 + 2] && R[2*8 + 3] && B[2*8 + 4]) ||
767
                 (R[2*8 + 1] && R[2*8 + 2] && R[2*8 + 3] && R[2*8 + 4] && B[2*8 + 5]) ||
768
                 (R[2*8 + 1] && R[2*8 + 2] && R[2*8 + 3] && R[2*8 + 4] && R[2*8 + 5] && B[2*8 + 6]) ||
769
                 (R[2*8 + 1] && R[2*8 + 2] && R[2*8 + 3] && R[2*8 + 4] && R[2*8 + 5] && R[2*8 + 6] && B[2*8 + 7])
770
                 );
771
    M[2][0][UP45M] = (!R[2*8 + 0] && !B[2*8 + 0]) &&
772
 
773
                 (
774
                 (R[3*8 + 0] && B[4*8 + 0]) ||
775
                 (R[3*8 + 0] && R[4*8 + 0] && B[5*8 + 0]) ||
776
                 (R[3*8 + 0] && R[4*8 + 0] && R[5*8 + 0] && B[6*8 + 0]) ||
777
                 (R[3*8 + 0] && R[4*8 + 0] && R[5*8 + 0] && R[6*8 + 0] && B[7*8 + 0])
778
                 );
779
    M[2][0][UP] = (!R[2*8 + 0] && !B[2*8 + 0]) &&
780
 
781
                 (
782
                 (R[1*8 + 0] && B[0*8 + 0])
783
                 );
784
    M[2][0][UP45P] = 1'b0;
785
 
786
 
787
// Expresii generate pentru patrate D
788
    M[0][3][ZEROP] = (!R[0*8 + 3] && !B[0*8 + 3]) &&
789
 
790
                 (
791
                 (R[1*8 + 4] && B[2*8 + 5]) ||
792
                 (R[1*8 + 4] && R[2*8 + 5] && B[3*8 + 6]) ||
793
                 (R[1*8 + 4] && R[2*8 + 5] && R[3*8 + 6] && B[4*8 + 7])
794
                 );
795
    M[0][3][DOWN45P] = (!R[0*8 + 3] && !B[0*8 + 3]) &&
796
 
797
                 (
798
                 (R[1*8 + 2] && B[2*8 + 1]) ||
799
                 (R[1*8 + 2] && R[2*8 + 1] && B[3*8 + 0])
800
                 );
801
    M[0][3][DOWN] = 1'b0;
802
    M[0][3][DOWN45M] = 1'b0;
803
    M[0][3][ZEROM] = (!R[0*8 + 3] && !B[0*8 + 3]) &&
804
 
805
                 (
806
                 (R[0*8 + 4] && B[0*8 + 5]) ||
807
                 (R[0*8 + 4] && R[0*8 + 5] && B[0*8 + 6]) ||
808
                 (R[0*8 + 4] && R[0*8 + 5] && R[0*8 + 6] && B[0*8 + 7])
809
                 );
810
    M[0][3][UP45M] = (!R[0*8 + 3] && !B[0*8 + 3]) &&
811
 
812
                 (
813
                 (R[1*8 + 3] && B[2*8 + 3]) ||
814
                 (R[1*8 + 3] && R[2*8 + 3] && B[3*8 + 3]) ||
815
                 (R[1*8 + 3] && R[2*8 + 3] && R[3*8 + 3] && B[4*8 + 3]) ||
816
                 (R[1*8 + 3] && R[2*8 + 3] && R[3*8 + 3] && R[4*8 + 3] && B[5*8 + 3]) ||
817
                 (R[1*8 + 3] && R[2*8 + 3] && R[3*8 + 3] && R[4*8 + 3] && R[5*8 + 3] && B[6*8 + 3]) ||
818
                 (R[1*8 + 3] && R[2*8 + 3] && R[3*8 + 3] && R[4*8 + 3] && R[5*8 + 3] && R[6*8 + 3] && B[7*8 + 3])
819
                 );
820
    M[0][3][UP] = 1'b0;
821
    M[0][3][UP45P] = (!R[0*8 + 3] && !B[0*8 + 3]) &&
822
 
823
                 (
824
                 (R[0*8 + 2] && B[0*8 + 1]) ||
825
                 (R[0*8 + 2] && R[0*8 + 1] && B[0*8 + 0])
826
                 );
827
    M[0][4][ZEROP] = (!R[0*8 + 4] && !B[0*8 + 4]) &&
828
 
829
                 (
830
                 (R[1*8 + 5] && B[2*8 + 6]) ||
831
                 (R[1*8 + 5] && R[2*8 + 6] && B[3*8 + 7])
832
                 );
833
    M[0][4][DOWN45P] = (!R[0*8 + 4] && !B[0*8 + 4]) &&
834
 
835
                 (
836
                 (R[1*8 + 3] && B[2*8 + 2]) ||
837
                 (R[1*8 + 3] && R[2*8 + 2] && B[3*8 + 1]) ||
838
                 (R[1*8 + 3] && R[2*8 + 2] && R[3*8 + 1] && B[4*8 + 0])
839
                 );
840
    M[0][4][DOWN] = 1'b0;
841
    M[0][4][DOWN45M] = 1'b0;
842
    M[0][4][ZEROM] = (!R[0*8 + 4] && !B[0*8 + 4]) &&
843
 
844
                 (
845
                 (R[0*8 + 5] && B[0*8 + 6]) ||
846
                 (R[0*8 + 5] && R[0*8 + 6] && B[0*8 + 7])
847
                 );
848
    M[0][4][UP45M] = (!R[0*8 + 4] && !B[0*8 + 4]) &&
849
 
850
                 (
851
                 (R[1*8 + 4] && B[2*8 + 4]) ||
852
                 (R[1*8 + 4] && R[2*8 + 4] && B[3*8 + 4]) ||
853
                 (R[1*8 + 4] && R[2*8 + 4] && R[3*8 + 4] && B[4*8 + 4]) ||
854
                 (R[1*8 + 4] && R[2*8 + 4] && R[3*8 + 4] && R[4*8 + 4] && B[5*8 + 4]) ||
855
                 (R[1*8 + 4] && R[2*8 + 4] && R[3*8 + 4] && R[4*8 + 4] && R[5*8 + 4] && B[6*8 + 4]) ||
856
                 (R[1*8 + 4] && R[2*8 + 4] && R[3*8 + 4] && R[4*8 + 4] && R[5*8 + 4] && R[6*8 + 4] && B[7*8 + 4])
857
                 );
858
    M[0][4][UP] = 1'b0;
859
    M[0][4][UP45P] = (!R[0*8 + 4] && !B[0*8 + 4]) &&
860
 
861
                 (
862
                 (R[0*8 + 3] && B[0*8 + 2]) ||
863
                 (R[0*8 + 3] && R[0*8 + 2] && B[0*8 + 1]) ||
864
                 (R[0*8 + 3] && R[0*8 + 2] && R[0*8 + 1] && B[0*8 + 0])
865
                 );
866
    M[3][7][ZEROP] = 1'b0;
867
    M[3][7][DOWN45P] = (!R[3*8 + 7] && !B[3*8 + 7]) &&
868
 
869
                 (
870
                 (R[4*8 + 6] && B[5*8 + 5]) ||
871
                 (R[4*8 + 6] && R[5*8 + 5] && B[6*8 + 4]) ||
872
                 (R[4*8 + 6] && R[5*8 + 5] && R[6*8 + 4] && B[7*8 + 3])
873
                 );
874
    M[3][7][DOWN] = (!R[3*8 + 7] && !B[3*8 + 7]) &&
875
 
876
                 (
877
                 (R[2*8 + 6] && B[1*8 + 5]) ||
878
                 (R[2*8 + 6] && R[1*8 + 5] && B[0*8 + 4])
879
                 );
880
    M[3][7][DOWN45M] = 1'b0;
881
    M[3][7][ZEROM] = 1'b0;
882
    M[3][7][UP45M] = (!R[3*8 + 7] && !B[3*8 + 7]) &&
883
 
884
                 (
885
                 (R[4*8 + 7] && B[5*8 + 7]) ||
886
                 (R[4*8 + 7] && R[5*8 + 7] && B[6*8 + 7]) ||
887
                 (R[4*8 + 7] && R[5*8 + 7] && R[6*8 + 7] && B[7*8 + 7])
888
                 );
889
    M[3][7][UP] = (!R[3*8 + 7] && !B[3*8 + 7]) &&
890
 
891
                 (
892
                 (R[2*8 + 7] && B[1*8 + 7]) ||
893
                 (R[2*8 + 7] && R[1*8 + 7] && B[0*8 + 7])
894
                 );
895
    M[3][7][UP45P] = (!R[3*8 + 7] && !B[3*8 + 7]) &&
896
 
897
                 (
898
                 (R[3*8 + 6] && B[3*8 + 5]) ||
899
                 (R[3*8 + 6] && R[3*8 + 5] && B[3*8 + 4]) ||
900
                 (R[3*8 + 6] && R[3*8 + 5] && R[3*8 + 4] && B[3*8 + 3]) ||
901
                 (R[3*8 + 6] && R[3*8 + 5] && R[3*8 + 4] && R[3*8 + 3] && B[3*8 + 2]) ||
902
                 (R[3*8 + 6] && R[3*8 + 5] && R[3*8 + 4] && R[3*8 + 3] && R[3*8 + 2] && B[3*8 + 1]) ||
903
                 (R[3*8 + 6] && R[3*8 + 5] && R[3*8 + 4] && R[3*8 + 3] && R[3*8 + 2] && R[3*8 + 1] && B[3*8 + 0])
904
                 );
905
    M[4][7][ZEROP] = 1'b0;
906
    M[4][7][DOWN45P] = (!R[4*8 + 7] && !B[4*8 + 7]) &&
907
 
908
                 (
909
                 (R[5*8 + 6] && B[6*8 + 5]) ||
910
                 (R[5*8 + 6] && R[6*8 + 5] && B[7*8 + 4])
911
                 );
912
    M[4][7][DOWN] = (!R[4*8 + 7] && !B[4*8 + 7]) &&
913
 
914
                 (
915
                 (R[3*8 + 6] && B[2*8 + 5]) ||
916
                 (R[3*8 + 6] && R[2*8 + 5] && B[1*8 + 4]) ||
917
                 (R[3*8 + 6] && R[2*8 + 5] && R[1*8 + 4] && B[0*8 + 3])
918
                 );
919
    M[4][7][DOWN45M] = 1'b0;
920
    M[4][7][ZEROM] = 1'b0;
921
    M[4][7][UP45M] = (!R[4*8 + 7] && !B[4*8 + 7]) &&
922
 
923
                 (
924
                 (R[5*8 + 7] && B[6*8 + 7]) ||
925
                 (R[5*8 + 7] && R[6*8 + 7] && B[7*8 + 7])
926
                 );
927
    M[4][7][UP] = (!R[4*8 + 7] && !B[4*8 + 7]) &&
928
 
929
                 (
930
                 (R[3*8 + 7] && B[2*8 + 7]) ||
931
                 (R[3*8 + 7] && R[2*8 + 7] && B[1*8 + 7]) ||
932
                 (R[3*8 + 7] && R[2*8 + 7] && R[1*8 + 7] && B[0*8 + 7])
933
                 );
934
    M[4][7][UP45P] = (!R[4*8 + 7] && !B[4*8 + 7]) &&
935
 
936
                 (
937
                 (R[4*8 + 6] && B[4*8 + 5]) ||
938
                 (R[4*8 + 6] && R[4*8 + 5] && B[4*8 + 4]) ||
939
                 (R[4*8 + 6] && R[4*8 + 5] && R[4*8 + 4] && B[4*8 + 3]) ||
940
                 (R[4*8 + 6] && R[4*8 + 5] && R[4*8 + 4] && R[4*8 + 3] && B[4*8 + 2]) ||
941
                 (R[4*8 + 6] && R[4*8 + 5] && R[4*8 + 4] && R[4*8 + 3] && R[4*8 + 2] && B[4*8 + 1]) ||
942
                 (R[4*8 + 6] && R[4*8 + 5] && R[4*8 + 4] && R[4*8 + 3] && R[4*8 + 2] && R[4*8 + 1] && B[4*8 + 0])
943
                 );
944
    M[7][4][ZEROP] = 1'b0;
945
    M[7][4][DOWN45P] = 1'b0;
946
    M[7][4][DOWN] = (!R[7*8 + 4] && !B[7*8 + 4]) &&
947
 
948
                 (
949
                 (R[6*8 + 3] && B[5*8 + 2]) ||
950
                 (R[6*8 + 3] && R[5*8 + 2] && B[4*8 + 1]) ||
951
                 (R[6*8 + 3] && R[5*8 + 2] && R[4*8 + 1] && B[3*8 + 0])
952
                 );
953
    M[7][4][DOWN45M] = (!R[7*8 + 4] && !B[7*8 + 4]) &&
954
 
955
                 (
956
                 (R[6*8 + 5] && B[5*8 + 6]) ||
957
                 (R[6*8 + 5] && R[5*8 + 6] && B[4*8 + 7])
958
                 );
959
    M[7][4][ZEROM] = (!R[7*8 + 4] && !B[7*8 + 4]) &&
960
 
961
                 (
962
                 (R[7*8 + 5] && B[7*8 + 6]) ||
963
                 (R[7*8 + 5] && R[7*8 + 6] && B[7*8 + 7])
964
                 );
965
    M[7][4][UP45M] = 1'b0;
966
    M[7][4][UP] = (!R[7*8 + 4] && !B[7*8 + 4]) &&
967
 
968
                 (
969
                 (R[6*8 + 4] && B[5*8 + 4]) ||
970
                 (R[6*8 + 4] && R[5*8 + 4] && B[4*8 + 4]) ||
971
                 (R[6*8 + 4] && R[5*8 + 4] && R[4*8 + 4] && B[3*8 + 4]) ||
972
                 (R[6*8 + 4] && R[5*8 + 4] && R[4*8 + 4] && R[3*8 + 4] && B[2*8 + 4]) ||
973
                 (R[6*8 + 4] && R[5*8 + 4] && R[4*8 + 4] && R[3*8 + 4] && R[2*8 + 4] && B[1*8 + 4]) ||
974
                 (R[6*8 + 4] && R[5*8 + 4] && R[4*8 + 4] && R[3*8 + 4] && R[2*8 + 4] && R[1*8 + 4] && B[0*8 + 4])
975
                 );
976
    M[7][4][UP45P] = (!R[7*8 + 4] && !B[7*8 + 4]) &&
977
 
978
                 (
979
                 (R[7*8 + 3] && B[7*8 + 2]) ||
980
                 (R[7*8 + 3] && R[7*8 + 2] && B[7*8 + 1]) ||
981
                 (R[7*8 + 3] && R[7*8 + 2] && R[7*8 + 1] && B[7*8 + 0])
982
                 );
983
    M[7][3][ZEROP] = 1'b0;
984
    M[7][3][DOWN45P] = 1'b0;
985
    M[7][3][DOWN] = (!R[7*8 + 3] && !B[7*8 + 3]) &&
986
 
987
                 (
988
                 (R[6*8 + 2] && B[5*8 + 1]) ||
989
                 (R[6*8 + 2] && R[5*8 + 1] && B[4*8 + 0])
990
                 );
991
    M[7][3][DOWN45M] = (!R[7*8 + 3] && !B[7*8 + 3]) &&
992
 
993
                 (
994
                 (R[6*8 + 4] && B[5*8 + 5]) ||
995
                 (R[6*8 + 4] && R[5*8 + 5] && B[4*8 + 6]) ||
996
                 (R[6*8 + 4] && R[5*8 + 5] && R[4*8 + 6] && B[3*8 + 7])
997
                 );
998
    M[7][3][ZEROM] = (!R[7*8 + 3] && !B[7*8 + 3]) &&
999
 
1000
                 (
1001
                 (R[7*8 + 4] && B[7*8 + 5]) ||
1002
                 (R[7*8 + 4] && R[7*8 + 5] && B[7*8 + 6]) ||
1003
                 (R[7*8 + 4] && R[7*8 + 5] && R[7*8 + 6] && B[7*8 + 7])
1004
                 );
1005
    M[7][3][UP45M] = 1'b0;
1006
    M[7][3][UP] = (!R[7*8 + 3] && !B[7*8 + 3]) &&
1007
 
1008
                 (
1009
                 (R[6*8 + 3] && B[5*8 + 3]) ||
1010
                 (R[6*8 + 3] && R[5*8 + 3] && B[4*8 + 3]) ||
1011
                 (R[6*8 + 3] && R[5*8 + 3] && R[4*8 + 3] && B[3*8 + 3]) ||
1012
                 (R[6*8 + 3] && R[5*8 + 3] && R[4*8 + 3] && R[3*8 + 3] && B[2*8 + 3]) ||
1013
                 (R[6*8 + 3] && R[5*8 + 3] && R[4*8 + 3] && R[3*8 + 3] && R[2*8 + 3] && B[1*8 + 3]) ||
1014
                 (R[6*8 + 3] && R[5*8 + 3] && R[4*8 + 3] && R[3*8 + 3] && R[2*8 + 3] && R[1*8 + 3] && B[0*8 + 3])
1015
                 );
1016
    M[7][3][UP45P] = (!R[7*8 + 3] && !B[7*8 + 3]) &&
1017
 
1018
                 (
1019
                 (R[7*8 + 2] && B[7*8 + 1]) ||
1020
                 (R[7*8 + 2] && R[7*8 + 1] && B[7*8 + 0])
1021
                 );
1022
    M[4][0][ZEROP] = (!R[4*8 + 0] && !B[4*8 + 0]) &&
1023
 
1024
                 (
1025
                 (R[5*8 + 1] && B[6*8 + 2]) ||
1026
                 (R[5*8 + 1] && R[6*8 + 2] && B[7*8 + 3])
1027
                 );
1028
    M[4][0][DOWN45P] = 1'b0;
1029
    M[4][0][DOWN] = 1'b0;
1030
    M[4][0][DOWN45M] = (!R[4*8 + 0] && !B[4*8 + 0]) &&
1031
 
1032
                 (
1033
                 (R[3*8 + 1] && B[2*8 + 2]) ||
1034
                 (R[3*8 + 1] && R[2*8 + 2] && B[1*8 + 3]) ||
1035
                 (R[3*8 + 1] && R[2*8 + 2] && R[1*8 + 3] && B[0*8 + 4])
1036
                 );
1037
    M[4][0][ZEROM] = (!R[4*8 + 0] && !B[4*8 + 0]) &&
1038
 
1039
                 (
1040
                 (R[4*8 + 1] && B[4*8 + 2]) ||
1041
                 (R[4*8 + 1] && R[4*8 + 2] && B[4*8 + 3]) ||
1042
                 (R[4*8 + 1] && R[4*8 + 2] && R[4*8 + 3] && B[4*8 + 4]) ||
1043
                 (R[4*8 + 1] && R[4*8 + 2] && R[4*8 + 3] && R[4*8 + 4] && B[4*8 + 5]) ||
1044
                 (R[4*8 + 1] && R[4*8 + 2] && R[4*8 + 3] && R[4*8 + 4] && R[4*8 + 5] && B[4*8 + 6]) ||
1045
                 (R[4*8 + 1] && R[4*8 + 2] && R[4*8 + 3] && R[4*8 + 4] && R[4*8 + 5] && R[4*8 + 6] && B[4*8 + 7])
1046
                 );
1047
    M[4][0][UP45M] = (!R[4*8 + 0] && !B[4*8 + 0]) &&
1048
 
1049
                 (
1050
                 (R[5*8 + 0] && B[6*8 + 0]) ||
1051
                 (R[5*8 + 0] && R[6*8 + 0] && B[7*8 + 0])
1052
                 );
1053
    M[4][0][UP] = (!R[4*8 + 0] && !B[4*8 + 0]) &&
1054
 
1055
                 (
1056
                 (R[3*8 + 0] && B[2*8 + 0]) ||
1057
                 (R[3*8 + 0] && R[2*8 + 0] && B[1*8 + 0]) ||
1058
                 (R[3*8 + 0] && R[2*8 + 0] && R[1*8 + 0] && B[0*8 + 0])
1059
                 );
1060
    M[4][0][UP45P] = 1'b0;
1061
    M[3][0][ZEROP] = (!R[3*8 + 0] && !B[3*8 + 0]) &&
1062
 
1063
                 (
1064
                 (R[4*8 + 1] && B[5*8 + 2]) ||
1065
                 (R[4*8 + 1] && R[5*8 + 2] && B[6*8 + 3]) ||
1066
                 (R[4*8 + 1] && R[5*8 + 2] && R[6*8 + 3] && B[7*8 + 4])
1067
                 );
1068
    M[3][0][DOWN45P] = 1'b0;
1069
    M[3][0][DOWN] = 1'b0;
1070
    M[3][0][DOWN45M] = (!R[3*8 + 0] && !B[3*8 + 0]) &&
1071
 
1072
                 (
1073
                 (R[2*8 + 1] && B[1*8 + 2]) ||
1074
                 (R[2*8 + 1] && R[1*8 + 2] && B[0*8 + 3])
1075
                 );
1076
    M[3][0][ZEROM] = (!R[3*8 + 0] && !B[3*8 + 0]) &&
1077
 
1078
                 (
1079
                 (R[3*8 + 1] && B[3*8 + 2]) ||
1080
                 (R[3*8 + 1] && R[3*8 + 2] && B[3*8 + 3]) ||
1081
                 (R[3*8 + 1] && R[3*8 + 2] && R[3*8 + 3] && B[3*8 + 4]) ||
1082
                 (R[3*8 + 1] && R[3*8 + 2] && R[3*8 + 3] && R[3*8 + 4] && B[3*8 + 5]) ||
1083
                 (R[3*8 + 1] && R[3*8 + 2] && R[3*8 + 3] && R[3*8 + 4] && R[3*8 + 5] && B[3*8 + 6]) ||
1084
                 (R[3*8 + 1] && R[3*8 + 2] && R[3*8 + 3] && R[3*8 + 4] && R[3*8 + 5] && R[3*8 + 6] && B[3*8 + 7])
1085
                 );
1086
    M[3][0][UP45M] = (!R[3*8 + 0] && !B[3*8 + 0]) &&
1087
 
1088
                 (
1089
                 (R[4*8 + 0] && B[5*8 + 0]) ||
1090
                 (R[4*8 + 0] && R[5*8 + 0] && B[6*8 + 0]) ||
1091
                 (R[4*8 + 0] && R[5*8 + 0] && R[6*8 + 0] && B[7*8 + 0])
1092
                 );
1093
    M[3][0][UP] = (!R[3*8 + 0] && !B[3*8 + 0]) &&
1094
 
1095
                 (
1096
                 (R[2*8 + 0] && B[1*8 + 0]) ||
1097
                 (R[2*8 + 0] && R[1*8 + 0] && B[0*8 + 0])
1098
                 );
1099
    M[3][0][UP45P] = 1'b0;
1100
 
1101
 
1102
// Expresii generate pentru patrate E
1103
    M[1][1][ZEROP] = (!R[1*8 + 1] && !B[1*8 + 1]) &&
1104
 
1105
                 (
1106
                 (R[2*8 + 2] && B[3*8 + 3]) ||
1107
                 (R[2*8 + 2] && R[3*8 + 3] && B[4*8 + 4]) ||
1108
                 (R[2*8 + 2] && R[3*8 + 3] && R[4*8 + 4] && B[5*8 + 5]) ||
1109
                 (R[2*8 + 2] && R[3*8 + 3] && R[4*8 + 4] && R[5*8 + 5] && B[6*8 + 6]) ||
1110
                 (R[2*8 + 2] && R[3*8 + 3] && R[4*8 + 4] && R[5*8 + 5] && R[6*8 + 6] && B[7*8 + 7])
1111
                 );
1112
    M[1][1][DOWN45P] = 1'b0;
1113
    M[1][1][DOWN] = 1'b0;
1114
    M[1][1][DOWN45M] = 1'b0;
1115
    M[1][1][ZEROM] = (!R[1*8 + 1] && !B[1*8 + 1]) &&
1116
 
1117
                 (
1118
                 (R[1*8 + 2] && B[1*8 + 3]) ||
1119
                 (R[1*8 + 2] && R[1*8 + 3] && B[1*8 + 4]) ||
1120
                 (R[1*8 + 2] && R[1*8 + 3] && R[1*8 + 4] && B[1*8 + 5]) ||
1121
                 (R[1*8 + 2] && R[1*8 + 3] && R[1*8 + 4] && R[1*8 + 5] && B[1*8 + 6]) ||
1122
                 (R[1*8 + 2] && R[1*8 + 3] && R[1*8 + 4] && R[1*8 + 5] && R[1*8 + 6] && B[1*8 + 7])
1123
                 );
1124
    M[1][1][UP45M] = (!R[1*8 + 1] && !B[1*8 + 1]) &&
1125
 
1126
                 (
1127
                 (R[2*8 + 1] && B[3*8 + 1]) ||
1128
                 (R[2*8 + 1] && R[3*8 + 1] && B[4*8 + 1]) ||
1129
                 (R[2*8 + 1] && R[3*8 + 1] && R[4*8 + 1] && B[5*8 + 1]) ||
1130
                 (R[2*8 + 1] && R[3*8 + 1] && R[4*8 + 1] && R[5*8 + 1] && B[6*8 + 1]) ||
1131
                 (R[2*8 + 1] && R[3*8 + 1] && R[4*8 + 1] && R[5*8 + 1] && R[6*8 + 1] && B[7*8 + 1])
1132
                 );
1133
    M[1][1][UP] = 1'b0;
1134
    M[1][1][UP45P] = 1'b0;
1135
    M[1][6][ZEROP] = 1'b0;
1136
    M[1][6][DOWN45P] = (!R[1*8 + 6] && !B[1*8 + 6]) &&
1137
 
1138
                 (
1139
                 (R[2*8 + 5] && B[3*8 + 4]) ||
1140
                 (R[2*8 + 5] && R[3*8 + 4] && B[4*8 + 3]) ||
1141
                 (R[2*8 + 5] && R[3*8 + 4] && R[4*8 + 3] && B[5*8 + 2]) ||
1142
                 (R[2*8 + 5] && R[3*8 + 4] && R[4*8 + 3] && R[5*8 + 2] && B[6*8 + 1]) ||
1143
                 (R[2*8 + 5] && R[3*8 + 4] && R[4*8 + 3] && R[5*8 + 2] && R[6*8 + 1] && B[7*8 + 0])
1144
                 );
1145
    M[1][6][DOWN] = 1'b0;
1146
    M[1][6][DOWN45M] = 1'b0;
1147
    M[1][6][ZEROM] = 1'b0;
1148
    M[1][6][UP45M] = (!R[1*8 + 6] && !B[1*8 + 6]) &&
1149
 
1150
                 (
1151
                 (R[2*8 + 6] && B[3*8 + 6]) ||
1152
                 (R[2*8 + 6] && R[3*8 + 6] && B[4*8 + 6]) ||
1153
                 (R[2*8 + 6] && R[3*8 + 6] && R[4*8 + 6] && B[5*8 + 6]) ||
1154
                 (R[2*8 + 6] && R[3*8 + 6] && R[4*8 + 6] && R[5*8 + 6] && B[6*8 + 6]) ||
1155
                 (R[2*8 + 6] && R[3*8 + 6] && R[4*8 + 6] && R[5*8 + 6] && R[6*8 + 6] && B[7*8 + 6])
1156
                 );
1157
    M[1][6][UP] = 1'b0;
1158
    M[1][6][UP45P] = (!R[1*8 + 6] && !B[1*8 + 6]) &&
1159
 
1160
                 (
1161
                 (R[1*8 + 5] && B[1*8 + 4]) ||
1162
                 (R[1*8 + 5] && R[1*8 + 4] && B[1*8 + 3]) ||
1163
                 (R[1*8 + 5] && R[1*8 + 4] && R[1*8 + 3] && B[1*8 + 2]) ||
1164
                 (R[1*8 + 5] && R[1*8 + 4] && R[1*8 + 3] && R[1*8 + 2] && B[1*8 + 1]) ||
1165
                 (R[1*8 + 5] && R[1*8 + 4] && R[1*8 + 3] && R[1*8 + 2] && R[1*8 + 1] && B[1*8 + 0])
1166
                 );
1167
    M[6][6][ZEROP] = 1'b0;
1168
    M[6][6][DOWN45P] = 1'b0;
1169
    M[6][6][DOWN] = (!R[6*8 + 6] && !B[6*8 + 6]) &&
1170
 
1171
                 (
1172
                 (R[5*8 + 5] && B[4*8 + 4]) ||
1173
                 (R[5*8 + 5] && R[4*8 + 4] && B[3*8 + 3]) ||
1174
                 (R[5*8 + 5] && R[4*8 + 4] && R[3*8 + 3] && B[2*8 + 2]) ||
1175
                 (R[5*8 + 5] && R[4*8 + 4] && R[3*8 + 3] && R[2*8 + 2] && B[1*8 + 1]) ||
1176
                 (R[5*8 + 5] && R[4*8 + 4] && R[3*8 + 3] && R[2*8 + 2] && R[1*8 + 1] && B[0*8 + 0])
1177
                 );
1178
    M[6][6][DOWN45M] = 1'b0;
1179
    M[6][6][ZEROM] = 1'b0;
1180
    M[6][6][UP45M] = 1'b0;
1181
    M[6][6][UP] = (!R[6*8 + 6] && !B[6*8 + 6]) &&
1182
 
1183
                 (
1184
                 (R[5*8 + 6] && B[4*8 + 6]) ||
1185
                 (R[5*8 + 6] && R[4*8 + 6] && B[3*8 + 6]) ||
1186
                 (R[5*8 + 6] && R[4*8 + 6] && R[3*8 + 6] && B[2*8 + 6]) ||
1187
                 (R[5*8 + 6] && R[4*8 + 6] && R[3*8 + 6] && R[2*8 + 6] && B[1*8 + 6]) ||
1188
                 (R[5*8 + 6] && R[4*8 + 6] && R[3*8 + 6] && R[2*8 + 6] && R[1*8 + 6] && B[0*8 + 6])
1189
                 );
1190
    M[6][6][UP45P] = (!R[6*8 + 6] && !B[6*8 + 6]) &&
1191
 
1192
                 (
1193
                 (R[6*8 + 5] && B[6*8 + 4]) ||
1194
                 (R[6*8 + 5] && R[6*8 + 4] && B[6*8 + 3]) ||
1195
                 (R[6*8 + 5] && R[6*8 + 4] && R[6*8 + 3] && B[6*8 + 2]) ||
1196
                 (R[6*8 + 5] && R[6*8 + 4] && R[6*8 + 3] && R[6*8 + 2] && B[6*8 + 1]) ||
1197
                 (R[6*8 + 5] && R[6*8 + 4] && R[6*8 + 3] && R[6*8 + 2] && R[6*8 + 1] && B[6*8 + 0])
1198
                 );
1199
    M[6][1][ZEROP] = 1'b0;
1200
    M[6][1][DOWN45P] = 1'b0;
1201
    M[6][1][DOWN] = 1'b0;
1202
    M[6][1][DOWN45M] = (!R[6*8 + 1] && !B[6*8 + 1]) &&
1203
 
1204
                 (
1205
                 (R[5*8 + 2] && B[4*8 + 3]) ||
1206
                 (R[5*8 + 2] && R[4*8 + 3] && B[3*8 + 4]) ||
1207
                 (R[5*8 + 2] && R[4*8 + 3] && R[3*8 + 4] && B[2*8 + 5]) ||
1208
                 (R[5*8 + 2] && R[4*8 + 3] && R[3*8 + 4] && R[2*8 + 5] && B[1*8 + 6]) ||
1209
                 (R[5*8 + 2] && R[4*8 + 3] && R[3*8 + 4] && R[2*8 + 5] && R[1*8 + 6] && B[0*8 + 7])
1210
                 );
1211
    M[6][1][ZEROM] = (!R[6*8 + 1] && !B[6*8 + 1]) &&
1212
 
1213
                 (
1214
                 (R[6*8 + 2] && B[6*8 + 3]) ||
1215
                 (R[6*8 + 2] && R[6*8 + 3] && B[6*8 + 4]) ||
1216
                 (R[6*8 + 2] && R[6*8 + 3] && R[6*8 + 4] && B[6*8 + 5]) ||
1217
                 (R[6*8 + 2] && R[6*8 + 3] && R[6*8 + 4] && R[6*8 + 5] && B[6*8 + 6]) ||
1218
                 (R[6*8 + 2] && R[6*8 + 3] && R[6*8 + 4] && R[6*8 + 5] && R[6*8 + 6] && B[6*8 + 7])
1219
                 );
1220
    M[6][1][UP45M] = 1'b0;
1221
    M[6][1][UP] = (!R[6*8 + 1] && !B[6*8 + 1]) &&
1222
 
1223
                 (
1224
                 (R[5*8 + 1] && B[4*8 + 1]) ||
1225
                 (R[5*8 + 1] && R[4*8 + 1] && B[3*8 + 1]) ||
1226
                 (R[5*8 + 1] && R[4*8 + 1] && R[3*8 + 1] && B[2*8 + 1]) ||
1227
                 (R[5*8 + 1] && R[4*8 + 1] && R[3*8 + 1] && R[2*8 + 1] && B[1*8 + 1]) ||
1228
                 (R[5*8 + 1] && R[4*8 + 1] && R[3*8 + 1] && R[2*8 + 1] && R[1*8 + 1] && B[0*8 + 1])
1229
                 );
1230
    M[6][1][UP45P] = 1'b0;
1231
 
1232
 
1233
// Expresii generate pentru patrate F
1234
    M[1][2][ZEROP] = (!R[1*8 + 2] && !B[1*8 + 2]) &&
1235
 
1236
                 (
1237
                 (R[2*8 + 3] && B[3*8 + 4]) ||
1238
                 (R[2*8 + 3] && R[3*8 + 4] && B[4*8 + 5]) ||
1239
                 (R[2*8 + 3] && R[3*8 + 4] && R[4*8 + 5] && B[5*8 + 6]) ||
1240
                 (R[2*8 + 3] && R[3*8 + 4] && R[4*8 + 5] && R[5*8 + 6] && B[6*8 + 7])
1241
                 );
1242
    M[1][2][DOWN45P] = (!R[1*8 + 2] && !B[1*8 + 2]) &&
1243
 
1244
                 (
1245
                 (R[2*8 + 1] && B[3*8 + 0])
1246
                 );
1247
    M[1][2][DOWN] = 1'b0;
1248
    M[1][2][DOWN45M] = 1'b0;
1249
    M[1][2][ZEROM] = (!R[1*8 + 2] && !B[1*8 + 2]) &&
1250
 
1251
                 (
1252
                 (R[1*8 + 3] && B[1*8 + 4]) ||
1253
                 (R[1*8 + 3] && R[1*8 + 4] && B[1*8 + 5]) ||
1254
                 (R[1*8 + 3] && R[1*8 + 4] && R[1*8 + 5] && B[1*8 + 6]) ||
1255
                 (R[1*8 + 3] && R[1*8 + 4] && R[1*8 + 5] && R[1*8 + 6] && B[1*8 + 7])
1256
                 );
1257
    M[1][2][UP45M] = (!R[1*8 + 2] && !B[1*8 + 2]) &&
1258
 
1259
                 (
1260
                 (R[2*8 + 2] && B[3*8 + 2]) ||
1261
                 (R[2*8 + 2] && R[3*8 + 2] && B[4*8 + 2]) ||
1262
                 (R[2*8 + 2] && R[3*8 + 2] && R[4*8 + 2] && B[5*8 + 2]) ||
1263
                 (R[2*8 + 2] && R[3*8 + 2] && R[4*8 + 2] && R[5*8 + 2] && B[6*8 + 2]) ||
1264
                 (R[2*8 + 2] && R[3*8 + 2] && R[4*8 + 2] && R[5*8 + 2] && R[6*8 + 2] && B[7*8 + 2])
1265
                 );
1266
    M[1][2][UP] = 1'b0;
1267
    M[1][2][UP45P] = (!R[1*8 + 2] && !B[1*8 + 2]) &&
1268
 
1269
                 (
1270
                 (R[1*8 + 1] && B[1*8 + 0])
1271
                 );
1272
    M[1][5][ZEROP] = (!R[1*8 + 5] && !B[1*8 + 5]) &&
1273
 
1274
                 (
1275
                 (R[2*8 + 6] && B[3*8 + 7])
1276
                 );
1277
    M[1][5][DOWN45P] = (!R[1*8 + 5] && !B[1*8 + 5]) &&
1278
 
1279
                 (
1280
                 (R[2*8 + 4] && B[3*8 + 3]) ||
1281
                 (R[2*8 + 4] && R[3*8 + 3] && B[4*8 + 2]) ||
1282
                 (R[2*8 + 4] && R[3*8 + 3] && R[4*8 + 2] && B[5*8 + 1]) ||
1283
                 (R[2*8 + 4] && R[3*8 + 3] && R[4*8 + 2] && R[5*8 + 1] && B[6*8 + 0])
1284
                 );
1285
    M[1][5][DOWN] = 1'b0;
1286
    M[1][5][DOWN45M] = 1'b0;
1287
    M[1][5][ZEROM] = (!R[1*8 + 5] && !B[1*8 + 5]) &&
1288
 
1289
                 (
1290
                 (R[1*8 + 6] && B[1*8 + 7])
1291
                 );
1292
    M[1][5][UP45M] = (!R[1*8 + 5] && !B[1*8 + 5]) &&
1293
 
1294
                 (
1295
                 (R[2*8 + 5] && B[3*8 + 5]) ||
1296
                 (R[2*8 + 5] && R[3*8 + 5] && B[4*8 + 5]) ||
1297
                 (R[2*8 + 5] && R[3*8 + 5] && R[4*8 + 5] && B[5*8 + 5]) ||
1298
                 (R[2*8 + 5] && R[3*8 + 5] && R[4*8 + 5] && R[5*8 + 5] && B[6*8 + 5]) ||
1299
                 (R[2*8 + 5] && R[3*8 + 5] && R[4*8 + 5] && R[5*8 + 5] && R[6*8 + 5] && B[7*8 + 5])
1300
                 );
1301
    M[1][5][UP] = 1'b0;
1302
    M[1][5][UP45P] = (!R[1*8 + 5] && !B[1*8 + 5]) &&
1303
 
1304
                 (
1305
                 (R[1*8 + 4] && B[1*8 + 3]) ||
1306
                 (R[1*8 + 4] && R[1*8 + 3] && B[1*8 + 2]) ||
1307
                 (R[1*8 + 4] && R[1*8 + 3] && R[1*8 + 2] && B[1*8 + 1]) ||
1308
                 (R[1*8 + 4] && R[1*8 + 3] && R[1*8 + 2] && R[1*8 + 1] && B[1*8 + 0])
1309
                 );
1310
    M[2][6][ZEROP] = 1'b0;
1311
    M[2][6][DOWN45P] = (!R[2*8 + 6] && !B[2*8 + 6]) &&
1312
 
1313
                 (
1314
                 (R[3*8 + 5] && B[4*8 + 4]) ||
1315
                 (R[3*8 + 5] && R[4*8 + 4] && B[5*8 + 3]) ||
1316
                 (R[3*8 + 5] && R[4*8 + 4] && R[5*8 + 3] && B[6*8 + 2]) ||
1317
                 (R[3*8 + 5] && R[4*8 + 4] && R[5*8 + 3] && R[6*8 + 2] && B[7*8 + 1])
1318
                 );
1319
    M[2][6][DOWN] = (!R[2*8 + 6] && !B[2*8 + 6]) &&
1320
 
1321
                 (
1322
                 (R[1*8 + 5] && B[0*8 + 4])
1323
                 );
1324
    M[2][6][DOWN45M] = 1'b0;
1325
    M[2][6][ZEROM] = 1'b0;
1326
    M[2][6][UP45M] = (!R[2*8 + 6] && !B[2*8 + 6]) &&
1327
 
1328
                 (
1329
                 (R[3*8 + 6] && B[4*8 + 6]) ||
1330
                 (R[3*8 + 6] && R[4*8 + 6] && B[5*8 + 6]) ||
1331
                 (R[3*8 + 6] && R[4*8 + 6] && R[5*8 + 6] && B[6*8 + 6]) ||
1332
                 (R[3*8 + 6] && R[4*8 + 6] && R[5*8 + 6] && R[6*8 + 6] && B[7*8 + 6])
1333
                 );
1334
    M[2][6][UP] = (!R[2*8 + 6] && !B[2*8 + 6]) &&
1335
 
1336
                 (
1337
                 (R[1*8 + 6] && B[0*8 + 6])
1338
                 );
1339
    M[2][6][UP45P] = (!R[2*8 + 6] && !B[2*8 + 6]) &&
1340
 
1341
                 (
1342
                 (R[2*8 + 5] && B[2*8 + 4]) ||
1343
                 (R[2*8 + 5] && R[2*8 + 4] && B[2*8 + 3]) ||
1344
                 (R[2*8 + 5] && R[2*8 + 4] && R[2*8 + 3] && B[2*8 + 2]) ||
1345
                 (R[2*8 + 5] && R[2*8 + 4] && R[2*8 + 3] && R[2*8 + 2] && B[2*8 + 1]) ||
1346
                 (R[2*8 + 5] && R[2*8 + 4] && R[2*8 + 3] && R[2*8 + 2] && R[2*8 + 1] && B[2*8 + 0])
1347
                 );
1348
    M[5][6][ZEROP] = 1'b0;
1349
    M[5][6][DOWN45P] = (!R[5*8 + 6] && !B[5*8 + 6]) &&
1350
 
1351
                 (
1352
                 (R[6*8 + 5] && B[7*8 + 4])
1353
                 );
1354
    M[5][6][DOWN] = (!R[5*8 + 6] && !B[5*8 + 6]) &&
1355
 
1356
                 (
1357
                 (R[4*8 + 5] && B[3*8 + 4]) ||
1358
                 (R[4*8 + 5] && R[3*8 + 4] && B[2*8 + 3]) ||
1359
                 (R[4*8 + 5] && R[3*8 + 4] && R[2*8 + 3] && B[1*8 + 2]) ||
1360
                 (R[4*8 + 5] && R[3*8 + 4] && R[2*8 + 3] && R[1*8 + 2] && B[0*8 + 1])
1361
                 );
1362
    M[5][6][DOWN45M] = 1'b0;
1363
    M[5][6][ZEROM] = 1'b0;
1364
    M[5][6][UP45M] = (!R[5*8 + 6] && !B[5*8 + 6]) &&
1365
 
1366
                 (
1367
                 (R[6*8 + 6] && B[7*8 + 6])
1368
                 );
1369
    M[5][6][UP] = (!R[5*8 + 6] && !B[5*8 + 6]) &&
1370
 
1371
                 (
1372
                 (R[4*8 + 6] && B[3*8 + 6]) ||
1373
                 (R[4*8 + 6] && R[3*8 + 6] && B[2*8 + 6]) ||
1374
                 (R[4*8 + 6] && R[3*8 + 6] && R[2*8 + 6] && B[1*8 + 6]) ||
1375
                 (R[4*8 + 6] && R[3*8 + 6] && R[2*8 + 6] && R[1*8 + 6] && B[0*8 + 6])
1376
                 );
1377
    M[5][6][UP45P] = (!R[5*8 + 6] && !B[5*8 + 6]) &&
1378
 
1379
                 (
1380
                 (R[5*8 + 5] && B[5*8 + 4]) ||
1381
                 (R[5*8 + 5] && R[5*8 + 4] && B[5*8 + 3]) ||
1382
                 (R[5*8 + 5] && R[5*8 + 4] && R[5*8 + 3] && B[5*8 + 2]) ||
1383
                 (R[5*8 + 5] && R[5*8 + 4] && R[5*8 + 3] && R[5*8 + 2] && B[5*8 + 1]) ||
1384
                 (R[5*8 + 5] && R[5*8 + 4] && R[5*8 + 3] && R[5*8 + 2] && R[5*8 + 1] && B[5*8 + 0])
1385
                 );
1386
    M[6][5][ZEROP] = 1'b0;
1387
    M[6][5][DOWN45P] = 1'b0;
1388
    M[6][5][DOWN] = (!R[6*8 + 5] && !B[6*8 + 5]) &&
1389
 
1390
                 (
1391
                 (R[5*8 + 4] && B[4*8 + 3]) ||
1392
                 (R[5*8 + 4] && R[4*8 + 3] && B[3*8 + 2]) ||
1393
                 (R[5*8 + 4] && R[4*8 + 3] && R[3*8 + 2] && B[2*8 + 1]) ||
1394
                 (R[5*8 + 4] && R[4*8 + 3] && R[3*8 + 2] && R[2*8 + 1] && B[1*8 + 0])
1395
                 );
1396
    M[6][5][DOWN45M] = (!R[6*8 + 5] && !B[6*8 + 5]) &&
1397
 
1398
                 (
1399
                 (R[5*8 + 6] && B[4*8 + 7])
1400
                 );
1401
    M[6][5][ZEROM] = (!R[6*8 + 5] && !B[6*8 + 5]) &&
1402
 
1403
                 (
1404
                 (R[6*8 + 6] && B[6*8 + 7])
1405
                 );
1406
    M[6][5][UP45M] = 1'b0;
1407
    M[6][5][UP] = (!R[6*8 + 5] && !B[6*8 + 5]) &&
1408
 
1409
                 (
1410
                 (R[5*8 + 5] && B[4*8 + 5]) ||
1411
                 (R[5*8 + 5] && R[4*8 + 5] && B[3*8 + 5]) ||
1412
                 (R[5*8 + 5] && R[4*8 + 5] && R[3*8 + 5] && B[2*8 + 5]) ||
1413
                 (R[5*8 + 5] && R[4*8 + 5] && R[3*8 + 5] && R[2*8 + 5] && B[1*8 + 5]) ||
1414
                 (R[5*8 + 5] && R[4*8 + 5] && R[3*8 + 5] && R[2*8 + 5] && R[1*8 + 5] && B[0*8 + 5])
1415
                 );
1416
    M[6][5][UP45P] = (!R[6*8 + 5] && !B[6*8 + 5]) &&
1417
 
1418
                 (
1419
                 (R[6*8 + 4] && B[6*8 + 3]) ||
1420
                 (R[6*8 + 4] && R[6*8 + 3] && B[6*8 + 2]) ||
1421
                 (R[6*8 + 4] && R[6*8 + 3] && R[6*8 + 2] && B[6*8 + 1]) ||
1422
                 (R[6*8 + 4] && R[6*8 + 3] && R[6*8 + 2] && R[6*8 + 1] && B[6*8 + 0])
1423
                 );
1424
    M[6][2][ZEROP] = 1'b0;
1425
    M[6][2][DOWN45P] = 1'b0;
1426
    M[6][2][DOWN] = (!R[6*8 + 2] && !B[6*8 + 2]) &&
1427
 
1428
                 (
1429
                 (R[5*8 + 1] && B[4*8 + 0])
1430
                 );
1431
    M[6][2][DOWN45M] = (!R[6*8 + 2] && !B[6*8 + 2]) &&
1432
 
1433
                 (
1434
                 (R[5*8 + 3] && B[4*8 + 4]) ||
1435
                 (R[5*8 + 3] && R[4*8 + 4] && B[3*8 + 5]) ||
1436
                 (R[5*8 + 3] && R[4*8 + 4] && R[3*8 + 5] && B[2*8 + 6]) ||
1437
                 (R[5*8 + 3] && R[4*8 + 4] && R[3*8 + 5] && R[2*8 + 6] && B[1*8 + 7])
1438
                 );
1439
    M[6][2][ZEROM] = (!R[6*8 + 2] && !B[6*8 + 2]) &&
1440
 
1441
                 (
1442
                 (R[6*8 + 3] && B[6*8 + 4]) ||
1443
                 (R[6*8 + 3] && R[6*8 + 4] && B[6*8 + 5]) ||
1444
                 (R[6*8 + 3] && R[6*8 + 4] && R[6*8 + 5] && B[6*8 + 6]) ||
1445
                 (R[6*8 + 3] && R[6*8 + 4] && R[6*8 + 5] && R[6*8 + 6] && B[6*8 + 7])
1446
                 );
1447
    M[6][2][UP45M] = 1'b0;
1448
    M[6][2][UP] = (!R[6*8 + 2] && !B[6*8 + 2]) &&
1449
 
1450
                 (
1451
                 (R[5*8 + 2] && B[4*8 + 2]) ||
1452
                 (R[5*8 + 2] && R[4*8 + 2] && B[3*8 + 2]) ||
1453
                 (R[5*8 + 2] && R[4*8 + 2] && R[3*8 + 2] && B[2*8 + 2]) ||
1454
                 (R[5*8 + 2] && R[4*8 + 2] && R[3*8 + 2] && R[2*8 + 2] && B[1*8 + 2]) ||
1455
                 (R[5*8 + 2] && R[4*8 + 2] && R[3*8 + 2] && R[2*8 + 2] && R[1*8 + 2] && B[0*8 + 2])
1456
                 );
1457
    M[6][2][UP45P] = (!R[6*8 + 2] && !B[6*8 + 2]) &&
1458
 
1459
                 (
1460
                 (R[6*8 + 1] && B[6*8 + 0])
1461
                 );
1462
    M[5][1][ZEROP] = (!R[5*8 + 1] && !B[5*8 + 1]) &&
1463
 
1464
                 (
1465
                 (R[6*8 + 2] && B[7*8 + 3])
1466
                 );
1467
    M[5][1][DOWN45P] = 1'b0;
1468
    M[5][1][DOWN] = 1'b0;
1469
    M[5][1][DOWN45M] = (!R[5*8 + 1] && !B[5*8 + 1]) &&
1470
 
1471
                 (
1472
                 (R[4*8 + 2] && B[3*8 + 3]) ||
1473
                 (R[4*8 + 2] && R[3*8 + 3] && B[2*8 + 4]) ||
1474
                 (R[4*8 + 2] && R[3*8 + 3] && R[2*8 + 4] && B[1*8 + 5]) ||
1475
                 (R[4*8 + 2] && R[3*8 + 3] && R[2*8 + 4] && R[1*8 + 5] && B[0*8 + 6])
1476
                 );
1477
    M[5][1][ZEROM] = (!R[5*8 + 1] && !B[5*8 + 1]) &&
1478
 
1479
                 (
1480
                 (R[5*8 + 2] && B[5*8 + 3]) ||
1481
                 (R[5*8 + 2] && R[5*8 + 3] && B[5*8 + 4]) ||
1482
                 (R[5*8 + 2] && R[5*8 + 3] && R[5*8 + 4] && B[5*8 + 5]) ||
1483
                 (R[5*8 + 2] && R[5*8 + 3] && R[5*8 + 4] && R[5*8 + 5] && B[5*8 + 6]) ||
1484
                 (R[5*8 + 2] && R[5*8 + 3] && R[5*8 + 4] && R[5*8 + 5] && R[5*8 + 6] && B[5*8 + 7])
1485
                 );
1486
    M[5][1][UP45M] = (!R[5*8 + 1] && !B[5*8 + 1]) &&
1487
 
1488
                 (
1489
                 (R[6*8 + 1] && B[7*8 + 1])
1490
                 );
1491
    M[5][1][UP] = (!R[5*8 + 1] && !B[5*8 + 1]) &&
1492
 
1493
                 (
1494
                 (R[4*8 + 1] && B[3*8 + 1]) ||
1495
                 (R[4*8 + 1] && R[3*8 + 1] && B[2*8 + 1]) ||
1496
                 (R[4*8 + 1] && R[3*8 + 1] && R[2*8 + 1] && B[1*8 + 1]) ||
1497
                 (R[4*8 + 1] && R[3*8 + 1] && R[2*8 + 1] && R[1*8 + 1] && B[0*8 + 1])
1498
                 );
1499
    M[5][1][UP45P] = 1'b0;
1500
    M[2][1][ZEROP] = (!R[2*8 + 1] && !B[2*8 + 1]) &&
1501
 
1502
                 (
1503
                 (R[3*8 + 2] && B[4*8 + 3]) ||
1504
                 (R[3*8 + 2] && R[4*8 + 3] && B[5*8 + 4]) ||
1505
                 (R[3*8 + 2] && R[4*8 + 3] && R[5*8 + 4] && B[6*8 + 5]) ||
1506
                 (R[3*8 + 2] && R[4*8 + 3] && R[5*8 + 4] && R[6*8 + 5] && B[7*8 + 6])
1507
                 );
1508
    M[2][1][DOWN45P] = 1'b0;
1509
    M[2][1][DOWN] = 1'b0;
1510
    M[2][1][DOWN45M] = (!R[2*8 + 1] && !B[2*8 + 1]) &&
1511
 
1512
                 (
1513
                 (R[1*8 + 2] && B[0*8 + 3])
1514
                 );
1515
    M[2][1][ZEROM] = (!R[2*8 + 1] && !B[2*8 + 1]) &&
1516
 
1517
                 (
1518
                 (R[2*8 + 2] && B[2*8 + 3]) ||
1519
                 (R[2*8 + 2] && R[2*8 + 3] && B[2*8 + 4]) ||
1520
                 (R[2*8 + 2] && R[2*8 + 3] && R[2*8 + 4] && B[2*8 + 5]) ||
1521
                 (R[2*8 + 2] && R[2*8 + 3] && R[2*8 + 4] && R[2*8 + 5] && B[2*8 + 6]) ||
1522
                 (R[2*8 + 2] && R[2*8 + 3] && R[2*8 + 4] && R[2*8 + 5] && R[2*8 + 6] && B[2*8 + 7])
1523
                 );
1524
    M[2][1][UP45M] = (!R[2*8 + 1] && !B[2*8 + 1]) &&
1525
 
1526
                 (
1527
                 (R[3*8 + 1] && B[4*8 + 1]) ||
1528
                 (R[3*8 + 1] && R[4*8 + 1] && B[5*8 + 1]) ||
1529
                 (R[3*8 + 1] && R[4*8 + 1] && R[5*8 + 1] && B[6*8 + 1]) ||
1530
                 (R[3*8 + 1] && R[4*8 + 1] && R[5*8 + 1] && R[6*8 + 1] && B[7*8 + 1])
1531
                 );
1532
    M[2][1][UP] = (!R[2*8 + 1] && !B[2*8 + 1]) &&
1533
 
1534
                 (
1535
                 (R[1*8 + 1] && B[0*8 + 1])
1536
                 );
1537
    M[2][1][UP45P] = 1'b0;
1538
 
1539
 
1540
// Expresii generate pentru patrate G
1541
    M[1][3][ZEROP] = (!R[1*8 + 3] && !B[1*8 + 3]) &&
1542
 
1543
                 (
1544
                 (R[2*8 + 4] && B[3*8 + 5]) ||
1545
                 (R[2*8 + 4] && R[3*8 + 5] && B[4*8 + 6]) ||
1546
                 (R[2*8 + 4] && R[3*8 + 5] && R[4*8 + 6] && B[5*8 + 7])
1547
                 );
1548
    M[1][3][DOWN45P] = (!R[1*8 + 3] && !B[1*8 + 3]) &&
1549
 
1550
                 (
1551
                 (R[2*8 + 2] && B[3*8 + 1]) ||
1552
                 (R[2*8 + 2] && R[3*8 + 1] && B[4*8 + 0])
1553
                 );
1554
    M[1][3][DOWN] = 1'b0;
1555
    M[1][3][DOWN45M] = 1'b0;
1556
    M[1][3][ZEROM] = (!R[1*8 + 3] && !B[1*8 + 3]) &&
1557
 
1558
                 (
1559
                 (R[1*8 + 4] && B[1*8 + 5]) ||
1560
                 (R[1*8 + 4] && R[1*8 + 5] && B[1*8 + 6]) ||
1561
                 (R[1*8 + 4] && R[1*8 + 5] && R[1*8 + 6] && B[1*8 + 7])
1562
                 );
1563
    M[1][3][UP45M] = (!R[1*8 + 3] && !B[1*8 + 3]) &&
1564
 
1565
                 (
1566
                 (R[2*8 + 3] && B[3*8 + 3]) ||
1567
                 (R[2*8 + 3] && R[3*8 + 3] && B[4*8 + 3]) ||
1568
                 (R[2*8 + 3] && R[3*8 + 3] && R[4*8 + 3] && B[5*8 + 3]) ||
1569
                 (R[2*8 + 3] && R[3*8 + 3] && R[4*8 + 3] && R[5*8 + 3] && B[6*8 + 3]) ||
1570
                 (R[2*8 + 3] && R[3*8 + 3] && R[4*8 + 3] && R[5*8 + 3] && R[6*8 + 3] && B[7*8 + 3])
1571
                 );
1572
    M[1][3][UP] = 1'b0;
1573
    M[1][3][UP45P] = (!R[1*8 + 3] && !B[1*8 + 3]) &&
1574
 
1575
                 (
1576
                 (R[1*8 + 2] && B[1*8 + 1]) ||
1577
                 (R[1*8 + 2] && R[1*8 + 1] && B[1*8 + 0])
1578
                 );
1579
    M[1][4][ZEROP] = (!R[1*8 + 4] && !B[1*8 + 4]) &&
1580
 
1581
                 (
1582
                 (R[2*8 + 5] && B[3*8 + 6]) ||
1583
                 (R[2*8 + 5] && R[3*8 + 6] && B[4*8 + 7])
1584
                 );
1585
    M[1][4][DOWN45P] = (!R[1*8 + 4] && !B[1*8 + 4]) &&
1586
 
1587
                 (
1588
                 (R[2*8 + 3] && B[3*8 + 2]) ||
1589
                 (R[2*8 + 3] && R[3*8 + 2] && B[4*8 + 1]) ||
1590
                 (R[2*8 + 3] && R[3*8 + 2] && R[4*8 + 1] && B[5*8 + 0])
1591
                 );
1592
    M[1][4][DOWN] = 1'b0;
1593
    M[1][4][DOWN45M] = 1'b0;
1594
    M[1][4][ZEROM] = (!R[1*8 + 4] && !B[1*8 + 4]) &&
1595
 
1596
                 (
1597
                 (R[1*8 + 5] && B[1*8 + 6]) ||
1598
                 (R[1*8 + 5] && R[1*8 + 6] && B[1*8 + 7])
1599
                 );
1600
    M[1][4][UP45M] = (!R[1*8 + 4] && !B[1*8 + 4]) &&
1601
 
1602
                 (
1603
                 (R[2*8 + 4] && B[3*8 + 4]) ||
1604
                 (R[2*8 + 4] && R[3*8 + 4] && B[4*8 + 4]) ||
1605
                 (R[2*8 + 4] && R[3*8 + 4] && R[4*8 + 4] && B[5*8 + 4]) ||
1606
                 (R[2*8 + 4] && R[3*8 + 4] && R[4*8 + 4] && R[5*8 + 4] && B[6*8 + 4]) ||
1607
                 (R[2*8 + 4] && R[3*8 + 4] && R[4*8 + 4] && R[5*8 + 4] && R[6*8 + 4] && B[7*8 + 4])
1608
                 );
1609
    M[1][4][UP] = 1'b0;
1610
    M[1][4][UP45P] = (!R[1*8 + 4] && !B[1*8 + 4]) &&
1611
 
1612
                 (
1613
                 (R[1*8 + 3] && B[1*8 + 2]) ||
1614
                 (R[1*8 + 3] && R[1*8 + 2] && B[1*8 + 1]) ||
1615
                 (R[1*8 + 3] && R[1*8 + 2] && R[1*8 + 1] && B[1*8 + 0])
1616
                 );
1617
    M[3][6][ZEROP] = 1'b0;
1618
    M[3][6][DOWN45P] = (!R[3*8 + 6] && !B[3*8 + 6]) &&
1619
 
1620
                 (
1621
                 (R[4*8 + 5] && B[5*8 + 4]) ||
1622
                 (R[4*8 + 5] && R[5*8 + 4] && B[6*8 + 3]) ||
1623
                 (R[4*8 + 5] && R[5*8 + 4] && R[6*8 + 3] && B[7*8 + 2])
1624
                 );
1625
    M[3][6][DOWN] = (!R[3*8 + 6] && !B[3*8 + 6]) &&
1626
 
1627
                 (
1628
                 (R[2*8 + 5] && B[1*8 + 4]) ||
1629
                 (R[2*8 + 5] && R[1*8 + 4] && B[0*8 + 3])
1630
                 );
1631
    M[3][6][DOWN45M] = 1'b0;
1632
    M[3][6][ZEROM] = 1'b0;
1633
    M[3][6][UP45M] = (!R[3*8 + 6] && !B[3*8 + 6]) &&
1634
 
1635
                 (
1636
                 (R[4*8 + 6] && B[5*8 + 6]) ||
1637
                 (R[4*8 + 6] && R[5*8 + 6] && B[6*8 + 6]) ||
1638
                 (R[4*8 + 6] && R[5*8 + 6] && R[6*8 + 6] && B[7*8 + 6])
1639
                 );
1640
    M[3][6][UP] = (!R[3*8 + 6] && !B[3*8 + 6]) &&
1641
 
1642
                 (
1643
                 (R[2*8 + 6] && B[1*8 + 6]) ||
1644
                 (R[2*8 + 6] && R[1*8 + 6] && B[0*8 + 6])
1645
                 );
1646
    M[3][6][UP45P] = (!R[3*8 + 6] && !B[3*8 + 6]) &&
1647
 
1648
                 (
1649
                 (R[3*8 + 5] && B[3*8 + 4]) ||
1650
                 (R[3*8 + 5] && R[3*8 + 4] && B[3*8 + 3]) ||
1651
                 (R[3*8 + 5] && R[3*8 + 4] && R[3*8 + 3] && B[3*8 + 2]) ||
1652
                 (R[3*8 + 5] && R[3*8 + 4] && R[3*8 + 3] && R[3*8 + 2] && B[3*8 + 1]) ||
1653
                 (R[3*8 + 5] && R[3*8 + 4] && R[3*8 + 3] && R[3*8 + 2] && R[3*8 + 1] && B[3*8 + 0])
1654
                 );
1655
    M[4][6][ZEROP] = 1'b0;
1656
    M[4][6][DOWN45P] = (!R[4*8 + 6] && !B[4*8 + 6]) &&
1657
 
1658
                 (
1659
                 (R[5*8 + 5] && B[6*8 + 4]) ||
1660
                 (R[5*8 + 5] && R[6*8 + 4] && B[7*8 + 3])
1661
                 );
1662
    M[4][6][DOWN] = (!R[4*8 + 6] && !B[4*8 + 6]) &&
1663
 
1664
                 (
1665
                 (R[3*8 + 5] && B[2*8 + 4]) ||
1666
                 (R[3*8 + 5] && R[2*8 + 4] && B[1*8 + 3]) ||
1667
                 (R[3*8 + 5] && R[2*8 + 4] && R[1*8 + 3] && B[0*8 + 2])
1668
                 );
1669
    M[4][6][DOWN45M] = 1'b0;
1670
    M[4][6][ZEROM] = 1'b0;
1671
    M[4][6][UP45M] = (!R[4*8 + 6] && !B[4*8 + 6]) &&
1672
 
1673
                 (
1674
                 (R[5*8 + 6] && B[6*8 + 6]) ||
1675
                 (R[5*8 + 6] && R[6*8 + 6] && B[7*8 + 6])
1676
                 );
1677
    M[4][6][UP] = (!R[4*8 + 6] && !B[4*8 + 6]) &&
1678
 
1679
                 (
1680
                 (R[3*8 + 6] && B[2*8 + 6]) ||
1681
                 (R[3*8 + 6] && R[2*8 + 6] && B[1*8 + 6]) ||
1682
                 (R[3*8 + 6] && R[2*8 + 6] && R[1*8 + 6] && B[0*8 + 6])
1683
                 );
1684
    M[4][6][UP45P] = (!R[4*8 + 6] && !B[4*8 + 6]) &&
1685
 
1686
                 (
1687
                 (R[4*8 + 5] && B[4*8 + 4]) ||
1688
                 (R[4*8 + 5] && R[4*8 + 4] && B[4*8 + 3]) ||
1689
                 (R[4*8 + 5] && R[4*8 + 4] && R[4*8 + 3] && B[4*8 + 2]) ||
1690
                 (R[4*8 + 5] && R[4*8 + 4] && R[4*8 + 3] && R[4*8 + 2] && B[4*8 + 1]) ||
1691
                 (R[4*8 + 5] && R[4*8 + 4] && R[4*8 + 3] && R[4*8 + 2] && R[4*8 + 1] && B[4*8 + 0])
1692
                 );
1693
    M[6][4][ZEROP] = 1'b0;
1694
    M[6][4][DOWN45P] = 1'b0;
1695
    M[6][4][DOWN] = (!R[6*8 + 4] && !B[6*8 + 4]) &&
1696
 
1697
                 (
1698
                 (R[5*8 + 3] && B[4*8 + 2]) ||
1699
                 (R[5*8 + 3] && R[4*8 + 2] && B[3*8 + 1]) ||
1700
                 (R[5*8 + 3] && R[4*8 + 2] && R[3*8 + 1] && B[2*8 + 0])
1701
                 );
1702
    M[6][4][DOWN45M] = (!R[6*8 + 4] && !B[6*8 + 4]) &&
1703
 
1704
                 (
1705
                 (R[5*8 + 5] && B[4*8 + 6]) ||
1706
                 (R[5*8 + 5] && R[4*8 + 6] && B[3*8 + 7])
1707
                 );
1708
    M[6][4][ZEROM] = (!R[6*8 + 4] && !B[6*8 + 4]) &&
1709
 
1710
                 (
1711
                 (R[6*8 + 5] && B[6*8 + 6]) ||
1712
                 (R[6*8 + 5] && R[6*8 + 6] && B[6*8 + 7])
1713
                 );
1714
    M[6][4][UP45M] = 1'b0;
1715
    M[6][4][UP] = (!R[6*8 + 4] && !B[6*8 + 4]) &&
1716
 
1717
                 (
1718
                 (R[5*8 + 4] && B[4*8 + 4]) ||
1719
                 (R[5*8 + 4] && R[4*8 + 4] && B[3*8 + 4]) ||
1720
                 (R[5*8 + 4] && R[4*8 + 4] && R[3*8 + 4] && B[2*8 + 4]) ||
1721
                 (R[5*8 + 4] && R[4*8 + 4] && R[3*8 + 4] && R[2*8 + 4] && B[1*8 + 4]) ||
1722
                 (R[5*8 + 4] && R[4*8 + 4] && R[3*8 + 4] && R[2*8 + 4] && R[1*8 + 4] && B[0*8 + 4])
1723
                 );
1724
    M[6][4][UP45P] = (!R[6*8 + 4] && !B[6*8 + 4]) &&
1725
 
1726
                 (
1727
                 (R[6*8 + 3] && B[6*8 + 2]) ||
1728
                 (R[6*8 + 3] && R[6*8 + 2] && B[6*8 + 1]) ||
1729
                 (R[6*8 + 3] && R[6*8 + 2] && R[6*8 + 1] && B[6*8 + 0])
1730
                 );
1731
    M[6][3][ZEROP] = 1'b0;
1732
    M[6][3][DOWN45P] = 1'b0;
1733
    M[6][3][DOWN] = (!R[6*8 + 3] && !B[6*8 + 3]) &&
1734
 
1735
                 (
1736
                 (R[5*8 + 2] && B[4*8 + 1]) ||
1737
                 (R[5*8 + 2] && R[4*8 + 1] && B[3*8 + 0])
1738
                 );
1739
    M[6][3][DOWN45M] = (!R[6*8 + 3] && !B[6*8 + 3]) &&
1740
 
1741
                 (
1742
                 (R[5*8 + 4] && B[4*8 + 5]) ||
1743
                 (R[5*8 + 4] && R[4*8 + 5] && B[3*8 + 6]) ||
1744
                 (R[5*8 + 4] && R[4*8 + 5] && R[3*8 + 6] && B[2*8 + 7])
1745
                 );
1746
    M[6][3][ZEROM] = (!R[6*8 + 3] && !B[6*8 + 3]) &&
1747
 
1748
                 (
1749
                 (R[6*8 + 4] && B[6*8 + 5]) ||
1750
                 (R[6*8 + 4] && R[6*8 + 5] && B[6*8 + 6]) ||
1751
                 (R[6*8 + 4] && R[6*8 + 5] && R[6*8 + 6] && B[6*8 + 7])
1752
                 );
1753
    M[6][3][UP45M] = 1'b0;
1754
    M[6][3][UP] = (!R[6*8 + 3] && !B[6*8 + 3]) &&
1755
 
1756
                 (
1757
                 (R[5*8 + 3] && B[4*8 + 3]) ||
1758
                 (R[5*8 + 3] && R[4*8 + 3] && B[3*8 + 3]) ||
1759
                 (R[5*8 + 3] && R[4*8 + 3] && R[3*8 + 3] && B[2*8 + 3]) ||
1760
                 (R[5*8 + 3] && R[4*8 + 3] && R[3*8 + 3] && R[2*8 + 3] && B[1*8 + 3]) ||
1761
                 (R[5*8 + 3] && R[4*8 + 3] && R[3*8 + 3] && R[2*8 + 3] && R[1*8 + 3] && B[0*8 + 3])
1762
                 );
1763
    M[6][3][UP45P] = (!R[6*8 + 3] && !B[6*8 + 3]) &&
1764
 
1765
                 (
1766
                 (R[6*8 + 2] && B[6*8 + 1]) ||
1767
                 (R[6*8 + 2] && R[6*8 + 1] && B[6*8 + 0])
1768
                 );
1769
    M[4][1][ZEROP] = (!R[4*8 + 1] && !B[4*8 + 1]) &&
1770
 
1771
                 (
1772
                 (R[5*8 + 2] && B[6*8 + 3]) ||
1773
                 (R[5*8 + 2] && R[6*8 + 3] && B[7*8 + 4])
1774
                 );
1775
    M[4][1][DOWN45P] = 1'b0;
1776
    M[4][1][DOWN] = 1'b0;
1777
    M[4][1][DOWN45M] = (!R[4*8 + 1] && !B[4*8 + 1]) &&
1778
 
1779
                 (
1780
                 (R[3*8 + 2] && B[2*8 + 3]) ||
1781
                 (R[3*8 + 2] && R[2*8 + 3] && B[1*8 + 4]) ||
1782
                 (R[3*8 + 2] && R[2*8 + 3] && R[1*8 + 4] && B[0*8 + 5])
1783
                 );
1784
    M[4][1][ZEROM] = (!R[4*8 + 1] && !B[4*8 + 1]) &&
1785
 
1786
                 (
1787
                 (R[4*8 + 2] && B[4*8 + 3]) ||
1788
                 (R[4*8 + 2] && R[4*8 + 3] && B[4*8 + 4]) ||
1789
                 (R[4*8 + 2] && R[4*8 + 3] && R[4*8 + 4] && B[4*8 + 5]) ||
1790
                 (R[4*8 + 2] && R[4*8 + 3] && R[4*8 + 4] && R[4*8 + 5] && B[4*8 + 6]) ||
1791
                 (R[4*8 + 2] && R[4*8 + 3] && R[4*8 + 4] && R[4*8 + 5] && R[4*8 + 6] && B[4*8 + 7])
1792
                 );
1793
    M[4][1][UP45M] = (!R[4*8 + 1] && !B[4*8 + 1]) &&
1794
 
1795
                 (
1796
                 (R[5*8 + 1] && B[6*8 + 1]) ||
1797
                 (R[5*8 + 1] && R[6*8 + 1] && B[7*8 + 1])
1798
                 );
1799
    M[4][1][UP] = (!R[4*8 + 1] && !B[4*8 + 1]) &&
1800
 
1801
                 (
1802
                 (R[3*8 + 1] && B[2*8 + 1]) ||
1803
                 (R[3*8 + 1] && R[2*8 + 1] && B[1*8 + 1]) ||
1804
                 (R[3*8 + 1] && R[2*8 + 1] && R[1*8 + 1] && B[0*8 + 1])
1805
                 );
1806
    M[4][1][UP45P] = 1'b0;
1807
    M[3][1][ZEROP] = (!R[3*8 + 1] && !B[3*8 + 1]) &&
1808
 
1809
                 (
1810
                 (R[4*8 + 2] && B[5*8 + 3]) ||
1811
                 (R[4*8 + 2] && R[5*8 + 3] && B[6*8 + 4]) ||
1812
                 (R[4*8 + 2] && R[5*8 + 3] && R[6*8 + 4] && B[7*8 + 5])
1813
                 );
1814
    M[3][1][DOWN45P] = 1'b0;
1815
    M[3][1][DOWN] = 1'b0;
1816
    M[3][1][DOWN45M] = (!R[3*8 + 1] && !B[3*8 + 1]) &&
1817
 
1818
                 (
1819
                 (R[2*8 + 2] && B[1*8 + 3]) ||
1820
                 (R[2*8 + 2] && R[1*8 + 3] && B[0*8 + 4])
1821
                 );
1822
    M[3][1][ZEROM] = (!R[3*8 + 1] && !B[3*8 + 1]) &&
1823
 
1824
                 (
1825
                 (R[3*8 + 2] && B[3*8 + 3]) ||
1826
                 (R[3*8 + 2] && R[3*8 + 3] && B[3*8 + 4]) ||
1827
                 (R[3*8 + 2] && R[3*8 + 3] && R[3*8 + 4] && B[3*8 + 5]) ||
1828
                 (R[3*8 + 2] && R[3*8 + 3] && R[3*8 + 4] && R[3*8 + 5] && B[3*8 + 6]) ||
1829
                 (R[3*8 + 2] && R[3*8 + 3] && R[3*8 + 4] && R[3*8 + 5] && R[3*8 + 6] && B[3*8 + 7])
1830
                 );
1831
    M[3][1][UP45M] = (!R[3*8 + 1] && !B[3*8 + 1]) &&
1832
 
1833
                 (
1834
                 (R[4*8 + 1] && B[5*8 + 1]) ||
1835
                 (R[4*8 + 1] && R[5*8 + 1] && B[6*8 + 1]) ||
1836
                 (R[4*8 + 1] && R[5*8 + 1] && R[6*8 + 1] && B[7*8 + 1])
1837
                 );
1838
    M[3][1][UP] = (!R[3*8 + 1] && !B[3*8 + 1]) &&
1839
 
1840
                 (
1841
                 (R[2*8 + 1] && B[1*8 + 1]) ||
1842
                 (R[2*8 + 1] && R[1*8 + 1] && B[0*8 + 1])
1843
                 );
1844
    M[3][1][UP45P] = 1'b0;
1845
 
1846
 
1847
// Expresii generate pentru patrate H
1848
    M[2][2][ZEROP] = (!R[2*8 + 2] && !B[2*8 + 2]) &&
1849
 
1850
                 (
1851
                 (R[3*8 + 3] && B[4*8 + 4]) ||
1852
                 (R[3*8 + 3] && R[4*8 + 4] && B[5*8 + 5]) ||
1853
                 (R[3*8 + 3] && R[4*8 + 4] && R[5*8 + 5] && B[6*8 + 6]) ||
1854
                 (R[3*8 + 3] && R[4*8 + 4] && R[5*8 + 5] && R[6*8 + 6] && B[7*8 + 7])
1855
                 );
1856
    M[2][2][DOWN45P] = (!R[2*8 + 2] && !B[2*8 + 2]) &&
1857
 
1858
                 (
1859
                 (R[3*8 + 1] && B[4*8 + 0])
1860
                 );
1861
    M[2][2][DOWN] = (!R[2*8 + 2] && !B[2*8 + 2]) &&
1862
 
1863
                 (
1864
                 (R[1*8 + 1] && B[0*8 + 0])
1865
                 );
1866
    M[2][2][DOWN45M] = (!R[2*8 + 2] && !B[2*8 + 2]) &&
1867
 
1868
                 (
1869
                 (R[1*8 + 3] && B[0*8 + 4])
1870
                 );
1871
    M[2][2][ZEROM] = (!R[2*8 + 2] && !B[2*8 + 2]) &&
1872
 
1873
                 (
1874
                 (R[2*8 + 3] && B[2*8 + 4]) ||
1875
                 (R[2*8 + 3] && R[2*8 + 4] && B[2*8 + 5]) ||
1876
                 (R[2*8 + 3] && R[2*8 + 4] && R[2*8 + 5] && B[2*8 + 6]) ||
1877
                 (R[2*8 + 3] && R[2*8 + 4] && R[2*8 + 5] && R[2*8 + 6] && B[2*8 + 7])
1878
                 );
1879
    M[2][2][UP45M] = (!R[2*8 + 2] && !B[2*8 + 2]) &&
1880
 
1881
                 (
1882
                 (R[3*8 + 2] && B[4*8 + 2]) ||
1883
                 (R[3*8 + 2] && R[4*8 + 2] && B[5*8 + 2]) ||
1884
                 (R[3*8 + 2] && R[4*8 + 2] && R[5*8 + 2] && B[6*8 + 2]) ||
1885
                 (R[3*8 + 2] && R[4*8 + 2] && R[5*8 + 2] && R[6*8 + 2] && B[7*8 + 2])
1886
                 );
1887
    M[2][2][UP] = (!R[2*8 + 2] && !B[2*8 + 2]) &&
1888
 
1889
                 (
1890
                 (R[1*8 + 2] && B[0*8 + 2])
1891
                 );
1892
    M[2][2][UP45P] = (!R[2*8 + 2] && !B[2*8 + 2]) &&
1893
 
1894
                 (
1895
                 (R[2*8 + 1] && B[2*8 + 0])
1896
                 );
1897
    M[2][5][ZEROP] = (!R[2*8 + 5] && !B[2*8 + 5]) &&
1898
 
1899
                 (
1900
                 (R[3*8 + 6] && B[4*8 + 7])
1901
                 );
1902
    M[2][5][DOWN45P] = (!R[2*8 + 5] && !B[2*8 + 5]) &&
1903
 
1904
                 (
1905
                 (R[3*8 + 4] && B[4*8 + 3]) ||
1906
                 (R[3*8 + 4] && R[4*8 + 3] && B[5*8 + 2]) ||
1907
                 (R[3*8 + 4] && R[4*8 + 3] && R[5*8 + 2] && B[6*8 + 1]) ||
1908
                 (R[3*8 + 4] && R[4*8 + 3] && R[5*8 + 2] && R[6*8 + 1] && B[7*8 + 0])
1909
                 );
1910
    M[2][5][DOWN] = (!R[2*8 + 5] && !B[2*8 + 5]) &&
1911
 
1912
                 (
1913
                 (R[1*8 + 4] && B[0*8 + 3])
1914
                 );
1915
    M[2][5][DOWN45M] = (!R[2*8 + 5] && !B[2*8 + 5]) &&
1916
 
1917
                 (
1918
                 (R[1*8 + 6] && B[0*8 + 7])
1919
                 );
1920
    M[2][5][ZEROM] = (!R[2*8 + 5] && !B[2*8 + 5]) &&
1921
 
1922
                 (
1923
                 (R[2*8 + 6] && B[2*8 + 7])
1924
                 );
1925
    M[2][5][UP45M] = (!R[2*8 + 5] && !B[2*8 + 5]) &&
1926
 
1927
                 (
1928
                 (R[3*8 + 5] && B[4*8 + 5]) ||
1929
                 (R[3*8 + 5] && R[4*8 + 5] && B[5*8 + 5]) ||
1930
                 (R[3*8 + 5] && R[4*8 + 5] && R[5*8 + 5] && B[6*8 + 5]) ||
1931
                 (R[3*8 + 5] && R[4*8 + 5] && R[5*8 + 5] && R[6*8 + 5] && B[7*8 + 5])
1932
                 );
1933
    M[2][5][UP] = (!R[2*8 + 5] && !B[2*8 + 5]) &&
1934
 
1935
                 (
1936
                 (R[1*8 + 5] && B[0*8 + 5])
1937
                 );
1938
    M[2][5][UP45P] = (!R[2*8 + 5] && !B[2*8 + 5]) &&
1939
 
1940
                 (
1941
                 (R[2*8 + 4] && B[2*8 + 3]) ||
1942
                 (R[2*8 + 4] && R[2*8 + 3] && B[2*8 + 2]) ||
1943
                 (R[2*8 + 4] && R[2*8 + 3] && R[2*8 + 2] && B[2*8 + 1]) ||
1944
                 (R[2*8 + 4] && R[2*8 + 3] && R[2*8 + 2] && R[2*8 + 1] && B[2*8 + 0])
1945
                 );
1946
    M[5][5][ZEROP] = (!R[5*8 + 5] && !B[5*8 + 5]) &&
1947
 
1948
                 (
1949
                 (R[6*8 + 6] && B[7*8 + 7])
1950
                 );
1951
    M[5][5][DOWN45P] = (!R[5*8 + 5] && !B[5*8 + 5]) &&
1952
 
1953
                 (
1954
                 (R[6*8 + 4] && B[7*8 + 3])
1955
                 );
1956
    M[5][5][DOWN] = (!R[5*8 + 5] && !B[5*8 + 5]) &&
1957
 
1958
                 (
1959
                 (R[4*8 + 4] && B[3*8 + 3]) ||
1960
                 (R[4*8 + 4] && R[3*8 + 3] && B[2*8 + 2]) ||
1961
                 (R[4*8 + 4] && R[3*8 + 3] && R[2*8 + 2] && B[1*8 + 1]) ||
1962
                 (R[4*8 + 4] && R[3*8 + 3] && R[2*8 + 2] && R[1*8 + 1] && B[0*8 + 0])
1963
                 );
1964
    M[5][5][DOWN45M] = (!R[5*8 + 5] && !B[5*8 + 5]) &&
1965
 
1966
                 (
1967
                 (R[4*8 + 6] && B[3*8 + 7])
1968
                 );
1969
    M[5][5][ZEROM] = (!R[5*8 + 5] && !B[5*8 + 5]) &&
1970
 
1971
                 (
1972
                 (R[5*8 + 6] && B[5*8 + 7])
1973
                 );
1974
    M[5][5][UP45M] = (!R[5*8 + 5] && !B[5*8 + 5]) &&
1975
 
1976
                 (
1977
                 (R[6*8 + 5] && B[7*8 + 5])
1978
                 );
1979
    M[5][5][UP] = (!R[5*8 + 5] && !B[5*8 + 5]) &&
1980
 
1981
                 (
1982
                 (R[4*8 + 5] && B[3*8 + 5]) ||
1983
                 (R[4*8 + 5] && R[3*8 + 5] && B[2*8 + 5]) ||
1984
                 (R[4*8 + 5] && R[3*8 + 5] && R[2*8 + 5] && B[1*8 + 5]) ||
1985
                 (R[4*8 + 5] && R[3*8 + 5] && R[2*8 + 5] && R[1*8 + 5] && B[0*8 + 5])
1986
                 );
1987
    M[5][5][UP45P] = (!R[5*8 + 5] && !B[5*8 + 5]) &&
1988
 
1989
                 (
1990
                 (R[5*8 + 4] && B[5*8 + 3]) ||
1991
                 (R[5*8 + 4] && R[5*8 + 3] && B[5*8 + 2]) ||
1992
                 (R[5*8 + 4] && R[5*8 + 3] && R[5*8 + 2] && B[5*8 + 1]) ||
1993
                 (R[5*8 + 4] && R[5*8 + 3] && R[5*8 + 2] && R[5*8 + 1] && B[5*8 + 0])
1994
                 );
1995
    M[5][2][ZEROP] = (!R[5*8 + 2] && !B[5*8 + 2]) &&
1996
 
1997
                 (
1998
                 (R[6*8 + 3] && B[7*8 + 4])
1999
                 );
2000
    M[5][2][DOWN45P] = (!R[5*8 + 2] && !B[5*8 + 2]) &&
2001
 
2002
                 (
2003
                 (R[6*8 + 1] && B[7*8 + 0])
2004
                 );
2005
    M[5][2][DOWN] = (!R[5*8 + 2] && !B[5*8 + 2]) &&
2006
 
2007
                 (
2008
                 (R[4*8 + 1] && B[3*8 + 0])
2009
                 );
2010
    M[5][2][DOWN45M] = (!R[5*8 + 2] && !B[5*8 + 2]) &&
2011
 
2012
                 (
2013
                 (R[4*8 + 3] && B[3*8 + 4]) ||
2014
                 (R[4*8 + 3] && R[3*8 + 4] && B[2*8 + 5]) ||
2015
                 (R[4*8 + 3] && R[3*8 + 4] && R[2*8 + 5] && B[1*8 + 6]) ||
2016
                 (R[4*8 + 3] && R[3*8 + 4] && R[2*8 + 5] && R[1*8 + 6] && B[0*8 + 7])
2017
                 );
2018
    M[5][2][ZEROM] = (!R[5*8 + 2] && !B[5*8 + 2]) &&
2019
 
2020
                 (
2021
                 (R[5*8 + 3] && B[5*8 + 4]) ||
2022
                 (R[5*8 + 3] && R[5*8 + 4] && B[5*8 + 5]) ||
2023
                 (R[5*8 + 3] && R[5*8 + 4] && R[5*8 + 5] && B[5*8 + 6]) ||
2024
                 (R[5*8 + 3] && R[5*8 + 4] && R[5*8 + 5] && R[5*8 + 6] && B[5*8 + 7])
2025
                 );
2026
    M[5][2][UP45M] = (!R[5*8 + 2] && !B[5*8 + 2]) &&
2027
 
2028
                 (
2029
                 (R[6*8 + 2] && B[7*8 + 2])
2030
                 );
2031
    M[5][2][UP] = (!R[5*8 + 2] && !B[5*8 + 2]) &&
2032
 
2033
                 (
2034
                 (R[4*8 + 2] && B[3*8 + 2]) ||
2035
                 (R[4*8 + 2] && R[3*8 + 2] && B[2*8 + 2]) ||
2036
                 (R[4*8 + 2] && R[3*8 + 2] && R[2*8 + 2] && B[1*8 + 2]) ||
2037
                 (R[4*8 + 2] && R[3*8 + 2] && R[2*8 + 2] && R[1*8 + 2] && B[0*8 + 2])
2038
                 );
2039
    M[5][2][UP45P] = (!R[5*8 + 2] && !B[5*8 + 2]) &&
2040
 
2041
                 (
2042
                 (R[5*8 + 1] && B[5*8 + 0])
2043
                 );
2044
 
2045
 
2046
// Expresii generate pentru patrate I
2047
    M[2][3][ZEROP] = (!R[2*8 + 3] && !B[2*8 + 3]) &&
2048
 
2049
                 (
2050
                 (R[3*8 + 4] && B[4*8 + 5]) ||
2051
                 (R[3*8 + 4] && R[4*8 + 5] && B[5*8 + 6]) ||
2052
                 (R[3*8 + 4] && R[4*8 + 5] && R[5*8 + 6] && B[6*8 + 7])
2053
                 );
2054
    M[2][3][DOWN45P] = (!R[2*8 + 3] && !B[2*8 + 3]) &&
2055
 
2056
                 (
2057
                 (R[3*8 + 2] && B[4*8 + 1]) ||
2058
                 (R[3*8 + 2] && R[4*8 + 1] && B[5*8 + 0])
2059
                 );
2060
    M[2][3][DOWN] = (!R[2*8 + 3] && !B[2*8 + 3]) &&
2061
 
2062
                 (
2063
                 (R[1*8 + 2] && B[0*8 + 1])
2064
                 );
2065
    M[2][3][DOWN45M] = (!R[2*8 + 3] && !B[2*8 + 3]) &&
2066
 
2067
                 (
2068
                 (R[1*8 + 4] && B[0*8 + 5])
2069
                 );
2070
    M[2][3][ZEROM] = (!R[2*8 + 3] && !B[2*8 + 3]) &&
2071
 
2072
                 (
2073
                 (R[2*8 + 4] && B[2*8 + 5]) ||
2074
                 (R[2*8 + 4] && R[2*8 + 5] && B[2*8 + 6]) ||
2075
                 (R[2*8 + 4] && R[2*8 + 5] && R[2*8 + 6] && B[2*8 + 7])
2076
                 );
2077
    M[2][3][UP45M] = (!R[2*8 + 3] && !B[2*8 + 3]) &&
2078
 
2079
                 (
2080
                 (R[3*8 + 3] && B[4*8 + 3]) ||
2081
                 (R[3*8 + 3] && R[4*8 + 3] && B[5*8 + 3]) ||
2082
                 (R[3*8 + 3] && R[4*8 + 3] && R[5*8 + 3] && B[6*8 + 3]) ||
2083
                 (R[3*8 + 3] && R[4*8 + 3] && R[5*8 + 3] && R[6*8 + 3] && B[7*8 + 3])
2084
                 );
2085
    M[2][3][UP] = (!R[2*8 + 3] && !B[2*8 + 3]) &&
2086
 
2087
                 (
2088
                 (R[1*8 + 3] && B[0*8 + 3])
2089
                 );
2090
    M[2][3][UP45P] = (!R[2*8 + 3] && !B[2*8 + 3]) &&
2091
 
2092
                 (
2093
                 (R[2*8 + 2] && B[2*8 + 1]) ||
2094
                 (R[2*8 + 2] && R[2*8 + 1] && B[2*8 + 0])
2095
                 );
2096
    M[2][4][ZEROP] = (!R[2*8 + 4] && !B[2*8 + 4]) &&
2097
 
2098
                 (
2099
                 (R[3*8 + 5] && B[4*8 + 6]) ||
2100
                 (R[3*8 + 5] && R[4*8 + 6] && B[5*8 + 7])
2101
                 );
2102
    M[2][4][DOWN45P] = (!R[2*8 + 4] && !B[2*8 + 4]) &&
2103
 
2104
                 (
2105
                 (R[3*8 + 3] && B[4*8 + 2]) ||
2106
                 (R[3*8 + 3] && R[4*8 + 2] && B[5*8 + 1]) ||
2107
                 (R[3*8 + 3] && R[4*8 + 2] && R[5*8 + 1] && B[6*8 + 0])
2108
                 );
2109
    M[2][4][DOWN] = (!R[2*8 + 4] && !B[2*8 + 4]) &&
2110
 
2111
                 (
2112
                 (R[1*8 + 3] && B[0*8 + 2])
2113
                 );
2114
    M[2][4][DOWN45M] = (!R[2*8 + 4] && !B[2*8 + 4]) &&
2115
 
2116
                 (
2117
                 (R[1*8 + 5] && B[0*8 + 6])
2118
                 );
2119
    M[2][4][ZEROM] = (!R[2*8 + 4] && !B[2*8 + 4]) &&
2120
 
2121
                 (
2122
                 (R[2*8 + 5] && B[2*8 + 6]) ||
2123
                 (R[2*8 + 5] && R[2*8 + 6] && B[2*8 + 7])
2124
                 );
2125
    M[2][4][UP45M] = (!R[2*8 + 4] && !B[2*8 + 4]) &&
2126
 
2127
                 (
2128
                 (R[3*8 + 4] && B[4*8 + 4]) ||
2129
                 (R[3*8 + 4] && R[4*8 + 4] && B[5*8 + 4]) ||
2130
                 (R[3*8 + 4] && R[4*8 + 4] && R[5*8 + 4] && B[6*8 + 4]) ||
2131
                 (R[3*8 + 4] && R[4*8 + 4] && R[5*8 + 4] && R[6*8 + 4] && B[7*8 + 4])
2132
                 );
2133
    M[2][4][UP] = (!R[2*8 + 4] && !B[2*8 + 4]) &&
2134
 
2135
                 (
2136
                 (R[1*8 + 4] && B[0*8 + 4])
2137
                 );
2138
    M[2][4][UP45P] = (!R[2*8 + 4] && !B[2*8 + 4]) &&
2139
 
2140
                 (
2141
                 (R[2*8 + 3] && B[2*8 + 2]) ||
2142
                 (R[2*8 + 3] && R[2*8 + 2] && B[2*8 + 1]) ||
2143
                 (R[2*8 + 3] && R[2*8 + 2] && R[2*8 + 1] && B[2*8 + 0])
2144
                 );
2145
    M[3][5][ZEROP] = (!R[3*8 + 5] && !B[3*8 + 5]) &&
2146
 
2147
                 (
2148
                 (R[4*8 + 6] && B[5*8 + 7])
2149
                 );
2150
    M[3][5][DOWN45P] = (!R[3*8 + 5] && !B[3*8 + 5]) &&
2151
 
2152
                 (
2153
                 (R[4*8 + 4] && B[5*8 + 3]) ||
2154
                 (R[4*8 + 4] && R[5*8 + 3] && B[6*8 + 2]) ||
2155
                 (R[4*8 + 4] && R[5*8 + 3] && R[6*8 + 2] && B[7*8 + 1])
2156
                 );
2157
    M[3][5][DOWN] = (!R[3*8 + 5] && !B[3*8 + 5]) &&
2158
 
2159
                 (
2160
                 (R[2*8 + 4] && B[1*8 + 3]) ||
2161
                 (R[2*8 + 4] && R[1*8 + 3] && B[0*8 + 2])
2162
                 );
2163
    M[3][5][DOWN45M] = (!R[3*8 + 5] && !B[3*8 + 5]) &&
2164
 
2165
                 (
2166
                 (R[2*8 + 6] && B[1*8 + 7])
2167
                 );
2168
    M[3][5][ZEROM] = (!R[3*8 + 5] && !B[3*8 + 5]) &&
2169
 
2170
                 (
2171
                 (R[3*8 + 6] && B[3*8 + 7])
2172
                 );
2173
    M[3][5][UP45M] = (!R[3*8 + 5] && !B[3*8 + 5]) &&
2174
 
2175
                 (
2176
                 (R[4*8 + 5] && B[5*8 + 5]) ||
2177
                 (R[4*8 + 5] && R[5*8 + 5] && B[6*8 + 5]) ||
2178
                 (R[4*8 + 5] && R[5*8 + 5] && R[6*8 + 5] && B[7*8 + 5])
2179
                 );
2180
    M[3][5][UP] = (!R[3*8 + 5] && !B[3*8 + 5]) &&
2181
 
2182
                 (
2183
                 (R[2*8 + 5] && B[1*8 + 5]) ||
2184
                 (R[2*8 + 5] && R[1*8 + 5] && B[0*8 + 5])
2185
                 );
2186
    M[3][5][UP45P] = (!R[3*8 + 5] && !B[3*8 + 5]) &&
2187
 
2188
                 (
2189
                 (R[3*8 + 4] && B[3*8 + 3]) ||
2190
                 (R[3*8 + 4] && R[3*8 + 3] && B[3*8 + 2]) ||
2191
                 (R[3*8 + 4] && R[3*8 + 3] && R[3*8 + 2] && B[3*8 + 1]) ||
2192
                 (R[3*8 + 4] && R[3*8 + 3] && R[3*8 + 2] && R[3*8 + 1] && B[3*8 + 0])
2193
                 );
2194
    M[4][5][ZEROP] = (!R[4*8 + 5] && !B[4*8 + 5]) &&
2195
 
2196
                 (
2197
                 (R[5*8 + 6] && B[6*8 + 7])
2198
                 );
2199
    M[4][5][DOWN45P] = (!R[4*8 + 5] && !B[4*8 + 5]) &&
2200
 
2201
                 (
2202
                 (R[5*8 + 4] && B[6*8 + 3]) ||
2203
                 (R[5*8 + 4] && R[6*8 + 3] && B[7*8 + 2])
2204
                 );
2205
    M[4][5][DOWN] = (!R[4*8 + 5] && !B[4*8 + 5]) &&
2206
 
2207
                 (
2208
                 (R[3*8 + 4] && B[2*8 + 3]) ||
2209
                 (R[3*8 + 4] && R[2*8 + 3] && B[1*8 + 2]) ||
2210
                 (R[3*8 + 4] && R[2*8 + 3] && R[1*8 + 2] && B[0*8 + 1])
2211
                 );
2212
    M[4][5][DOWN45M] = (!R[4*8 + 5] && !B[4*8 + 5]) &&
2213
 
2214
                 (
2215
                 (R[3*8 + 6] && B[2*8 + 7])
2216
                 );
2217
    M[4][5][ZEROM] = (!R[4*8 + 5] && !B[4*8 + 5]) &&
2218
 
2219
                 (
2220
                 (R[4*8 + 6] && B[4*8 + 7])
2221
                 );
2222
    M[4][5][UP45M] = (!R[4*8 + 5] && !B[4*8 + 5]) &&
2223
 
2224
                 (
2225
                 (R[5*8 + 5] && B[6*8 + 5]) ||
2226
                 (R[5*8 + 5] && R[6*8 + 5] && B[7*8 + 5])
2227
                 );
2228
    M[4][5][UP] = (!R[4*8 + 5] && !B[4*8 + 5]) &&
2229
 
2230
                 (
2231
                 (R[3*8 + 5] && B[2*8 + 5]) ||
2232
                 (R[3*8 + 5] && R[2*8 + 5] && B[1*8 + 5]) ||
2233
                 (R[3*8 + 5] && R[2*8 + 5] && R[1*8 + 5] && B[0*8 + 5])
2234
                 );
2235
    M[4][5][UP45P] = (!R[4*8 + 5] && !B[4*8 + 5]) &&
2236
 
2237
                 (
2238
                 (R[4*8 + 4] && B[4*8 + 3]) ||
2239
                 (R[4*8 + 4] && R[4*8 + 3] && B[4*8 + 2]) ||
2240
                 (R[4*8 + 4] && R[4*8 + 3] && R[4*8 + 2] && B[4*8 + 1]) ||
2241
                 (R[4*8 + 4] && R[4*8 + 3] && R[4*8 + 2] && R[4*8 + 1] && B[4*8 + 0])
2242
                 );
2243
    M[5][4][ZEROP] = (!R[5*8 + 4] && !B[5*8 + 4]) &&
2244
 
2245
                 (
2246
                 (R[6*8 + 5] && B[7*8 + 6])
2247
                 );
2248
    M[5][4][DOWN45P] = (!R[5*8 + 4] && !B[5*8 + 4]) &&
2249
 
2250
                 (
2251
                 (R[6*8 + 3] && B[7*8 + 2])
2252
                 );
2253
    M[5][4][DOWN] = (!R[5*8 + 4] && !B[5*8 + 4]) &&
2254
 
2255
                 (
2256
                 (R[4*8 + 3] && B[3*8 + 2]) ||
2257
                 (R[4*8 + 3] && R[3*8 + 2] && B[2*8 + 1]) ||
2258
                 (R[4*8 + 3] && R[3*8 + 2] && R[2*8 + 1] && B[1*8 + 0])
2259
                 );
2260
    M[5][4][DOWN45M] = (!R[5*8 + 4] && !B[5*8 + 4]) &&
2261
 
2262
                 (
2263
                 (R[4*8 + 5] && B[3*8 + 6]) ||
2264
                 (R[4*8 + 5] && R[3*8 + 6] && B[2*8 + 7])
2265
                 );
2266
    M[5][4][ZEROM] = (!R[5*8 + 4] && !B[5*8 + 4]) &&
2267
 
2268
                 (
2269
                 (R[5*8 + 5] && B[5*8 + 6]) ||
2270
                 (R[5*8 + 5] && R[5*8 + 6] && B[5*8 + 7])
2271
                 );
2272
    M[5][4][UP45M] = (!R[5*8 + 4] && !B[5*8 + 4]) &&
2273
 
2274
                 (
2275
                 (R[6*8 + 4] && B[7*8 + 4])
2276
                 );
2277
    M[5][4][UP] = (!R[5*8 + 4] && !B[5*8 + 4]) &&
2278
 
2279
                 (
2280
                 (R[4*8 + 4] && B[3*8 + 4]) ||
2281
                 (R[4*8 + 4] && R[3*8 + 4] && B[2*8 + 4]) ||
2282
                 (R[4*8 + 4] && R[3*8 + 4] && R[2*8 + 4] && B[1*8 + 4]) ||
2283
                 (R[4*8 + 4] && R[3*8 + 4] && R[2*8 + 4] && R[1*8 + 4] && B[0*8 + 4])
2284
                 );
2285
    M[5][4][UP45P] = (!R[5*8 + 4] && !B[5*8 + 4]) &&
2286
 
2287
                 (
2288
                 (R[5*8 + 3] && B[5*8 + 2]) ||
2289
                 (R[5*8 + 3] && R[5*8 + 2] && B[5*8 + 1]) ||
2290
                 (R[5*8 + 3] && R[5*8 + 2] && R[5*8 + 1] && B[5*8 + 0])
2291
                 );
2292
    M[5][3][ZEROP] = (!R[5*8 + 3] && !B[5*8 + 3]) &&
2293
 
2294
                 (
2295
                 (R[6*8 + 4] && B[7*8 + 5])
2296
                 );
2297
    M[5][3][DOWN45P] = (!R[5*8 + 3] && !B[5*8 + 3]) &&
2298
 
2299
                 (
2300
                 (R[6*8 + 2] && B[7*8 + 1])
2301
                 );
2302
    M[5][3][DOWN] = (!R[5*8 + 3] && !B[5*8 + 3]) &&
2303
 
2304
                 (
2305
                 (R[4*8 + 2] && B[3*8 + 1]) ||
2306
                 (R[4*8 + 2] && R[3*8 + 1] && B[2*8 + 0])
2307
                 );
2308
    M[5][3][DOWN45M] = (!R[5*8 + 3] && !B[5*8 + 3]) &&
2309
 
2310
                 (
2311
                 (R[4*8 + 4] && B[3*8 + 5]) ||
2312
                 (R[4*8 + 4] && R[3*8 + 5] && B[2*8 + 6]) ||
2313
                 (R[4*8 + 4] && R[3*8 + 5] && R[2*8 + 6] && B[1*8 + 7])
2314
                 );
2315
    M[5][3][ZEROM] = (!R[5*8 + 3] && !B[5*8 + 3]) &&
2316
 
2317
                 (
2318
                 (R[5*8 + 4] && B[5*8 + 5]) ||
2319
                 (R[5*8 + 4] && R[5*8 + 5] && B[5*8 + 6]) ||
2320
                 (R[5*8 + 4] && R[5*8 + 5] && R[5*8 + 6] && B[5*8 + 7])
2321
                 );
2322
    M[5][3][UP45M] = (!R[5*8 + 3] && !B[5*8 + 3]) &&
2323
 
2324
                 (
2325
                 (R[6*8 + 3] && B[7*8 + 3])
2326
                 );
2327
    M[5][3][UP] = (!R[5*8 + 3] && !B[5*8 + 3]) &&
2328
 
2329
                 (
2330
                 (R[4*8 + 3] && B[3*8 + 3]) ||
2331
                 (R[4*8 + 3] && R[3*8 + 3] && B[2*8 + 3]) ||
2332
                 (R[4*8 + 3] && R[3*8 + 3] && R[2*8 + 3] && B[1*8 + 3]) ||
2333
                 (R[4*8 + 3] && R[3*8 + 3] && R[2*8 + 3] && R[1*8 + 3] && B[0*8 + 3])
2334
                 );
2335
    M[5][3][UP45P] = (!R[5*8 + 3] && !B[5*8 + 3]) &&
2336
 
2337
                 (
2338
                 (R[5*8 + 2] && B[5*8 + 1]) ||
2339
                 (R[5*8 + 2] && R[5*8 + 1] && B[5*8 + 0])
2340
                 );
2341
    M[4][2][ZEROP] = (!R[4*8 + 2] && !B[4*8 + 2]) &&
2342
 
2343
                 (
2344
                 (R[5*8 + 3] && B[6*8 + 4]) ||
2345
                 (R[5*8 + 3] && R[6*8 + 4] && B[7*8 + 5])
2346
                 );
2347
    M[4][2][DOWN45P] = (!R[4*8 + 2] && !B[4*8 + 2]) &&
2348
 
2349
                 (
2350
                 (R[5*8 + 1] && B[6*8 + 0])
2351
                 );
2352
    M[4][2][DOWN] = (!R[4*8 + 2] && !B[4*8 + 2]) &&
2353
 
2354
                 (
2355
                 (R[3*8 + 1] && B[2*8 + 0])
2356
                 );
2357
    M[4][2][DOWN45M] = (!R[4*8 + 2] && !B[4*8 + 2]) &&
2358
 
2359
                 (
2360
                 (R[3*8 + 3] && B[2*8 + 4]) ||
2361
                 (R[3*8 + 3] && R[2*8 + 4] && B[1*8 + 5]) ||
2362
                 (R[3*8 + 3] && R[2*8 + 4] && R[1*8 + 5] && B[0*8 + 6])
2363
                 );
2364
    M[4][2][ZEROM] = (!R[4*8 + 2] && !B[4*8 + 2]) &&
2365
 
2366
                 (
2367
                 (R[4*8 + 3] && B[4*8 + 4]) ||
2368
                 (R[4*8 + 3] && R[4*8 + 4] && B[4*8 + 5]) ||
2369
                 (R[4*8 + 3] && R[4*8 + 4] && R[4*8 + 5] && B[4*8 + 6]) ||
2370
                 (R[4*8 + 3] && R[4*8 + 4] && R[4*8 + 5] && R[4*8 + 6] && B[4*8 + 7])
2371
                 );
2372
    M[4][2][UP45M] = (!R[4*8 + 2] && !B[4*8 + 2]) &&
2373
 
2374
                 (
2375
                 (R[5*8 + 2] && B[6*8 + 2]) ||
2376
                 (R[5*8 + 2] && R[6*8 + 2] && B[7*8 + 2])
2377
                 );
2378
    M[4][2][UP] = (!R[4*8 + 2] && !B[4*8 + 2]) &&
2379
 
2380
                 (
2381
                 (R[3*8 + 2] && B[2*8 + 2]) ||
2382
                 (R[3*8 + 2] && R[2*8 + 2] && B[1*8 + 2]) ||
2383
                 (R[3*8 + 2] && R[2*8 + 2] && R[1*8 + 2] && B[0*8 + 2])
2384
                 );
2385
    M[4][2][UP45P] = (!R[4*8 + 2] && !B[4*8 + 2]) &&
2386
 
2387
                 (
2388
                 (R[4*8 + 1] && B[4*8 + 0])
2389
                 );
2390
    M[3][2][ZEROP] = (!R[3*8 + 2] && !B[3*8 + 2]) &&
2391
 
2392
                 (
2393
                 (R[4*8 + 3] && B[5*8 + 4]) ||
2394
                 (R[4*8 + 3] && R[5*8 + 4] && B[6*8 + 5]) ||
2395
                 (R[4*8 + 3] && R[5*8 + 4] && R[6*8 + 5] && B[7*8 + 6])
2396
                 );
2397
    M[3][2][DOWN45P] = (!R[3*8 + 2] && !B[3*8 + 2]) &&
2398
 
2399
                 (
2400
                 (R[4*8 + 1] && B[5*8 + 0])
2401
                 );
2402
    M[3][2][DOWN] = (!R[3*8 + 2] && !B[3*8 + 2]) &&
2403
 
2404
                 (
2405
                 (R[2*8 + 1] && B[1*8 + 0])
2406
                 );
2407
    M[3][2][DOWN45M] = (!R[3*8 + 2] && !B[3*8 + 2]) &&
2408
 
2409
                 (
2410
                 (R[2*8 + 3] && B[1*8 + 4]) ||
2411
                 (R[2*8 + 3] && R[1*8 + 4] && B[0*8 + 5])
2412
                 );
2413
    M[3][2][ZEROM] = (!R[3*8 + 2] && !B[3*8 + 2]) &&
2414
 
2415
                 (
2416
                 (R[3*8 + 3] && B[3*8 + 4]) ||
2417
                 (R[3*8 + 3] && R[3*8 + 4] && B[3*8 + 5]) ||
2418
                 (R[3*8 + 3] && R[3*8 + 4] && R[3*8 + 5] && B[3*8 + 6]) ||
2419
                 (R[3*8 + 3] && R[3*8 + 4] && R[3*8 + 5] && R[3*8 + 6] && B[3*8 + 7])
2420
                 );
2421
    M[3][2][UP45M] = (!R[3*8 + 2] && !B[3*8 + 2]) &&
2422
 
2423
                 (
2424
                 (R[4*8 + 2] && B[5*8 + 2]) ||
2425
                 (R[4*8 + 2] && R[5*8 + 2] && B[6*8 + 2]) ||
2426
                 (R[4*8 + 2] && R[5*8 + 2] && R[6*8 + 2] && B[7*8 + 2])
2427
                 );
2428
    M[3][2][UP] = (!R[3*8 + 2] && !B[3*8 + 2]) &&
2429
 
2430
                 (
2431
                 (R[2*8 + 2] && B[1*8 + 2]) ||
2432
                 (R[2*8 + 2] && R[1*8 + 2] && B[0*8 + 2])
2433
                 );
2434
    M[3][2][UP45P] = (!R[3*8 + 2] && !B[3*8 + 2]) &&
2435
 
2436
                 (
2437
                 (R[3*8 + 1] && B[3*8 + 0])
2438
                 );
2439
    M[3][3][7:0] = 8'b00000000;
2440
    M[3][4][7:0] = 8'b00000000;
2441
    M[4][3][7:0] = 8'b00000000;
2442
    M[4][4][7:0] = 8'b00000000;
2443
 
2444
        RES_D[1*7 + 0 : 0*7 + 0] = {|M[0][7], |M[0][6], |M[0][5], |M[0][4], |M[0][3], |M[0][2], |M[0][1], |M[0][0]};
2445
        RES_D[2*7 + 1 : 1*7 + 1] = {|M[1][7], |M[1][6], |M[1][5], |M[1][4], |M[1][3], |M[1][2], |M[1][1], |M[1][0]};
2446
        RES_D[3*7 + 2 : 2*7 + 2] = {|M[2][7], |M[2][6], |M[2][5], |M[2][4], |M[2][3], |M[2][2], |M[2][1], |M[2][0]};
2447
        RES_D[4*7 + 3 : 3*7 + 3] = {|M[3][7], |M[3][6], |M[3][5], |M[3][4], |M[3][3], |M[3][2], |M[3][1], |M[3][0]};
2448
        RES_D[5*7 + 4 : 4*7 + 4] = {|M[4][7], |M[4][6], |M[4][5], |M[4][4], |M[4][3], |M[4][2], |M[4][1], |M[4][0]};
2449
        RES_D[6*7 + 5 : 5*7 + 5] = {|M[5][7], |M[5][6], |M[5][5], |M[5][4], |M[5][3], |M[5][2], |M[5][1], |M[5][0]};
2450
        RES_D[7*7 + 6 : 6*7 + 6] = {|M[6][7], |M[6][6], |M[6][5], |M[6][4], |M[6][3], |M[6][2], |M[6][1], |M[6][0]};
2451
        RES_D[8*7 + 7 : 7*7 + 7] = {|M[7][7], |M[7][6], |M[7][5], |M[7][4], |M[7][3], |M[7][2], |M[7][1], |M[7][0]};
2452
  end
2453
 
2454
assign M_ = RES_Q;
2455
 
2456
endmodule

powered by: WebSVN 2.1.0

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