Close

Stats with GrayPar17 and PEAC16x2

A project log for miniMAC - Not an Ethernet Transceiver

custom(izable) circuit for sending some megabytes over differential pairs.

yann-guidon-ygdesYann Guidon / YGDES 05/05/2025 at 22:090 Comments

I know I need a better PEAC scrambler but I first want to establish a base, with which to compare later developments.

So I hooked the now validated GrayPar17 layer with the existing PEAC16x2 to see what would happen, and it's... interesting.

Disclaimer:

Thing to check are

Overall GrayPar17 does a pretty good job at filtering most events, and I could refine the rough stats from 69. spurious errors.

At first, I only check 1-bit flips. The upper limit of loop iterations is 30 though ideally it should be much shorter, but I want to see what happens.

Scan of all the 20 bit positions, 100K times:

~~~ Testing PEAC16+GrayPar17 w. error ~~~
burst length=1
index=0   Stage1: 50019  Stage2: 49981
index=1   Stage1:100000
index=2   Stage1: 33246  Stage2: 66754
index=3   Stage1: 50501  Stage2: 46343  Stage3: 3049  missed:107
index=4   Stage1:100000
index=5   Stage1: 33300  Stage2: 66700
index=6   Stage1: 49853  Stage2: 43765  Stage3: 6377  missed:5
index=7   Stage1:100000
index=8   Stage1: 33241  Stage2: 66759
index=9   Stage1: 50003  Stage2: 49997
index=10  Stage1:100000
index=11  Stage1: 33407  Stage2: 66593
index=12  Stage1: 50307  Stage2: 46534  Stage3: 3042  missed:117
index=13  Stage1:100000
index=14  Stage1: 33384  Stage2: 66616
index=15  Stage1: 49821  Stage2: 43858  Stage3: 6316  missed:5
index=16  Stage1:100000
index=17  Stage1: 33221  Stage2: 66779
index=18  Stage1: 50043  Stage2: 37403  Stage3:12552  missed:2
index=19  Stage1: 66702  Stage2: 33298

Offending indices are 3 and 12 (1/1000th chance of missing a single bit flip), followed by 6, 15 and 18 (< 1/10000).

OTOH indices 1, 4, 7, 10, 13, 16 are spot on. But that's only 1 in 3 positions.

The other positions are caught immediately at stage 2.

What is at indices 3 and 12 to be so sensitive ? and why is 9 not affected ?

So the ADD3/SUB3 system might not be ideal, end-around carry could become necessary.

.

I also want to see how long it takes for an error beyond stage 2 to be detected.

Pushing to 50 loops, I get:

 1 :   5830 - *****************************************************************************
 2 :   7574 - ****************************************************************************************************
 3 :   4492 - ************************************************************
 4 :   2897 - ***************************************
 5 :   2249 - ******************************
 6 :   1587 - *********************
 7 :   1359 - ******************
 8 :    998 - **************
 9 :    756 - **********
10 :    599 - ********
11 :    559 - ********
12 :    447 - ******
13 :    371 - *****
14 :    317 - *****
15 :    171 - ***
16 :    209 - ***
17 :    189 - ***
18 :    155 - ***
19 :     97 - **
20 :    104 - **
21 :    129 - **
22 :     71 - *
23 :     46 - *
24 :     24 - *
25 :     46 - *
26 :     52 - *
27 :     15 - *
28 :     18 - *
29 :     23 - *
30 :     31 - *
31 :     18 - *
32 :      4 - *
33 :      9 - *
34 :     14 - *
35 :     12 - *
36 :     17 - *
37 :     12 - *
38 :      0 -
39 :     12 - *
40 :     11 - *
41 :     10 - *
42 :      0 -
43 :     10 - *
44 :      0 -
45 :      6 - *
46 :      4 - *
47 :      6 - *
That's 31560 errors detected by PEAC, but still 14 are missed out of 2 million error injections.

The 10 first loops catch 28341 errors already, or 86%, but what is an acceptable error rate ?

Convergence is a problem because pushing to 20 loops catches 30960, or 98%, but it is enough yet, and can the protocol accommodate such a long delay ? Particularly since, with such a long latency, other errors could pop up and "cancel" the first flip.

.

Hopefully, the convergence should be solved by an more appropriate PEAC structure.

Discussions