Select Git revision
MultipleInitialStates.html
DA_LUT.sv 697.46 KiB
package DA_LUT;
parameter N = 16;
parameter BW = 16;
function int clog2(input int n);
begin
clog2 = 0;
n--;
while(n > 0)
begin
clog2++;
n >>= 1;
end
end
endfunction
/*
- The input to the LUT is an N Bit input vector (hence 2^N - 1 possible inputs)
- The maximum value of the output would be N*(2^BW-1) assuming a BW sized coefficients and an input vector of all 1's
- Hence, this required log2(N*(2^BW-1))+1 bits to store = log2(N) + log2(2^BW-1) + 1 = (BW) + log2(N)
- In reality, I have chosen to just use (N+8) bits for the size of the multiplication_coefficients as this matches the size of partial_sum
*/
const logic signed [(N-1)+8:0] multiplication_coefficients [0:2**N-1] = '{
24'd0, -24'd79, -24'd136, -24'd215, 24'd312, 24'd233, 24'd176, 24'd97, 24'd654,
24'd575, 24'd518, 24'd439, 24'd966, 24'd887, 24'd830, 24'd751, -24'd1244,
-24'd1323, -24'd1380, -24'd1459, -24'd932, -24'd1011, -24'd1068, -24'd1147, -24'd590,
-24'd669, -24'd726, -24'd805, -24'd278, -24'd357, -24'd414, -24'd493, -24'd2280,
-24'd2359, -24'd2416, -24'd2495, -24'd1968, -24'd2047, -24'd2104, -24'd2183, -24'd1626,
-24'd1705, -24'd1762, -24'd1841, -24'd1314, -24'd1393, -24'd1450, -24'd1529, -24'd3524,
-24'd3603, -24'd3660, -24'd3739, -24'd3212, -24'd3291, -24'd3348, -24'd3427, -24'd2870,
-24'd2949, -24'd3006, -24'd3085, -24'd2558, -24'd2637, -24'd2694, -24'd2773, 24'd4501,
24'd4422, 24'd4365, 24'd4286, 24'd4813, 24'd4734, 24'd4677, 24'd4598, 24'd5155,
24'd5076, 24'd5019, 24'd4940, 24'd5467, 24'd5388, 24'd5331, 24'd5252, 24'd3257,
24'd3178, 24'd3121, 24'd3042, 24'd3569, 24'd3490, 24'd3433, 24'd3354, 24'd3911,
24'd3832, 24'd3775, 24'd3696, 24'd4223, 24'd4144, 24'd4087, 24'd4008, 24'd2221,
24'd2142, 24'd2085, 24'd2006, 24'd2533, 24'd2454, 24'd2397, 24'd2318, 24'd2875,
24'd2796, 24'd2739, 24'd2660, 24'd3187, 24'd3108, 24'd3051, 24'd2972, 24'd977,
24'd898, 24'd841, 24'd762, 24'd1289, 24'd1210, 24'd1153, 24'd1074, 24'd1631,
24'd1552, 24'd1495, 24'd1416, 24'd1943, 24'd1864, 24'd1807, 24'd1728, 24'd14655,
24'd14576, 24'd14519, 24'd14440, 24'd14967, 24'd14888, 24'd14831, 24'd14752, 24'd15309,
24'd15230, 24'd15173, 24'd15094, 24'd15621, 24'd15542, 24'd15485, 24'd15406, 24'd13411,
24'd13332, 24'd13275, 24'd13196, 24'd13723, 24'd13644, 24'd13587, 24'd13508, 24'd14065,
24'd13986, 24'd13929, 24'd13850, 24'd14377, 24'd14298, 24'd14241, 24'd14162, 24'd12375,
24'd12296, 24'd12239, 24'd12160, 24'd12687, 24'd12608, 24'd12551, 24'd12472, 24'd13029,
24'd12950, 24'd12893, 24'd12814, 24'd13341, 24'd13262, 24'd13205, 24'd13126, 24'd11131,
24'd11052, 24'd10995, 24'd10916, 24'd11443, 24'd11364, 24'd11307, 24'd11228, 24'd11785,
24'd11706, 24'd11649, 24'd11570, 24'd12097, 24'd12018, 24'd11961, 24'd11882, 24'd19156,
24'd19077, 24'd19020, 24'd18941, 24'd19468, 24'd19389, 24'd19332, 24'd19253, 24'd19810,
24'd19731, 24'd19674, 24'd19595, 24'd20122, 24'd20043, 24'd19986, 24'd19907, 24'd17912,
24'd17833, 24'd17776, 24'd17697, 24'd18224, 24'd18145, 24'd18088, 24'd18009, 24'd18566,
24'd18487, 24'd18430, 24'd18351, 24'd18878, 24'd18799, 24'd18742, 24'd18663, 24'd16876,
24'd16797, 24'd16740, 24'd16661, 24'd17188, 24'd17109, 24'd17052, 24'd16973, 24'd17530,
24'd17451, 24'd17394, 24'd17315, 24'd17842, 24'd17763, 24'd17706, 24'd17627, 24'd15632,
24'd15553, 24'd15496, 24'd15417, 24'd15944, 24'd15865, 24'd15808, 24'd15729, 24'd16286,
24'd16207, 24'd16150, 24'd16071, 24'd16598, 24'd16519, 24'd16462, 24'd16383, 24'd14655,
24'd14576, 24'd14519, 24'd14440, 24'd14967, 24'd14888, 24'd14831, 24'd14752, 24'd15309,
24'd15230, 24'd15173, 24'd15094, 24'd15621, 24'd15542, 24'd15485, 24'd15406, 24'd13411,
24'd13332, 24'd13275, 24'd13196, 24'd13723, 24'd13644, 24'd13587, 24'd13508, 24'd14065,
24'd13986, 24'd13929, 24'd13850, 24'd14377, 24'd14298, 24'd14241, 24'd14162, 24'd12375,
24'd12296, 24'd12239, 24'd12160, 24'd12687, 24'd12608, 24'd12551, 24'd12472, 24'd13029,
24'd12950, 24'd12893, 24'd12814, 24'd13341, 24'd13262, 24'd13205, 24'd13126, 24'd11131,
24'd11052, 24'd10995, 24'd10916, 24'd11443, 24'd11364, 24'd11307, 24'd11228, 24'd11785,
24'd11706, 24'd11649, 24'd11570, 24'd12097, 24'd12018, 24'd11961, 24'd11882, 24'd19156,
24'd19077, 24'd19020, 24'd18941, 24'd19468, 24'd19389, 24'd19332, 24'd19253, 24'd19810,
24'd19731, 24'd19674, 24'd19595, 24'd20122, 24'd20043, 24'd19986, 24'd19907, 24'd17912,
24'd17833, 24'd17776, 24'd17697, 24'd18224, 24'd18145, 24'd18088, 24'd18009, 24'd18566,
24'd18487, 24'd18430, 24'd18351, 24'd18878, 24'd18799, 24'd18742, 24'd18663, 24'd16876,
24'd16797, 24'd16740, 24'd16661, 24'd17188, 24'd17109, 24'd17052, 24'd16973, 24'd17530,
24'd17451, 24'd17394, 24'd17315, 24'd17842, 24'd17763, 24'd17706, 24'd17627, 24'd15632,