Add test_data.py (cocotb Python module) and test_vectors.h (C header) with 20 test vectors from the Python behavioral model. LLR data is packed 5 per 32-bit word matching the wishbone interface format. 11 converged vectors for positive testing, 9 non-converged for negative testing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
501 lines
21 KiB
C
501 lines
21 KiB
C
/*
|
|
* Auto-generated test vectors for LDPC decoder firmware
|
|
* Generated by model/gen_firmware_vectors.py
|
|
*
|
|
* LLR packing: 5 LLRs per 32-bit word, 6 bits each (two's complement)
|
|
* Word bits [5:0] = LLR[5*i+0]
|
|
* Word bits [11:6] = LLR[5*i+1]
|
|
* Word bits [17:12] = LLR[5*i+2]
|
|
* Word bits [23:18] = LLR[5*i+3]
|
|
* Word bits [29:24] = LLR[5*i+4]
|
|
*/
|
|
|
|
#ifndef TEST_VECTORS_H
|
|
#define TEST_VECTORS_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define NUM_TEST_VECTORS 20
|
|
#define LLR_WORDS_PER_VECTOR 52
|
|
|
|
/* Vector 0: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv0_llr[52] = {
|
|
0x1F7DF81F, 0x20C9F7E0, 0x207CC7DF, 0x1F82081F,
|
|
0x328207E0, 0x20820820, 0x208207CC, 0x1F81F7DF,
|
|
0x1F7F27DF, 0x1F7CC81F, 0x0C81F81F, 0x207E07F2,
|
|
0x1F820820, 0x207DF7CC, 0x1F81F7E0, 0x2082081F,
|
|
0x0C31F81F, 0x2081F7DF, 0x1FCA081F, 0x20820820,
|
|
0x1F7DF7DF, 0x207E07E0, 0x208207CC, 0x1F8207DF,
|
|
0x0C7DF7DF, 0x2030C820, 0x207DF7E0, 0x1F82081F,
|
|
0x203207DF, 0x20832820, 0x2081F820, 0x20820832,
|
|
0x1F82081F, 0x207E081F, 0x207DF820, 0x1F7E0320,
|
|
0x1F7E07E0, 0x1F81F820, 0x20CA07CC, 0x0C81F7E0,
|
|
0x1F820820, 0x1FCA07DF, 0x1F7E080C, 0x208207F2,
|
|
0x207E081F, 0x20820820, 0x207E07DF, 0x2082081F,
|
|
0x1F7E07DF, 0x1F7DF7E0, 0x207DF820, 0x00000020
|
|
};
|
|
static const uint32_t tv0_decoded = 0x3FD74222;
|
|
static const int tv0_converged = 1;
|
|
static const int tv0_iterations = 1;
|
|
static const int tv0_syndrome_weight = 0;
|
|
|
|
/* Vector 1: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv1_llr[52] = {
|
|
0x1F8207F2, 0x207DF820, 0x2081F7DF, 0x1F81F81F,
|
|
0x2081F81F, 0x1F7E07DF, 0x1F7E031F, 0x207DF7DF,
|
|
0x1F8207E0, 0x1F7DF81F, 0x1F81F820, 0x1F81F7E0,
|
|
0x1F7DF820, 0x1F82081F, 0x207E07DF, 0x207E0820,
|
|
0x207E07DF, 0x2080C7DF, 0x2081F81F, 0x207DF30C,
|
|
0x2081F31F, 0x207E081F, 0x1F7DF30C, 0x208207DF,
|
|
0x1F81F7E0, 0x207E07DF, 0x1F7E07DF, 0x0C82081F,
|
|
0x1F81F7E0, 0x1F7DFC9F, 0x2082081F, 0x1F7E07DF,
|
|
0x207DF7DF, 0x208207DF, 0x207E0320, 0x327DF81F,
|
|
0x2082030C, 0x1F820820, 0x0CC9F7E0, 0x1F8207DF,
|
|
0x1F7E07DF, 0x2081F820, 0x1F7E0820, 0x1F81F320,
|
|
0x207E081F, 0x2081F81F, 0x1F81F7E0, 0x1F7DF820,
|
|
0x2081F81F, 0x1F81F7E0, 0x20820820, 0x00000020
|
|
};
|
|
static const uint32_t tv1_decoded = 0x09A5626C;
|
|
static const int tv1_converged = 1;
|
|
static const int tv1_iterations = 1;
|
|
static const int tv1_syndrome_weight = 0;
|
|
|
|
/* Vector 2: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv2_llr[52] = {
|
|
0x2082030C, 0x1F820820, 0x1F81F7E0, 0x2080C7DF,
|
|
0x20832820, 0x207E0820, 0x327E031F, 0x207DF7CC,
|
|
0x20820C8C, 0x1F7F27F2, 0x1F7DF7E0, 0x20832820,
|
|
0x1F820820, 0x3281F81F, 0x1F30C7E0, 0x1F8207E0,
|
|
0x207E07E0, 0x1F7DF820, 0x0C7DF7DF, 0x20CA07DF,
|
|
0x207DF81F, 0x2082081F, 0x1F81F820, 0x20820CA0,
|
|
0x2081F81F, 0x1F7E0820, 0x1F81F81F, 0x20820820,
|
|
0x1F7DF81F, 0x20CA081F, 0x1F7E07DF, 0x1F7DF81F,
|
|
0x1F7E080C, 0x1F82080C, 0x0C81F820, 0x1F81F7DF,
|
|
0x1F7CC7E0, 0x328207E0, 0x1F81F820, 0x2081F7DF,
|
|
0x1F7E0CA0, 0x1F81F820, 0x2081F81F, 0x20820820,
|
|
0x2081F31F, 0x1F81F820, 0x1F7E081F, 0x0C7E081F,
|
|
0x1F7E07E0, 0x1F82081F, 0x2081F7DF, 0x00000020
|
|
};
|
|
static const uint32_t tv2_decoded = 0x2FFC25FC;
|
|
static const int tv2_converged = 1;
|
|
static const int tv2_iterations = 1;
|
|
static const int tv2_syndrome_weight = 0;
|
|
|
|
/* Vector 3: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv3_llr[52] = {
|
|
0x1F81F820, 0x1F81F7DF, 0x208207E0, 0x327E0820,
|
|
0x2081F81F, 0x1F82081F, 0x1F8207E0, 0x1FCA07E0,
|
|
0x1F7DF7E0, 0x207E07E0, 0x20820820, 0x0C81F81F,
|
|
0x2081F820, 0x1F81F7E0, 0x1F7E07E0, 0x1F8207DF,
|
|
0x1F7E031F, 0x1F82081F, 0x207E07E0, 0x1F820820,
|
|
0x1F7DF7E0, 0x207DF820, 0x1F81F7CC, 0x1F7E07E0,
|
|
0x208207E0, 0x207DF81F, 0x2081F81F, 0x20820820,
|
|
0x1F820820, 0x1F81F7DF, 0x203207E0, 0x1F8207DF,
|
|
0x0C7DF7DF, 0x1F7E07E0, 0x2081F7E0, 0x1F7E07E0,
|
|
0x1F81F81F, 0x2081F7E0, 0x1F7DF820, 0x2081F820,
|
|
0x1F7F281F, 0x2081F7E0, 0x207DF7E0, 0x207E07E0,
|
|
0x1F31F820, 0x1F7E07E0, 0x1F7DF7E0, 0x207DF820,
|
|
0x1F7DF31F, 0x1F31F7E0, 0x208207DF, 0x00000020
|
|
};
|
|
static const uint32_t tv3_decoded = 0x5DABF50B;
|
|
static const int tv3_converged = 1;
|
|
static const int tv3_iterations = 1;
|
|
static const int tv3_syndrome_weight = 0;
|
|
|
|
/* Vector 4: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv4_llr[52] = {
|
|
0x207DF820, 0x207DF7E0, 0x2081F81F, 0x207DF7E0,
|
|
0x208207E0, 0x1F7DFC9F, 0x1F7DF7DF, 0x1F82031F,
|
|
0x1F7E081F, 0x1F81F81F, 0x1F7E0820, 0x207E081F,
|
|
0x2081F820, 0x1F81F7DF, 0x1F820820, 0x1F7DF81F,
|
|
0x1F7CC820, 0x1F81F31F, 0x207E07DF, 0x207E081F,
|
|
0x1F8207CC, 0x1F7CC31F, 0x1F82081F, 0x207F2820,
|
|
0x207E0820, 0x2082081F, 0x207E07E0, 0x207E0820,
|
|
0x1F8207E0, 0x1F7E07E0, 0x2082081F, 0x207DF81F,
|
|
0x1F31F7E0, 0x2081F820, 0x1F81F7DF, 0x2081F820,
|
|
0x2081F820, 0x2081F81F, 0x207DF7E0, 0x20820820,
|
|
0x1F81F7E0, 0x207E07E0, 0x2081F81F, 0x208207DF,
|
|
0x0C81F820, 0x1F7E081F, 0x2082081F, 0x207E0820,
|
|
0x207E0820, 0x1F81F81F, 0x2080C7E0, 0x0000001F
|
|
};
|
|
static const uint32_t tv4_decoded = 0x05D8EA33;
|
|
static const int tv4_converged = 1;
|
|
static const int tv4_iterations = 1;
|
|
static const int tv4_syndrome_weight = 0;
|
|
|
|
/* Vector 5: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv5_llr[52] = {
|
|
0x327DF820, 0x1F7DF820, 0x1F3207E0, 0x2082081F,
|
|
0x2081FC9F, 0x1F8207DF, 0x1F8207DF, 0x0C8207DF,
|
|
0x1F82081F, 0x207E07DF, 0x2081F7DF, 0x1F81F820,
|
|
0x0C31F820, 0x207E0820, 0x207DF7DF, 0x1F82031F,
|
|
0x20820820, 0x1F7E0C8C, 0x20C9F81F, 0x20820820,
|
|
0x1F7DF7E0, 0x2081F7E0, 0x1F7CC7DF, 0x208207E0,
|
|
0x207E0820, 0x2032081F, 0x208207DF, 0x207DF81F,
|
|
0x1F7E07E0, 0x1F81F820, 0x2081F820, 0x3281F30C,
|
|
0x1F7DF81F, 0x207DFC8C, 0x2083281F, 0x1F8207E0,
|
|
0x1F7E07E0, 0x0C7DF820, 0x207E07DF, 0x2031F320,
|
|
0x1F7DF820, 0x1F32081F, 0x207DF81F, 0x207DF7DF,
|
|
0x1F7E07DF, 0x1F81F31F, 0x1F7DF81F, 0x1F81F80C,
|
|
0x208207E0, 0x1F81F7CC, 0x0C81FC9F, 0x00000020
|
|
};
|
|
static const uint32_t tv5_decoded = 0x19AF1473;
|
|
static const int tv5_converged = 1;
|
|
static const int tv5_iterations = 1;
|
|
static const int tv5_syndrome_weight = 0;
|
|
|
|
/* Vector 6: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv6_llr[52] = {
|
|
0x2031FCA0, 0x1F83281F, 0x1F81F7E0, 0x207DF81F,
|
|
0x1F8207E0, 0x2081F81F, 0x2081F7DF, 0x1F82031F,
|
|
0x2081F81F, 0x1F7E07E0, 0x1F81F7E0, 0x207E081F,
|
|
0x0C81F7E0, 0x207E07DF, 0x207DF7E0, 0x1F7DF7E0,
|
|
0x1F7DF81F, 0x1F81F7CC, 0x2081FC9F, 0x1F81F31F,
|
|
0x1F7E0820, 0x1F820820, 0x1F82081F, 0x1F7E0820,
|
|
0x1F31F81F, 0x1F81F81F, 0x1F8207F2, 0x1F820820,
|
|
0x2081F820, 0x207E07DF, 0x1F7E0820, 0x1F81F7DF,
|
|
0x1F7E07DF, 0x207E07E0, 0x1F31F7E0, 0x20820820,
|
|
0x1F7DF820, 0x1F80C7DF, 0x0C81F81F, 0x2082081F,
|
|
0x207E081F, 0x1F7CC820, 0x2032081F, 0x2031F81F,
|
|
0x1F7E0820, 0x2081F820, 0x1F7E07E0, 0x207DF7DF,
|
|
0x1F81F81F, 0x2081F7E0, 0x1F7E081F, 0x0000001F
|
|
};
|
|
static const uint32_t tv6_decoded = 0x34D925D3;
|
|
static const int tv6_converged = 1;
|
|
static const int tv6_iterations = 1;
|
|
static const int tv6_syndrome_weight = 0;
|
|
|
|
/* Vector 7: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv7_llr[52] = {
|
|
0x207CC7DF, 0x2031F81F, 0x2081F7E0, 0x0C7DF820,
|
|
0x208207DF, 0x1F7DF81F, 0x0C7DF7E0, 0x1F7DF7E0,
|
|
0x1F81F81F, 0x1F7E081F, 0x1F820820, 0x207DF7DF,
|
|
0x2081F820, 0x3282081F, 0x1F7E07E0, 0x1F7E07DF,
|
|
0x1F820820, 0x1F81F31F, 0x207E0832, 0x0C7E07E0,
|
|
0x1F81F81F, 0x0CCA081F, 0x1FC8C7DF, 0x207DF81F,
|
|
0x1F81F7DF, 0x207CC7DF, 0x1F7E081F, 0x1F81F7DF,
|
|
0x1F82081F, 0x1F82081F, 0x2081F820, 0x1F8207DF,
|
|
0x2081F7E0, 0x2030C81F, 0x20820820, 0x1F81F7DF,
|
|
0x1F81F31F, 0x2080C7E0, 0x1F32081F, 0x1F7DF81F,
|
|
0x207DF7DF, 0x20C9F31F, 0x1F7DF7E0, 0x208207E0,
|
|
0x327E07DF, 0x1F81F81F, 0x1F7DF820, 0x2081F7DF,
|
|
0x1F8207DF, 0x1F81F7E0, 0x1F8207E0, 0x00000020
|
|
};
|
|
static const uint32_t tv7_decoded = 0x45C1E650;
|
|
static const int tv7_converged = 1;
|
|
static const int tv7_iterations = 1;
|
|
static const int tv7_syndrome_weight = 0;
|
|
|
|
/* Vector 8: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv8_llr[52] = {
|
|
0x1F81F7E0, 0x1F81F81F, 0x20820820, 0x203207DF,
|
|
0x1F8207DF, 0x207CC81F, 0x207DF81F, 0x1F7E081F,
|
|
0x1F81F7E0, 0x208207E0, 0x207DF820, 0x207DF81F,
|
|
0x2081F7E0, 0x207F27DF, 0x2031F7E0, 0x1F8207E0,
|
|
0x208207E0, 0x207DF7CC, 0x1F82081F, 0x2081F81F,
|
|
0x1F81F820, 0x207E07DF, 0x1F7DF820, 0x2081F81F,
|
|
0x1F8207DF, 0x207E0820, 0x207DF820, 0x1F81F820,
|
|
0x20820820, 0x0C81F81F, 0x1F7E07DF, 0x2081F80C,
|
|
0x1F820832, 0x1F7DF820, 0x1F8207CC, 0x207E07DF,
|
|
0x1F82080C, 0x1F8207DF, 0x207E080C, 0x1FCA07DF,
|
|
0x2081F7DF, 0x1F81F820, 0x1F7DF31F, 0x1F7DF820,
|
|
0x1F7E07DF, 0x2081F81F, 0x207E0820, 0x0C7DF81F,
|
|
0x207DF7DF, 0x2082081F, 0x1F81F7E0, 0x0000001F
|
|
};
|
|
static const uint32_t tv8_decoded = 0xA4CA7D49;
|
|
static const int tv8_converged = 1;
|
|
static const int tv8_iterations = 1;
|
|
static const int tv8_syndrome_weight = 0;
|
|
|
|
/* Vector 9: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv9_llr[52] = {
|
|
0x1F30C7DF, 0x208207DF, 0x2081F81F, 0x207DF820,
|
|
0x1F7E07DF, 0x1FCA07DF, 0x1F820820, 0x1F31F820,
|
|
0x207DF7DF, 0x1F81F820, 0x1F820820, 0x207DF80C,
|
|
0x1F7DF7DF, 0x20820820, 0x208327DF, 0x203207DF,
|
|
0x32CA07DF, 0x1F81F7E0, 0x1F7E07DF, 0x207E07CC,
|
|
0x207E081F, 0x1F81F81F, 0x1F81F7DF, 0x328327DF,
|
|
0x0C81F7E0, 0x1F7F27DF, 0x1F81F7DF, 0x208207E0,
|
|
0x207E07DF, 0x1F7DF7E0, 0x1F7DF81F, 0x1F320832,
|
|
0x207E081F, 0x2081F7DF, 0x207E080C, 0x207E081F,
|
|
0x20C9F320, 0x207E07E0, 0x207E081F, 0x1F7E07DF,
|
|
0x207E081F, 0x1F7E07E0, 0x1F81F7E0, 0x1F8207E0,
|
|
0x0C8207E0, 0x20820820, 0x1F7DF81F, 0x1F81F7E0,
|
|
0x1F7E0320, 0x1F81F320, 0x2081F820, 0x0000001F
|
|
};
|
|
static const uint32_t tv9_decoded = 0xD849EB80;
|
|
static const int tv9_converged = 1;
|
|
static const int tv9_iterations = 1;
|
|
static const int tv9_syndrome_weight = 0;
|
|
|
|
/* Vector 10: converged=True, iterations=1, syndrome_weight=0, bit_errors=0 */
|
|
static const uint32_t tv10_llr[52] = {
|
|
0x0C30C30C, 0x0C30C80C, 0x0C30CEBA, 0x0C32733A,
|
|
0x279E030C, 0x0C820320, 0x0C32780C, 0x0C30C30C,
|
|
0x0CE8CEBA, 0x3A9CC80C, 0x3A32030C, 0x2030C9FA,
|
|
0x203209CC, 0x0C80C30C, 0x3A30C320, 0x0C30CE8C,
|
|
0x209CC320, 0x209CC327, 0x0C30C320, 0x3A9CCE8C,
|
|
0x2080C30C, 0x27820EA7, 0x2083A30C, 0x0C9FA33A,
|
|
0x0CEA0EA0, 0x20327EBA, 0x2030C320, 0x2732730C,
|
|
0x3A820EA0, 0x0C9FA320, 0x0C9FA30C, 0x0C80C320,
|
|
0x0CEBA9FA, 0x2780CEBA, 0x0C3209E0, 0x3AE8CE8C,
|
|
0x2030C320, 0x2030CE8C, 0x0C30CE8C, 0x2730C327,
|
|
0x0C30C30C, 0x0C327327, 0x209E730C, 0x27E8C80C,
|
|
0x0CE8C30C, 0x209E030C, 0x3A30C320, 0x0C32730C,
|
|
0x0C30CE8C, 0x2030C320, 0x0C32780C, 0x0000000C
|
|
};
|
|
static const uint32_t tv10_decoded = 0x9BCA9A40;
|
|
static const int tv10_converged = 1;
|
|
static const int tv10_iterations = 1;
|
|
static const int tv10_syndrome_weight = 0;
|
|
|
|
/* Vector 11: converged=False, iterations=30, syndrome_weight=67, bit_errors=20 */
|
|
static const uint32_t tv11_llr[52] = {
|
|
0x0C30C80C, 0x0C30C30C, 0x2730C820, 0x0C80C30C,
|
|
0x0C32730C, 0x0C30C9E7, 0x0CE8C33A, 0x0C9CC320,
|
|
0x2032030C, 0x0C32030C, 0x0C30C9E0, 0x209CC320,
|
|
0x0C9E730C, 0x0C33A9CC, 0x3A80C30C, 0x0C30C80C,
|
|
0x279CC320, 0x0CEA080C, 0x0C30C9CC, 0x279E0320,
|
|
0x2730C30C, 0x0CE8C30C, 0x0C80C9CC, 0x0C9CC30C,
|
|
0x3AE8CEA0, 0x20E8C320, 0x0C33A80C, 0x0CEBA33A,
|
|
0x0C30C9CC, 0x27EA0E8C, 0x0C30CEBA, 0x0CE8C30C,
|
|
0x0CEA7EA7, 0x0C30C30C, 0x0C83A327, 0x0CEBA30C,
|
|
0x0C83AEA0, 0x2033A80C, 0x0C80C30C, 0x0C30C30C,
|
|
0x0C82730C, 0x3A30C33A, 0x3A820E8C, 0x0C30C320,
|
|
0x0C30C9E7, 0x279CC320, 0x2080C30C, 0x27320327,
|
|
0x3A32083A, 0x0C33A80C, 0x0C9CC30C, 0x0000000C
|
|
};
|
|
static const uint32_t tv11_decoded = 0x79FFC352;
|
|
static const int tv11_converged = 0;
|
|
static const int tv11_iterations = 30;
|
|
static const int tv11_syndrome_weight = 67;
|
|
|
|
/* Vector 12: converged=False, iterations=30, syndrome_weight=59, bit_errors=13 */
|
|
static const uint32_t tv12_llr[52] = {
|
|
0x3A82030C, 0x0CE8C827, 0x2083A327, 0x2780C827,
|
|
0x2730C320, 0x0C3279FA, 0x2730C30C, 0x2030C83A,
|
|
0x279E09E7, 0x3A320320, 0x0CEA7EBA, 0x20320327,
|
|
0x0CE8C9CC, 0x0C30C80C, 0x0CE8C33A, 0x0C9CC9E0,
|
|
0x0C30C80C, 0x2033A320, 0x0C32780C, 0x0C30C30C,
|
|
0x0C33AEBA, 0x0C80C327, 0x0CEA79CC, 0x0C30C320,
|
|
0x0C30CEA7, 0x2033A820, 0x0C30C327, 0x2080CE8C,
|
|
0x0C32080C, 0x3A82030C, 0x0C30C30C, 0x0C327320,
|
|
0x0C80C30C, 0x20EA730C, 0x27E8C80C, 0x3AEA7E8C,
|
|
0x2733AE8C, 0x0CE8C80C, 0x2730C33A, 0x3AE8C30C,
|
|
0x279CCE8C, 0x0C33AE8C, 0x0C3209E0, 0x0C30C30C,
|
|
0x0C30C80C, 0x2780C327, 0x0C320EA0, 0x0C33AEA0,
|
|
0x0C9E79E0, 0x2030CEA0, 0x2033AE8C, 0x00000020
|
|
};
|
|
static const uint32_t tv12_decoded = 0x5D2534DC;
|
|
static const int tv12_converged = 0;
|
|
static const int tv12_iterations = 30;
|
|
static const int tv12_syndrome_weight = 59;
|
|
|
|
/* Vector 13: converged=False, iterations=30, syndrome_weight=61, bit_errors=19 */
|
|
static const uint32_t tv13_llr[52] = {
|
|
0x0CE8C80C, 0x2032730C, 0x0CE8CE8C, 0x3A30C9FA,
|
|
0x209CC820, 0x0C80CE8C, 0x3A9CC30C, 0x0CE8C30C,
|
|
0x2730CEA7, 0x0C30C80C, 0x2783A30C, 0x0C320EBA,
|
|
0x2030C33A, 0x0CEA080C, 0x20EA730C, 0x0C30C9E0,
|
|
0x0C30C30C, 0x0C827320, 0x0C33A33A, 0x0CEA730C,
|
|
0x3A9E09FA, 0x0CE8C327, 0x0C9CC33A, 0x0C80CEA7,
|
|
0x0CEA7EA0, 0x0C8209FA, 0x3A3209CC, 0x20327327,
|
|
0x0C30CE8C, 0x2030C320, 0x3A30C327, 0x0CEA030C,
|
|
0x3A9E0E8C, 0x0CEA0E8C, 0x3AE8C80C, 0x0C9E730C,
|
|
0x0C30C30C, 0x2032030C, 0x0C320820, 0x0C33A30C,
|
|
0x27E8CEBA, 0x20EA730C, 0x0C30C30C, 0x3A30C820,
|
|
0x3A32730C, 0x0C80CEA0, 0x0C82780C, 0x20EA0320,
|
|
0x0C32033A, 0x2030C30C, 0x27320EA0, 0x0000003A
|
|
};
|
|
static const uint32_t tv13_decoded = 0xF21718ED;
|
|
static const int tv13_converged = 0;
|
|
static const int tv13_iterations = 30;
|
|
static const int tv13_syndrome_weight = 61;
|
|
|
|
/* Vector 14: converged=False, iterations=30, syndrome_weight=65, bit_errors=17 */
|
|
static const uint32_t tv14_llr[52] = {
|
|
0x0CEA0327, 0x0C80CEBA, 0x209CC327, 0x0C30C33A,
|
|
0x0C30C30C, 0x0C9CC83A, 0x0C9CC80C, 0x3A32730C,
|
|
0x0C9CC30C, 0x0C32033A, 0x0C3209FA, 0x0C82730C,
|
|
0x0CEA0E8C, 0x2732730C, 0x0C30C30C, 0x3AE8CEBA,
|
|
0x3A30C33A, 0x0C80C9E7, 0x20E8CE8C, 0x2783A327,
|
|
0x2083A320, 0x2732030C, 0x2730C30C, 0x0C80C30C,
|
|
0x3A327327, 0x0C80C327, 0x0C30CEA7, 0x0C30CE8C,
|
|
0x0C80C80C, 0x3A820327, 0x3A30C30C, 0x0CE8C320,
|
|
0x3AE8C80C, 0x209FA80C, 0x0C30C320, 0x0C30C33A,
|
|
0x2080C80C, 0x0C30C33A, 0x3A9E09E0, 0x0C9CC320,
|
|
0x3A30C320, 0x0C83A9FA, 0x0C30C30C, 0x0C30C827,
|
|
0x0C327E8C, 0x2730C80C, 0x0C80C30C, 0x3A30C30C,
|
|
0x0CE8C33A, 0x0C9E0E8C, 0x0C30C327, 0x0000000C
|
|
};
|
|
static const uint32_t tv14_decoded = 0x7FE0197C;
|
|
static const int tv14_converged = 0;
|
|
static const int tv14_iterations = 30;
|
|
static const int tv14_syndrome_weight = 65;
|
|
|
|
/* Vector 15: converged=False, iterations=30, syndrome_weight=75, bit_errors=16 */
|
|
static const uint32_t tv15_llr[52] = {
|
|
0x2780C30C, 0x27827E8C, 0x0C30CE8C, 0x0C32783A,
|
|
0x3A80C320, 0x0C30C30C, 0x0C30C30C, 0x0C33A33A,
|
|
0x2730C9FA, 0x0CE8C827, 0x0C32030C, 0x0C32033A,
|
|
0x2080CEBA, 0x0C9CC30C, 0x2030C9E0, 0x0C30C9FA,
|
|
0x2732030C, 0x0C9CC9CC, 0x3A80C320, 0x0C33AE8C,
|
|
0x3A80CEBA, 0x2733AEA7, 0x3A80C83A, 0x0CE8C33A,
|
|
0x0C327820, 0x27E8CEA7, 0x0CEA7EA0, 0x0C30C30C,
|
|
0x0CE8C30C, 0x0C33A9CC, 0x0C30C9FA, 0x0C80C80C,
|
|
0x3A30C327, 0x3AE8C80C, 0x0C32033A, 0x3A3209E0,
|
|
0x2730C30C, 0x20320E8C, 0x3A33A9CC, 0x2033A33A,
|
|
0x3A9CCEBA, 0x0CEA030C, 0x279CCE8C, 0x0C9CC30C,
|
|
0x0C820320, 0x0C32033A, 0x0C3209CC, 0x2082033A,
|
|
0x3A30C320, 0x20320EA7, 0x27E8C33A, 0x0000000C
|
|
};
|
|
static const uint32_t tv15_decoded = 0x9E869CC2;
|
|
static const int tv15_converged = 0;
|
|
static const int tv15_iterations = 30;
|
|
static const int tv15_syndrome_weight = 75;
|
|
|
|
/* Vector 16: converged=False, iterations=30, syndrome_weight=56, bit_errors=14 */
|
|
static const uint32_t tv16_llr[52] = {
|
|
0x3A30C327, 0x3AE8C320, 0x3A33A30C, 0x0C80C9E0,
|
|
0x0CE8CE8C, 0x2032030C, 0x3A33A320, 0x3A33A33A,
|
|
0x0C3279CC, 0x2730C827, 0x0CEBA83A, 0x0C9CC33A,
|
|
0x0C80C320, 0x27327EA7, 0x0C320327, 0x0C9CC83A,
|
|
0x3A80CE8C, 0x0C30C33A, 0x0C3209E0, 0x0C30CEBA,
|
|
0x0C82783A, 0x0C30C320, 0x0C30CEBA, 0x0C33A30C,
|
|
0x0CE8C30C, 0x2030C320, 0x27EBA9E0, 0x0C30C327,
|
|
0x3AE8C320, 0x3A30CE8C, 0x2030C827, 0x0C9CC9E0,
|
|
0x273209FA, 0x3A30CEA0, 0x3A82730C, 0x0CEBA30C,
|
|
0x0C320E8C, 0x0C80C9FA, 0x3A32080C, 0x2032730C,
|
|
0x0C33A30C, 0x0C33A327, 0x0C80CEA0, 0x0C327320,
|
|
0x0C80C320, 0x20E8C320, 0x0C30C9CC, 0x0C30C820,
|
|
0x3A820327, 0x3A82780C, 0x0C32033A, 0x0000003A
|
|
};
|
|
static const uint32_t tv16_decoded = 0x4E7507D9;
|
|
static const int tv16_converged = 0;
|
|
static const int tv16_iterations = 30;
|
|
static const int tv16_syndrome_weight = 56;
|
|
|
|
/* Vector 17: converged=False, iterations=30, syndrome_weight=51, bit_errors=19 */
|
|
static const uint32_t tv17_llr[52] = {
|
|
0x3A30C30C, 0x0C80C30C, 0x2033A30C, 0x3AEBA33A,
|
|
0x27E8C33A, 0x0CE8C30C, 0x0C80C33A, 0x0C33A80C,
|
|
0x0C33A30C, 0x2030C320, 0x0C30C30C, 0x0C30C327,
|
|
0x0C33A820, 0x3AEBA30C, 0x2730C80C, 0x0C82080C,
|
|
0x0CE8C30C, 0x0CE8CE8C, 0x3A80C327, 0x0C33A30C,
|
|
0x0C30CE8C, 0x2732030C, 0x3A30C33A, 0x0CE8C33A,
|
|
0x209CC80C, 0x0C30CE8C, 0x0CE8C30C, 0x0C33A9E7,
|
|
0x3A83AEA7, 0x2780C30C, 0x2030C33A, 0x0CEBA83A,
|
|
0x2080C30C, 0x209CC30C, 0x0C30C30C, 0x0C33A327,
|
|
0x0C32030C, 0x3A80C33A, 0x0C83A9CC, 0x0C9FA30C,
|
|
0x3A33A30C, 0x0C9CC80C, 0x2782730C, 0x2032730C,
|
|
0x0C33AEBA, 0x2033AEA0, 0x2732730C, 0x0C9E7320,
|
|
0x0C80C9FA, 0x0C32030C, 0x0C83A9E0, 0x00000020
|
|
};
|
|
static const uint32_t tv17_decoded = 0xBB5F2BF1;
|
|
static const int tv17_converged = 0;
|
|
static const int tv17_iterations = 30;
|
|
static const int tv17_syndrome_weight = 51;
|
|
|
|
/* Vector 18: converged=False, iterations=30, syndrome_weight=76, bit_errors=18 */
|
|
static const uint32_t tv18_llr[52] = {
|
|
0x3A9E083A, 0x2080C30C, 0x27E8C320, 0x3A327EA7,
|
|
0x203209E7, 0x0CE8C33A, 0x0C80C33A, 0x278209E7,
|
|
0x0CE8C9FA, 0x0C327EA0, 0x209E0827, 0x209FA80C,
|
|
0x0C9E083A, 0x0C30C327, 0x0C32730C, 0x0CEA083A,
|
|
0x20EA7327, 0x2730C30C, 0x0C9E09E7, 0x2033AEBA,
|
|
0x0C30CEBA, 0x0C30C30C, 0x0C9E7EBA, 0x3AE8C9CC,
|
|
0x3A30C30C, 0x0C33A9E0, 0x0C9FA30C, 0x3A33A30C,
|
|
0x2080C30C, 0x0C9FA30C, 0x3A32730C, 0x27827E8C,
|
|
0x2782730C, 0x2080CE8C, 0x0C80C320, 0x2030CE8C,
|
|
0x0C82030C, 0x0CEBA30C, 0x20EA79FA, 0x3A32030C,
|
|
0x2730C30C, 0x0C3209CC, 0x209E0820, 0x0C9CC33A,
|
|
0x3A9CC320, 0x0C9E780C, 0x0C30C80C, 0x0C30C9E0,
|
|
0x0C30CE8C, 0x209CC30C, 0x0C80C30C, 0x00000027
|
|
};
|
|
static const uint32_t tv18_decoded = 0xAA500741;
|
|
static const int tv18_converged = 0;
|
|
static const int tv18_iterations = 30;
|
|
static const int tv18_syndrome_weight = 76;
|
|
|
|
/* Vector 19: converged=False, iterations=30, syndrome_weight=42, bit_errors=16 */
|
|
static const uint32_t tv19_llr[52] = {
|
|
0x3A80C33A, 0x0CEA7327, 0x0C32780C, 0x0C30C30C,
|
|
0x279CC9CC, 0x3A33A30C, 0x3A32030C, 0x0C30C30C,
|
|
0x273209E0, 0x2032030C, 0x0CE8C30C, 0x0C30C30C,
|
|
0x3A33A327, 0x0C30C9E0, 0x0C80CEA0, 0x0C30C30C,
|
|
0x0C30C320, 0x0C83A33A, 0x0CEA030C, 0x3A80CE8C,
|
|
0x0C327EA0, 0x0C80C9E0, 0x3A320827, 0x0C320EA0,
|
|
0x0C30C30C, 0x0CE8CE8C, 0x0C30C320, 0x0C327827,
|
|
0x203279E0, 0x0C30C30C, 0x0C33A9E7, 0x3A32030C,
|
|
0x2030C83A, 0x0C9E09CC, 0x0C3209CC, 0x27E8C9CC,
|
|
0x27EBA83A, 0x3AE8C327, 0x27E8C327, 0x0C30C30C,
|
|
0x0C80CE8C, 0x0CEA0EBA, 0x0C32730C, 0x2730C9E0,
|
|
0x279CC33A, 0x0C30CEBA, 0x2730C320, 0x0C30C30C,
|
|
0x0C3209FA, 0x3A33A327, 0x209CCE8C, 0x0000000C
|
|
};
|
|
static const uint32_t tv19_decoded = 0xF98E6EFE;
|
|
static const int tv19_converged = 0;
|
|
static const int tv19_iterations = 30;
|
|
static const int tv19_syndrome_weight = 42;
|
|
|
|
/* Array of LLR pointers for iteration */
|
|
static const uint32_t * const tv_llr[NUM_TEST_VECTORS] = {
|
|
tv0_llr,
|
|
tv1_llr,
|
|
tv2_llr,
|
|
tv3_llr,
|
|
tv4_llr,
|
|
tv5_llr,
|
|
tv6_llr,
|
|
tv7_llr,
|
|
tv8_llr,
|
|
tv9_llr,
|
|
tv10_llr,
|
|
tv11_llr,
|
|
tv12_llr,
|
|
tv13_llr,
|
|
tv14_llr,
|
|
tv15_llr,
|
|
tv16_llr,
|
|
tv17_llr,
|
|
tv18_llr,
|
|
tv19_llr
|
|
};
|
|
|
|
static const uint32_t tv_decoded[NUM_TEST_VECTORS] = {
|
|
0x3FD74222, /* tv0 */
|
|
0x09A5626C, /* tv1 */
|
|
0x2FFC25FC, /* tv2 */
|
|
0x5DABF50B, /* tv3 */
|
|
0x05D8EA33, /* tv4 */
|
|
0x19AF1473, /* tv5 */
|
|
0x34D925D3, /* tv6 */
|
|
0x45C1E650, /* tv7 */
|
|
0xA4CA7D49, /* tv8 */
|
|
0xD849EB80, /* tv9 */
|
|
0x9BCA9A40, /* tv10 */
|
|
0x79FFC352, /* tv11 */
|
|
0x5D2534DC, /* tv12 */
|
|
0xF21718ED, /* tv13 */
|
|
0x7FE0197C, /* tv14 */
|
|
0x9E869CC2, /* tv15 */
|
|
0x4E7507D9, /* tv16 */
|
|
0xBB5F2BF1, /* tv17 */
|
|
0xAA500741, /* tv18 */
|
|
0xF98E6EFE /* tv19 */
|
|
};
|
|
|
|
static const int tv_converged[NUM_TEST_VECTORS] = {
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
|
};
|
|
|
|
static const int tv_iterations[NUM_TEST_VECTORS] = {
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 30, 30, 30, 30, 30, 30, 30, 30
|
|
};
|
|
|
|
static const int tv_syndrome_weight[NUM_TEST_VECTORS] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 59, 61, 65, 75, 56, 51, 76, 42
|
|
};
|
|
|
|
#endif /* TEST_VECTORS_H */
|