Add gen_verilator_vectors.py to convert test_vectors.json into hex files for $readmemh, and tb_ldpc_vectors.sv to drive 20 test vectors through the RTL decoder and verify bit-exact matching against the Python model. All 11 converged vectors pass with exact decoded word, convergence flag, and zero syndrome weight. All 9 non-converged vectors match the Python model's decoded word, iteration count, and syndrome weight exactly. Three RTL bugs fixed in ldpc_decoder_core.sv during testing: - Magnitude overflow: -32 (6'b100000) negation overflowed 5-bit field to 0; now clamped to max magnitude 31 - Converged flag persistence: moved clearing from IDLE to INIT so host can read results after decode completes - msg_cn2vn zeroing: bypass stale array reads on first iteration (iter_cnt==0) to avoid Verilator scheduling issues with large 3D array initialization Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
81 lines
720 B
Plaintext
81 lines
720 B
Plaintext
3FD74222
|
|
00000001
|
|
00000001
|
|
00000000
|
|
09A5626C
|
|
00000001
|
|
00000001
|
|
00000000
|
|
2FFC25FC
|
|
00000001
|
|
00000001
|
|
00000000
|
|
5DABF50B
|
|
00000001
|
|
00000001
|
|
00000000
|
|
05D8EA33
|
|
00000001
|
|
00000001
|
|
00000000
|
|
19AF1473
|
|
00000001
|
|
00000001
|
|
00000000
|
|
34D925D3
|
|
00000001
|
|
00000001
|
|
00000000
|
|
45C1E650
|
|
00000001
|
|
00000001
|
|
00000000
|
|
A4CA7D49
|
|
00000001
|
|
00000001
|
|
00000000
|
|
D849EB80
|
|
00000001
|
|
00000001
|
|
00000000
|
|
9BCA9A40
|
|
00000001
|
|
00000001
|
|
00000000
|
|
79FFC352
|
|
00000000
|
|
0000001E
|
|
00000043
|
|
5D2534DC
|
|
00000000
|
|
0000001E
|
|
0000003B
|
|
F21718ED
|
|
00000000
|
|
0000001E
|
|
0000003D
|
|
7FE0197C
|
|
00000000
|
|
0000001E
|
|
00000041
|
|
9E869CC2
|
|
00000000
|
|
0000001E
|
|
0000004B
|
|
4E7507D9
|
|
00000000
|
|
0000001E
|
|
00000038
|
|
BB5F2BF1
|
|
00000000
|
|
0000001E
|
|
00000033
|
|
AA500741
|
|
00000000
|
|
0000001E
|
|
0000004C
|
|
F98E6EFE
|
|
00000000
|
|
0000001E
|
|
0000002A
|