| // 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 |