1 |
2 |
marius_mtm |
`timescale 1ns / 1ps
|
2 |
|
|
//////////////////////////////////////////////////////////////////////////////////
|
3 |
|
|
// Company:
|
4 |
|
|
// Engineer:
|
5 |
|
|
//
|
6 |
|
|
// Create Date: 19:05:40 04/28/2009
|
7 |
|
|
// Design Name:
|
8 |
|
|
// Module Name: heuristics
|
9 |
|
|
// Project Name:
|
10 |
|
|
// Target Devices:
|
11 |
|
|
// Tool versions:
|
12 |
|
|
// Description:
|
13 |
|
|
//
|
14 |
|
|
// Dependencies:
|
15 |
|
|
//
|
16 |
|
|
// Revision:
|
17 |
|
|
// Revision 0.01 - File Created
|
18 |
|
|
// Additional Comments:
|
19 |
|
|
//
|
20 |
|
|
//////////////////////////////////////////////////////////////////////////////////
|
21 |
|
|
module heuristics(clk, RST, R, B, M, value/*, pattern_dbg1*/);
|
22 |
|
|
input clk;
|
23 |
|
|
input RST;
|
24 |
|
|
input [63:0] R;
|
25 |
|
|
input [63:0] B;
|
26 |
|
|
input [63:0] M;
|
27 |
|
|
output signed [19:0] value;
|
28 |
|
|
//output signed [4:0] pattern_dbg1;
|
29 |
|
|
|
30 |
|
|
|
31 |
|
|
reg signed [19:0] value_d;
|
32 |
|
|
reg signed [19:0] value_q;
|
33 |
|
|
reg signed [6:0] value_Rp0_d;
|
34 |
|
|
reg signed [6:0] value_Rp1_d;
|
35 |
|
|
reg signed [6:0] value_Rp2_d;
|
36 |
|
|
reg signed [6:0] value_Rp3_d;
|
37 |
|
|
reg signed [6:0] value_Rp4_d;
|
38 |
|
|
reg signed [6:0] value_Rp5_d;
|
39 |
|
|
reg signed [6:0] value_Rp6_d;
|
40 |
|
|
reg signed [6:0] value_Rp7_d;
|
41 |
|
|
reg signed [6:0] value_Rp8_d;
|
42 |
|
|
reg signed [6:0] value_Rp9_d;
|
43 |
|
|
reg signed [6:0] value_Rp10_d;
|
44 |
|
|
reg signed [6:0] value_Rp11_d;
|
45 |
|
|
reg signed [6:0] value_Bp0_d;
|
46 |
|
|
reg signed [6:0] value_Bp1_d;
|
47 |
|
|
reg signed [6:0] value_Bp2_d;
|
48 |
|
|
reg signed [6:0] value_Bp3_d;
|
49 |
|
|
reg signed [6:0] value_Bp4_d;
|
50 |
|
|
reg signed [6:0] value_Bp5_d;
|
51 |
|
|
reg signed [6:0] value_Bp6_d;
|
52 |
|
|
reg signed [6:0] value_Bp7_d;
|
53 |
|
|
reg signed [6:0] value_Bp8_d;
|
54 |
|
|
reg signed [6:0] value_Bp9_d;
|
55 |
|
|
reg signed [6:0] value_Bp10_d;
|
56 |
|
|
reg signed [6:0] value_Bp11_d;
|
57 |
|
|
|
58 |
|
|
|
59 |
|
|
reg signed [8:0] value_pp0_d;
|
60 |
|
|
reg signed [8:0] value_pp1_d;
|
61 |
|
|
reg signed [8:0] value_pp2_d;
|
62 |
|
|
reg signed [8:0] value_pp3_d;
|
63 |
|
|
reg signed [8:0] value_pp4_d;
|
64 |
|
|
reg signed [8:0] value_pp5_d;
|
65 |
|
|
|
66 |
|
|
|
67 |
|
|
wire signed [4:0] pattern00_Rd;
|
68 |
|
|
wire signed [4:0] pattern01_Rd;
|
69 |
|
|
wire signed [4:0] pattern02_Rd;
|
70 |
|
|
wire signed [4:0] pattern03_Rd;
|
71 |
|
|
wire signed [4:0] pattern04_Rd;
|
72 |
|
|
wire signed [4:0] pattern05_Rd;
|
73 |
|
|
wire signed [4:0] pattern06_Rd;
|
74 |
|
|
wire signed [4:0] pattern07_Rd;
|
75 |
|
|
wire signed [4:0] pattern08_Rd;
|
76 |
|
|
wire signed [4:0] pattern09_Rd;
|
77 |
|
|
wire signed [4:0] pattern10_Rd;
|
78 |
|
|
wire signed [4:0] pattern11_Rd;
|
79 |
|
|
wire signed [4:0] pattern12_Rd;
|
80 |
|
|
wire signed [4:0] pattern13_Rd;
|
81 |
|
|
wire signed [4:0] pattern14_Rd;
|
82 |
|
|
wire signed [4:0] pattern15_Rd;
|
83 |
|
|
wire signed [4:0] pattern16_Rd;
|
84 |
|
|
wire signed [4:0] pattern17_Rd;
|
85 |
|
|
wire signed [4:0] pattern18_Rd;
|
86 |
|
|
wire signed [4:0] pattern19_Rd;
|
87 |
|
|
wire signed [4:0] pattern20_Rd;
|
88 |
|
|
wire signed [4:0] pattern21_Rd;
|
89 |
|
|
wire signed [4:0] pattern22_Rd;
|
90 |
|
|
wire signed [4:0] pattern23_Rd;
|
91 |
|
|
wire signed [4:0] pattern24_Rd;
|
92 |
|
|
wire signed [4:0] pattern25_Rd;
|
93 |
|
|
wire signed [4:0] pattern26_Rd;
|
94 |
|
|
wire signed [4:0] pattern27_Rd;
|
95 |
|
|
wire signed [4:0] pattern28_Rd;
|
96 |
|
|
wire signed [4:0] pattern29_Rd;
|
97 |
|
|
wire signed [4:0] pattern30_Rd;
|
98 |
|
|
wire signed [4:0] pattern31_Rd;
|
99 |
|
|
wire signed [4:0] pattern32_Rd;
|
100 |
|
|
wire signed [4:0] pattern33_Rd;
|
101 |
|
|
wire signed [4:0] pattern34_Rd;
|
102 |
|
|
wire signed [4:0] pattern35_Rd;
|
103 |
|
|
wire signed [4:0] pattern36_Rd;
|
104 |
|
|
wire signed [4:0] pattern37_Rd;
|
105 |
|
|
wire signed [4:0] pattern38_Rd;
|
106 |
|
|
wire signed [4:0] pattern39_Rd;
|
107 |
|
|
wire signed [4:0] pattern40_Rd;
|
108 |
|
|
wire signed [4:0] pattern41_Rd;
|
109 |
|
|
wire signed [4:0] pattern42_Rd;
|
110 |
|
|
wire signed [4:0] pattern43_Rd;
|
111 |
|
|
wire signed [4:0] pattern44_Rd;
|
112 |
|
|
wire signed [4:0] pattern45_Rd;
|
113 |
|
|
wire signed [4:0] pattern46_Rd;
|
114 |
|
|
wire signed [4:0] pattern47_Rd;
|
115 |
|
|
|
116 |
|
|
|
117 |
|
|
wire signed [4:0] pattern00_Bd;
|
118 |
|
|
wire signed [4:0] pattern01_Bd;
|
119 |
|
|
wire signed [4:0] pattern02_Bd;
|
120 |
|
|
wire signed [4:0] pattern03_Bd;
|
121 |
|
|
wire signed [4:0] pattern04_Bd;
|
122 |
|
|
wire signed [4:0] pattern05_Bd;
|
123 |
|
|
wire signed [4:0] pattern06_Bd;
|
124 |
|
|
wire signed [4:0] pattern07_Bd;
|
125 |
|
|
wire signed [4:0] pattern08_Bd;
|
126 |
|
|
wire signed [4:0] pattern09_Bd;
|
127 |
|
|
wire signed [4:0] pattern10_Bd;
|
128 |
|
|
wire signed [4:0] pattern11_Bd;
|
129 |
|
|
wire signed [4:0] pattern12_Bd;
|
130 |
|
|
wire signed [4:0] pattern13_Bd;
|
131 |
|
|
wire signed [4:0] pattern14_Bd;
|
132 |
|
|
wire signed [4:0] pattern15_Bd;
|
133 |
|
|
wire signed [4:0] pattern16_Bd;
|
134 |
|
|
wire signed [4:0] pattern17_Bd;
|
135 |
|
|
wire signed [4:0] pattern18_Bd;
|
136 |
|
|
wire signed [4:0] pattern19_Bd;
|
137 |
|
|
wire signed [4:0] pattern20_Bd;
|
138 |
|
|
wire signed [4:0] pattern21_Bd;
|
139 |
|
|
wire signed [4:0] pattern22_Bd;
|
140 |
|
|
wire signed [4:0] pattern23_Bd;
|
141 |
|
|
wire signed [4:0] pattern24_Bd;
|
142 |
|
|
wire signed [4:0] pattern25_Bd;
|
143 |
|
|
wire signed [4:0] pattern26_Bd;
|
144 |
|
|
wire signed [4:0] pattern27_Bd;
|
145 |
|
|
wire signed [4:0] pattern28_Bd;
|
146 |
|
|
wire signed [4:0] pattern29_Bd;
|
147 |
|
|
wire signed [4:0] pattern30_Bd;
|
148 |
|
|
wire signed [4:0] pattern31_Bd;
|
149 |
|
|
wire signed [4:0] pattern32_Bd;
|
150 |
|
|
wire signed [4:0] pattern33_Bd;
|
151 |
|
|
wire signed [4:0] pattern34_Bd;
|
152 |
|
|
wire signed [4:0] pattern35_Bd;
|
153 |
|
|
wire signed [4:0] pattern36_Bd;
|
154 |
|
|
wire signed [4:0] pattern37_Bd;
|
155 |
|
|
wire signed [4:0] pattern38_Bd;
|
156 |
|
|
wire signed [4:0] pattern39_Bd;
|
157 |
|
|
wire signed [4:0] pattern40_Bd;
|
158 |
|
|
wire signed [4:0] pattern41_Bd;
|
159 |
|
|
wire signed [4:0] pattern42_Bd;
|
160 |
|
|
wire signed [4:0] pattern43_Bd;
|
161 |
|
|
wire signed [4:0] pattern44_Bd;
|
162 |
|
|
wire signed [4:0] pattern45_Bd;
|
163 |
|
|
wire signed [4:0] pattern46_Bd;
|
164 |
|
|
wire signed [4:0] pattern47_Bd;
|
165 |
|
|
|
166 |
|
|
//wire signed [4:0] pattern_dbg1 = pattern47_Bd;
|
167 |
|
|
|
168 |
|
|
assign pattern00_Rd = ((R[63:0] & 64'h0000000000000001) == 64'h0000000000000001) ? 1 : 0;
|
169 |
|
|
assign pattern00_Bd = ((B[63:0] & 64'h0000000000000001) == 64'h0000000000000001) ? -1 : 0;
|
170 |
|
|
assign pattern01_Rd = ((R[63:0] & 64'h0000000000000103) == 64'h0000000000000103) ? 2 : 0;
|
171 |
|
|
assign pattern01_Bd = ((B[63:0] & 64'h0000000000000103) == 64'h0000000000000103) ? -2 : 0;
|
172 |
|
|
assign pattern02_Rd = ((R[63:0] & 64'h0000000000010307) == 64'h0000000000010307) ? 3 : 0;
|
173 |
|
|
assign pattern02_Bd = ((B[63:0] & 64'h0000000000010307) == 64'h0000000000010307) ? -3 : 0;
|
174 |
|
|
assign pattern03_Rd = ((R[63:0] & 64'h000000000103070F) == 64'h000000000103070F) ? 4 : 0;
|
175 |
|
|
assign pattern03_Bd = ((B[63:0] & 64'h000000000103070F) == 64'h000000000103070F) ? -4 : 0;
|
176 |
|
|
assign pattern04_Rd = ((R[63:0] & 64'h0000000103070F1F) == 64'h0000000103070F1F) ? 5 : 0;
|
177 |
|
|
assign pattern04_Bd = ((B[63:0] & 64'h0000000103070F1F) == 64'h0000000103070F1F) ? -5 : 0;
|
178 |
|
|
assign pattern05_Rd = ((R[63:0] & 64'h00000103070F1F3F) == 64'h00000103070F1F3F) ? 6 : 0;
|
179 |
|
|
assign pattern05_Bd = ((B[63:0] & 64'h00000103070F1F3F) == 64'h00000103070F1F3F) ? -6 : 0;
|
180 |
|
|
assign pattern06_Rd = ((R[63:0] & 64'h000103070F1F3F7F) == 64'h000103070F1F3F7F) ? 7 : 0;
|
181 |
|
|
assign pattern06_Bd = ((B[63:0] & 64'h000103070F1F3F7F) == 64'h000103070F1F3F7F) ? -7 : 0;
|
182 |
|
|
assign pattern07_Rd = ((R[63:0] & 64'h0103070F1F3F7FFF) == 64'h0103070F1F3F7FFF) ? 8 : 0;
|
183 |
|
|
assign pattern07_Bd = ((B[63:0] & 64'h0103070F1F3F7FFF) == 64'h0103070F1F3F7FFF) ? -8 : 0;
|
184 |
|
|
assign pattern08_Rd = ((R[63:0] & 64'h0000000000000080) == 64'h0000000000000080) ? 1 : 0;
|
185 |
|
|
assign pattern08_Bd = ((B[63:0] & 64'h0000000000000080) == 64'h0000000000000080) ? -1 : 0;
|
186 |
|
|
assign pattern09_Rd = ((R[63:0] & 64'h00000000000080C0) == 64'h00000000000080C0) ? 2 : 0;
|
187 |
|
|
assign pattern09_Bd = ((B[63:0] & 64'h00000000000080C0) == 64'h00000000000080C0) ? -2 : 0;
|
188 |
|
|
assign pattern10_Rd = ((R[63:0] & 64'h000000000080C0E0) == 64'h000000000080C0E0) ? 3 : 0;
|
189 |
|
|
assign pattern10_Bd = ((B[63:0] & 64'h000000000080C0E0) == 64'h000000000080C0E0) ? -3 : 0;
|
190 |
|
|
assign pattern11_Rd = ((R[63:0] & 64'h0000000080C0E0F0) == 64'h0000000080C0E0F0) ? 4 : 0;
|
191 |
|
|
assign pattern11_Bd = ((B[63:0] & 64'h0000000080C0E0F0) == 64'h0000000080C0E0F0) ? -4 : 0;
|
192 |
|
|
assign pattern12_Rd = ((R[63:0] & 64'h00000080C0E0F0F8) == 64'h00000080C0E0F0F8) ? 5 : 0;
|
193 |
|
|
assign pattern12_Bd = ((B[63:0] & 64'h00000080C0E0F0F8) == 64'h00000080C0E0F0F8) ? -5 : 0;
|
194 |
|
|
assign pattern13_Rd = ((R[63:0] & 64'h000080C0E0F0F8FC) == 64'h000080C0E0F0F8FC) ? 6 : 0;
|
195 |
|
|
assign pattern13_Bd = ((B[63:0] & 64'h000080C0E0F0F8FC) == 64'h000080C0E0F0F8FC) ? -6 : 0;
|
196 |
|
|
assign pattern14_Rd = ((R[63:0] & 64'h0080C0E0F0F8FCFE) == 64'h0080C0E0F0F8FCFE) ? 7 : 0;
|
197 |
|
|
assign pattern14_Bd = ((B[63:0] & 64'h0080C0E0F0F8FCFE) == 64'h0080C0E0F0F8FCFE) ? -7 : 0;
|
198 |
|
|
assign pattern15_Rd = ((R[63:0] & 64'h80C0E0F0F8FCFEFF) == 64'h80C0E0F0F8FCFEFF) ? 8 : 0;
|
199 |
|
|
assign pattern15_Bd = ((B[63:0] & 64'h80C0E0F0F8FCFEFF) == 64'h80C0E0F0F8FCFEFF) ? -8 : 0;
|
200 |
|
|
assign pattern16_Rd = ((R[63:0] & 64'h8000000000000000) == 64'h8000000000000000) ? 1 : 0;
|
201 |
|
|
assign pattern16_Bd = ((B[63:0] & 64'h8000000000000000) == 64'h8000000000000000) ? -1 : 0;
|
202 |
|
|
assign pattern17_Rd = ((R[63:0] & 64'hC080000000000000) == 64'hC080000000000000) ? 2 : 0;
|
203 |
|
|
assign pattern17_Bd = ((B[63:0] & 64'hC080000000000000) == 64'hC080000000000000) ? -2 : 0;
|
204 |
|
|
assign pattern18_Rd = ((R[63:0] & 64'hE0C0800000000000) == 64'hE0C0800000000000) ? 3 : 0;
|
205 |
|
|
assign pattern18_Bd = ((B[63:0] & 64'hE0C0800000000000) == 64'hE0C0800000000000) ? -3 : 0;
|
206 |
|
|
assign pattern19_Rd = ((R[63:0] & 64'hF0E0C08000000000) == 64'hF0E0C08000000000) ? 4 : 0;
|
207 |
|
|
assign pattern19_Bd = ((B[63:0] & 64'hF0E0C08000000000) == 64'hF0E0C08000000000) ? -4 : 0;
|
208 |
|
|
assign pattern20_Rd = ((R[63:0] & 64'hF8F0E0C080000000) == 64'hF8F0E0C080000000) ? 5 : 0;
|
209 |
|
|
assign pattern20_Bd = ((B[63:0] & 64'hF8F0E0C080000000) == 64'hF8F0E0C080000000) ? -5 : 0;
|
210 |
|
|
assign pattern21_Rd = ((R[63:0] & 64'hFCF8F0E0C0800000) == 64'hFCF8F0E0C0800000) ? 6 : 0;
|
211 |
|
|
assign pattern21_Bd = ((B[63:0] & 64'hFCF8F0E0C0800000) == 64'hFCF8F0E0C0800000) ? -6 : 0;
|
212 |
|
|
assign pattern22_Rd = ((R[63:0] & 64'hFEFCF8F0E0C08000) == 64'hFEFCF8F0E0C08000) ? 7 : 0;
|
213 |
|
|
assign pattern22_Bd = ((B[63:0] & 64'hFEFCF8F0E0C08000) == 64'hFEFCF8F0E0C08000) ? -7 : 0;
|
214 |
|
|
assign pattern23_Rd = ((R[63:0] & 64'hFFFEFCF8F0E0C080) == 64'hFFFEFCF8F0E0C080) ? 8 : 0;
|
215 |
|
|
assign pattern23_Bd = ((B[63:0] & 64'hFFFEFCF8F0E0C080) == 64'hFFFEFCF8F0E0C080) ? -8 : 0;
|
216 |
|
|
assign pattern24_Rd = ((R[63:0] & 64'h0100000000000000) == 64'h0100000000000000) ? 1 : 0;
|
217 |
|
|
assign pattern24_Bd = ((B[63:0] & 64'h0100000000000000) == 64'h0100000000000000) ? -1 : 0;
|
218 |
|
|
assign pattern25_Rd = ((R[63:0] & 64'h0301000000000000) == 64'h0301000000000000) ? 2 : 0;
|
219 |
|
|
assign pattern25_Bd = ((B[63:0] & 64'h0301000000000000) == 64'h0301000000000000) ? -2 : 0;
|
220 |
|
|
assign pattern26_Rd = ((R[63:0] & 64'h0703010000000000) == 64'h0703010000000000) ? 3 : 0;
|
221 |
|
|
assign pattern26_Bd = ((B[63:0] & 64'h0703010000000000) == 64'h0703010000000000) ? -3 : 0;
|
222 |
|
|
assign pattern27_Rd = ((R[63:0] & 64'h0F07030100000000) == 64'h0F07030100000000) ? 4 : 0;
|
223 |
|
|
assign pattern27_Bd = ((B[63:0] & 64'h0F07030100000000) == 64'h0F07030100000000) ? -4 : 0;
|
224 |
|
|
assign pattern28_Rd = ((R[63:0] & 64'h1F0F070301000000) == 64'h1F0F070301000000) ? 5 : 0;
|
225 |
|
|
assign pattern28_Bd = ((B[63:0] & 64'h1F0F070301000000) == 64'h1F0F070301000000) ? -5 : 0;
|
226 |
|
|
assign pattern29_Rd = ((R[63:0] & 64'h3F1F0F0703010000) == 64'h3F1F0F0703010000) ? 6 : 0;
|
227 |
|
|
assign pattern29_Bd = ((B[63:0] & 64'h3F1F0F0703010000) == 64'h3F1F0F0703010000) ? -6 : 0;
|
228 |
|
|
assign pattern30_Rd = ((R[63:0] & 64'h7F3F1F0F07030100) == 64'h7F3F1F0F07030100) ? 7 : 0;
|
229 |
|
|
assign pattern30_Bd = ((B[63:0] & 64'h7F3F1F0F07030100) == 64'h7F3F1F0F07030100) ? -7 : 0;
|
230 |
|
|
assign pattern31_Rd = ((R[63:0] & 64'hFF7F3F1F0F070301) == 64'hFF7F3F1F0F070301) ? 8 : 0;
|
231 |
|
|
assign pattern31_Bd = ((B[63:0] & 64'hFF7F3F1F0F070301) == 64'hFF7F3F1F0F070301) ? -8 : 0;
|
232 |
|
|
assign pattern32_Rd = ((R[63:0] & 64'h0101010101010101) == 64'h0101010101010101) ? 3 : 0;
|
233 |
|
|
assign pattern32_Bd = ((B[63:0] & 64'h0101010101010101) == 64'h0101010101010101) ? -3 : 0;
|
234 |
|
|
assign pattern33_Rd = ((R[63:0] & 64'h0303030303030303) == 64'h0303030303030303) ? 5 : 0;
|
235 |
|
|
assign pattern33_Bd = ((B[63:0] & 64'h0303030303030303) == 64'h0303030303030303) ? -5 : 0;
|
236 |
|
|
assign pattern34_Rd = ((R[63:0] & 64'h0707070707070707) == 64'h0707070707070707) ? 7 : 0;
|
237 |
|
|
assign pattern34_Bd = ((B[63:0] & 64'h0707070707070707) == 64'h0707070707070707) ? -7 : 0;
|
238 |
|
|
assign pattern35_Rd = ((R[63:0] & 64'h0F0F0F0F0F0F0F0F) == 64'h0F0F0F0F0F0F0F0F) ? 10 : 0;
|
239 |
|
|
assign pattern35_Bd = ((B[63:0] & 64'h0F0F0F0F0F0F0F0F) == 64'h0F0F0F0F0F0F0F0F) ? -10 : 0;
|
240 |
|
|
assign pattern36_Rd = ((R[63:0] & 64'h8080808080808080) == 64'h8080808080808080) ? 3 : 0;
|
241 |
|
|
assign pattern36_Bd = ((B[63:0] & 64'h8080808080808080) == 64'h8080808080808080) ? -3 : 0;
|
242 |
|
|
assign pattern37_Rd = ((R[63:0] & 64'hC0C0C0C0C0C0C0C0) == 64'hC0C0C0C0C0C0C0C0) ? 5 : 0;
|
243 |
|
|
assign pattern37_Bd = ((B[63:0] & 64'hC0C0C0C0C0C0C0C0) == 64'hC0C0C0C0C0C0C0C0) ? -5 : 0;
|
244 |
|
|
assign pattern38_Rd = ((R[63:0] & 64'hE0E0E0E0E0E0E0E0) == 64'hE0E0E0E0E0E0E0E0) ? 7 : 0;
|
245 |
|
|
assign pattern38_Bd = ((B[63:0] & 64'hE0E0E0E0E0E0E0E0) == 64'hE0E0E0E0E0E0E0E0) ? -7 : 0;
|
246 |
|
|
assign pattern39_Rd = ((R[63:0] & 64'hF0F0F0F0F0F0F0F0) == 64'hF0F0F0F0F0F0F0F0) ? 10 : 0;
|
247 |
|
|
assign pattern39_Bd = ((B[63:0] & 64'hF0F0F0F0F0F0F0F0) == 64'hF0F0F0F0F0F0F0F0) ? -10 : 0;
|
248 |
|
|
assign pattern40_Rd = ((R[63:0] & 64'h00000000000000FF) == 64'h00000000000000FF) ? 3 : 0;
|
249 |
|
|
assign pattern40_Bd = ((B[63:0] & 64'h00000000000000FF) == 64'h00000000000000FF) ? -3 : 0;
|
250 |
|
|
assign pattern41_Rd = ((R[63:0] & 64'h000000000000FFFF) == 64'h000000000000FFFF) ? 5 : 0;
|
251 |
|
|
assign pattern41_Bd = ((B[63:0] & 64'h000000000000FFFF) == 64'h000000000000FFFF) ? -5 : 0;
|
252 |
|
|
assign pattern42_Rd = ((R[63:0] & 64'h0000000000FFFFFF) == 64'h0000000000FFFFFF) ? 7 : 0;
|
253 |
|
|
assign pattern42_Bd = ((B[63:0] & 64'h0000000000FFFFFF) == 64'h0000000000FFFFFF) ? -7 : 0;
|
254 |
|
|
assign pattern43_Rd = ((R[63:0] & 64'h00000000FFFFFFFF) == 64'h00000000FFFFFFFF) ? 10 : 0;
|
255 |
|
|
assign pattern43_Bd = ((B[63:0] & 64'h00000000FFFFFFFF) == 64'h00000000FFFFFFFF) ? -10 : 0;
|
256 |
|
|
assign pattern44_Rd = ((R[63:0] & 64'hFFFFFFFF00000000) == 64'hFFFFFFFF00000000) ? 10 : 0;
|
257 |
|
|
assign pattern44_Bd = ((B[63:0] & 64'hFFFFFFFF00000000) == 64'hFFFFFFFF00000000) ? -10 : 0;
|
258 |
|
|
assign pattern45_Rd = ((R[63:0] & 64'hFFFFFF0000000000) == 64'hFFFFFF0000000000) ? 7 : 0;
|
259 |
|
|
assign pattern45_Bd = ((B[63:0] & 64'hFFFFFF0000000000) == 64'hFFFFFF0000000000) ? -7 : 0;
|
260 |
|
|
assign pattern46_Rd = ((R[63:0] & 64'hFFFF000000000000) == 64'hFFFF000000000000) ? 5 : 0;
|
261 |
|
|
assign pattern46_Bd = ((B[63:0] & 64'hFFFF000000000000) == 64'hFFFF000000000000) ? -5 : 0;
|
262 |
|
|
assign pattern47_Rd = ((R[63:0] & 64'hFF00000000000000) == 64'hFF00000000000000) ? 3 : 0;
|
263 |
|
|
assign pattern47_Bd = ((B[63:0] & 64'hFF00000000000000) == 64'hFF00000000000000) ? -3 : 0;
|
264 |
|
|
|
265 |
|
|
//wire [5:0] mutability;
|
266 |
|
|
|
267 |
|
|
|
268 |
|
|
//cntB_d = cntB_p00_d + cntB_p01_d + cntB_p02_d + cntB_p03_d + cntB_p04_d + cntB_p05_d + cntB_p06_d + cntB_p07_d;
|
269 |
|
|
|
270 |
|
|
//assign mutability = M[0] + M[1] + M[2] + M[3] + M[4] + M[5] + M[6] + M[7] + M[8] + M[9] + M[10] + M[11] + M[12] + M[13] + M[14] + M[15] + M[16] + M[17] + M[18] + M[19] + M[20] + M[21] + M[22] + M[23] + M[24] + M[25] + M[26] + M[27] + M[28] + M[29] + M[30] + M[31] + M[32] + M[33] + M[34] + M[35] + M[36] + M[37] + M[38] + M[39] + M[40] + M[41] + M[42] + M[43] + M[44] + M[45] + M[46] + M[47] + M[48] + M[49] + M[50] + M[51] + M[52] + M[53] + M[54] + M[55] + M[56] + M[57] + M[58] + M[59] + M[60] + M[61] + M[62] + M[63];
|
271 |
|
|
|
272 |
|
|
|
273 |
|
|
reg [3:0] cntM_p00_d;
|
274 |
|
|
reg [3:0] cntM_p01_d;
|
275 |
|
|
reg [3:0] cntM_p02_d;
|
276 |
|
|
reg [3:0] cntM_p03_d;
|
277 |
|
|
reg [3:0] cntM_p04_d;
|
278 |
|
|
reg [3:0] cntM_p05_d;
|
279 |
|
|
reg [3:0] cntM_p06_d;
|
280 |
|
|
reg [3:0] cntM_p07_d;
|
281 |
|
|
|
282 |
|
|
reg [6:0] mutability_d;
|
283 |
|
|
|
284 |
|
|
|
285 |
|
|
always @( * ) begin
|
286 |
|
|
|
287 |
|
|
cntM_p00_d = M[00] + M[01] + M[02] + M[03] + M[04] + M[05] + M[06] + M[07];
|
288 |
|
|
cntM_p01_d = M[08] + M[09] + M[10] + M[11] + M[12] + M[13] + M[14] + M[15];
|
289 |
|
|
cntM_p02_d = M[16] + M[17] + M[18] + M[19] + M[20] + M[21] + M[22] + M[23];
|
290 |
|
|
cntM_p03_d = M[24] + M[25] + M[26] + M[27] + M[28] + M[29] + M[30] + M[31];
|
291 |
|
|
cntM_p04_d = M[32] + M[33] + M[34] + M[35] + M[36] + M[37] + M[38] + M[39];
|
292 |
|
|
cntM_p05_d = M[40] + M[41] + M[42] + M[43] + M[44] + M[45] + M[46] + M[47];
|
293 |
|
|
cntM_p06_d = M[48] + M[49] + M[50] + M[51] + M[52] + M[53] + M[54] + M[55];
|
294 |
|
|
cntM_p07_d = M[56] + M[57] + M[58] + M[59] + M[60] + M[61] + M[62] + M[63];
|
295 |
|
|
|
296 |
|
|
mutability_d = cntM_p00_d + cntM_p01_d + cntM_p02_d + cntM_p03_d + cntM_p04_d + cntM_p05_d + cntM_p06_d + cntM_p07_d;
|
297 |
|
|
|
298 |
|
|
|
299 |
|
|
value_Rp0_d = pattern00_Rd + pattern01_Rd + pattern02_Rd + pattern03_Rd;
|
300 |
|
|
value_Rp1_d = pattern04_Rd + pattern05_Rd + pattern06_Rd + pattern07_Rd;
|
301 |
|
|
value_Rp2_d = pattern08_Rd + pattern09_Rd + pattern10_Rd + pattern11_Rd;
|
302 |
|
|
value_Rp3_d = pattern12_Rd + pattern13_Rd + pattern14_Rd + pattern15_Rd;
|
303 |
|
|
value_Rp4_d = pattern16_Rd + pattern17_Rd + pattern18_Rd + pattern19_Rd;
|
304 |
|
|
value_Rp5_d = pattern20_Rd + pattern21_Rd + pattern22_Rd + pattern23_Rd;
|
305 |
|
|
value_Rp6_d = pattern24_Rd + pattern25_Rd + pattern26_Rd + pattern27_Rd;
|
306 |
|
|
value_Rp7_d = pattern28_Rd + pattern29_Rd + pattern30_Rd + pattern31_Rd;
|
307 |
|
|
value_Rp8_d = pattern32_Rd + pattern33_Rd + pattern34_Rd + pattern35_Rd;
|
308 |
|
|
value_Rp9_d = pattern36_Rd + pattern37_Rd + pattern38_Rd + pattern39_Rd;
|
309 |
|
|
value_Rp10_d = pattern40_Rd + pattern41_Rd + pattern42_Rd + pattern43_Rd;
|
310 |
|
|
value_Rp11_d = pattern44_Rd + pattern45_Rd + pattern46_Rd + pattern47_Rd;
|
311 |
|
|
|
312 |
|
|
|
313 |
|
|
value_Bp0_d = pattern00_Bd + pattern01_Bd + pattern02_Bd + pattern03_Bd;
|
314 |
|
|
value_Bp1_d = pattern04_Bd + pattern05_Bd + pattern06_Bd + pattern07_Bd;
|
315 |
|
|
value_Bp2_d = pattern08_Bd + pattern09_Bd + pattern10_Bd + pattern11_Bd;
|
316 |
|
|
value_Bp3_d = pattern12_Bd + pattern13_Bd + pattern14_Bd + pattern15_Bd;
|
317 |
|
|
value_Bp4_d = pattern16_Bd + pattern17_Bd + pattern18_Bd + pattern19_Bd;
|
318 |
|
|
value_Bp5_d = pattern20_Bd + pattern21_Bd + pattern22_Bd + pattern23_Bd;
|
319 |
|
|
value_Bp6_d = pattern24_Bd + pattern25_Bd + pattern26_Bd + pattern27_Bd;
|
320 |
|
|
value_Bp7_d = pattern28_Bd + pattern29_Bd + pattern30_Bd + pattern31_Bd;
|
321 |
|
|
value_Bp8_d = pattern32_Bd + pattern33_Bd + pattern34_Bd + pattern35_Bd;
|
322 |
|
|
value_Bp9_d = pattern36_Bd + pattern37_Bd + pattern38_Bd + pattern39_Bd;
|
323 |
|
|
value_Bp10_d = pattern40_Bd + pattern41_Bd + pattern42_Bd + pattern43_Bd;
|
324 |
|
|
value_Bp11_d = pattern44_Bd + pattern45_Bd + pattern46_Bd + pattern47_Bd;
|
325 |
|
|
|
326 |
|
|
|
327 |
|
|
value_pp0_d = value_Rp0_d + value_Rp1_d + value_Rp2_d + value_Rp3_d;
|
328 |
|
|
value_pp1_d = value_Rp4_d + value_Rp5_d + value_Rp6_d + value_Rp7_d;
|
329 |
|
|
value_pp2_d = value_Rp8_d + value_Rp9_d + value_Rp10_d + value_Rp11_d;
|
330 |
|
|
value_pp3_d = value_Bp0_d + value_Bp1_d + value_Bp2_d + value_Bp3_d;
|
331 |
|
|
value_pp4_d = value_Bp4_d + value_Bp5_d + value_Bp6_d + value_Bp7_d;
|
332 |
|
|
value_pp5_d = value_Bp8_d + value_Bp9_d + value_Bp10_d + value_Bp11_d;
|
333 |
|
|
|
334 |
|
|
|
335 |
|
|
value_d = value_pp0_d + value_pp1_d + value_pp2_d + value_pp3_d + value_pp4_d + value_pp5_d;
|
336 |
|
|
//value_d = value_d*64 + mutability_d*16;
|
337 |
|
|
value_d = value_d*64 + mutability_d*32;
|
338 |
|
|
|
339 |
|
|
/*
|
340 |
|
|
|
341 |
|
|
CHAIN METHOD
|
342 |
|
|
value_d = (pattern00_d + pattern01_d + pattern02_d + pattern03_d +
|
343 |
|
|
pattern04_d + pattern05_d + pattern06_d + pattern07_d +
|
344 |
|
|
pattern08_d + pattern09_d + pattern10_d + pattern11_d +
|
345 |
|
|
pattern12_d + pattern13_d + pattern14_d + pattern15_d +
|
346 |
|
|
pattern16_d + pattern17_d + pattern18_d + pattern19_d +
|
347 |
|
|
pattern20_d + pattern21_d + pattern22_d + pattern23_d +
|
348 |
|
|
pattern24_d + pattern25_d + pattern26_d + pattern27_d +
|
349 |
|
|
pattern28_d + pattern29_d + pattern30_d + pattern31_d +
|
350 |
|
|
pattern32_d + pattern33_d + pattern34_d + pattern35_d +
|
351 |
|
|
pattern36_d + pattern37_d + pattern38_d + pattern39_d +
|
352 |
|
|
pattern40_d + pattern41_d + pattern42_d + pattern43_d +
|
353 |
|
|
pattern44_d + pattern45_d + pattern46_d + pattern47_d) * 16;
|
354 |
|
|
|
355 |
|
|
*/
|
356 |
|
|
|
357 |
|
|
end
|
358 |
|
|
|
359 |
|
|
always @(posedge clk) begin
|
360 |
|
|
if ( RST ) begin
|
361 |
|
|
value_q <= 20'b0;
|
362 |
|
|
end
|
363 |
|
|
else begin
|
364 |
|
|
value_q <= value_d;
|
365 |
|
|
end
|
366 |
|
|
end
|
367 |
|
|
|
368 |
|
|
assign value = value_q;
|
369 |
|
|
|
370 |
|
|
endmodule
|