blob: 1f49cb490847d8b23bc7cb32588cba609d0fac4b [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// SECDED Encoder generated by
// util/design/secded_gen.py -s 1592631616 from util/design/data/secded_cfg.hjson
package prim_secded_pkg;
function automatic logic [21:0] prim_secded_22_16_enc (logic [15:0] in);
logic [21:0] out;
out = 22'(in);
out[16] = ^(out & 22'h009F41);
out[17] = ^(out & 22'h007A34);
out[18] = ^(out & 22'h0029CD);
out[19] = ^(out & 22'h00C0AF);
out[20] = ^(out & 22'h0074D2);
out[21] = ^(out & 22'h00873A);
return out;
endfunction
function automatic logic [27:0] prim_secded_28_22_enc (logic [21:0] in);
logic [27:0] out;
out = 28'(in);
out[22] = ^(out & 28'h03003FF);
out[23] = ^(out & 28'h010FC0F);
out[24] = ^(out & 28'h0371C71);
out[25] = ^(out & 28'h03B6592);
out[26] = ^(out & 28'h03DAAA4);
out[27] = ^(out & 28'h02ED348);
return out;
endfunction
function automatic logic [38:0] prim_secded_39_32_enc (logic [31:0] in);
logic [38:0] out;
out = 39'(in);
out[32] = ^(out & 39'h00850E56A2);
out[33] = ^(out & 39'h002E534C61);
out[34] = ^(out & 39'h000901A9FE);
out[35] = ^(out & 39'h007079A702);
out[36] = ^(out & 39'h00CABA900D);
out[37] = ^(out & 39'h00D3C44B18);
out[38] = ^(out & 39'h0034A430D5);
return out;
endfunction
function automatic logic [63:0] prim_secded_64_57_enc (logic [56:0] in);
logic [63:0] out;
out = 64'(in);
out[57] = ^(out & 64'h0103FFF800007FFF);
out[58] = ^(out & 64'h017C1FF801FF801F);
out[59] = ^(out & 64'h01BDE1F87E0781E1);
out[60] = ^(out & 64'h01DEEE3B8E388E22);
out[61] = ^(out & 64'h01EF76CDB2C93244);
out[62] = ^(out & 64'h01F7BB56D5525488);
out[63] = ^(out & 64'h01FBDDA769A46910);
return out;
endfunction
function automatic logic [71:0] prim_secded_72_64_enc (logic [63:0] in);
logic [71:0] out;
out = 72'(in);
out[64] = ^(out & 72'h009D000000001FFFFF);
out[65] = ^(out & 72'h007600000FFFE0003F);
out[66] = ^(out & 72'h0079003FF003E007C1);
out[67] = ^(out & 72'h00A70FC0F03C207842);
out[68] = ^(out & 72'h00D371C711C4438884);
out[69] = ^(out & 72'h00F8B65926488C9108);
out[70] = ^(out & 72'h00AEDAAA4A91152210);
out[71] = ^(out & 72'h004FED348D221A4420);
return out;
endfunction
function automatic logic [21:0] prim_secded_hamming_22_16_enc (logic [15:0] in);
logic [21:0] out;
out = 22'(in);
out[16] = ^(out & 22'h00AD5B);
out[17] = ^(out & 22'h00366D);
out[18] = ^(out & 22'h00C78E);
out[19] = ^(out & 22'h0007F0);
out[20] = ^(out & 22'h00F800);
out[21] = ^(out & 22'h1FFFFF);
return out;
endfunction
function automatic logic [38:0] prim_secded_hamming_39_32_enc (logic [31:0] in);
logic [38:0] out;
out = 39'(in);
out[32] = ^(out & 39'h0056AAAD5B);
out[33] = ^(out & 39'h009B33366D);
out[34] = ^(out & 39'h00E3C3C78E);
out[35] = ^(out & 39'h0003FC07F0);
out[36] = ^(out & 39'h0003FFF800);
out[37] = ^(out & 39'h00FC000000);
out[38] = ^(out & 39'h3FFFFFFFFF);
return out;
endfunction
function automatic logic [71:0] prim_secded_hamming_72_64_enc (logic [63:0] in);
logic [71:0] out;
out = 72'(in);
out[64] = ^(out & 72'h00AB55555556AAAD5B);
out[65] = ^(out & 72'h00CD9999999B33366D);
out[66] = ^(out & 72'h00F1E1E1E1E3C3C78E);
out[67] = ^(out & 72'h0001FE01FE03FC07F0);
out[68] = ^(out & 72'h0001FFFE0003FFF800);
out[69] = ^(out & 72'h0001FFFFFFFC000000);
out[70] = ^(out & 72'h00FE00000000000000);
out[71] = ^(out & 72'h7FFFFFFFFFFFFFFFFF);
return out;
endfunction
endpackage