Close

Fixed the Hammer's RTL

A project log for miniMAC - Not an Ethernet Transceiver

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

yann-guidon-ygdesYann Guidon / YGDES 03/07/2026 at 16:080 Comments

@alcim.dev  wanted to help me with the tapeout and translated Hammer18.vhdl to Hammer18.v with his custom AI tools. So I had to verify everything in detail. To my surprise, the AI did not hallucinate anything, but it uncovered two typos in the original file!

Note: these typos did not affect the efficiency of the whole system, the change in error detection rate is insignificant, probably the same order of magnitude as using a different permutation, or swapping wires at the input or output. The correction was necessary for overall coherence reasons, and I expect other, better permutations will appear in the future so it was more important in December to move forward, with a "good enough" permutation and assess the overall system performance.

So I have uploaded the new version of Hammer18.vhdl and, for reference, here is the online sim and here is the corresponding diagram:

This was originally published in 124. Proof, pudding.

The two typos explain the last glitch in 126. Hammer = Hamming Maximiser

For more reference, the original permutations are

Perm1965 =
  forward(  3  5  9 17 16 10 15 12  1  2  0 14  6  7 13  8 11  4 )
  reverse( 10  8  9  0 17  1 12 13 15  2  5 16  7 14 11  6  4  3 )
Perm7515 =
  forward( 17  2 11  0  6 16  8  9 10 14  1  7 13 15  5 12  4  3 )
  reverse(  3 10  1 17 16 14  4 11  6  7  8  2 15 12  9 13  5  0 )
Perm4021 =
  forward(  4 17  6  5  1 15  7 14 16 13  0  9 10  8 12  2  3 11 )
  reverse( 10  4 15 16  0  3  2  6 13 11 12 17 14  9  7  5  8  1 )

but there was another glitch during the graphic transcription.

And the above permutations were designed and meant to be fed into more structured code, such that copy-pasting the above numbers would indeed avoid any typo. But that transformation will be for later. 

.............................................................................................................

Another interesting realization is that the sea-of-xor, the latch and the combination-xor can work in different orders, allowing a better integration in the pipeline, where it amounts to only one XOR layer in the pipeline. Here are only a few possibilities:

TODO:

The new version of the file must be verified and the avalanche profile compared to the original diagram.

===> YES !

~/miniMAC$ ./runme_testHammer.sh
  total:200                                                 
 7   16   100001001101110000                                                 
 8   14   110111000000100110                                                 
 8    6   000000011111111000                                                 
 8    7   101110111001000000                                                 
 8    8   111111000010100000                                                 
 9   13   000111100010110101                                                 
 9   15   111111000000101100                                                 
 9   17   000000011111111010                                                 
 9    5   110001101011001010                                                 
11    4   010111100110110101                                                 
12   12   001101111111010101                                                 
13    0   110111011111011001                                                 
14    3   110111101110011111                                                 
15   10   111110111111111001                                                 
15    1   110111011111011111                                                 
15   11   111110111111110101                                                 
15    2   110111101111011111                                                 
15    9   111111011111111001

. .

TODO:

Solve the fanout imbalance issues

.

though so far, the Hammer circuit easily fits in the current 10ns cycle time.

Discussions