Been working on a chess engine on my dev board for a few months now and I'm stuck on performance. My search only gets thru maybe 50k nodes in 10 seconds, which feels slow compared to what I'd expect from hardware. I keep reading that bitboards are the way to go but writing the move generator in HDL is kicking my butt.
Right now I'm storing the board as an 8x8 array of squares and iterating through it every ply to find moves. On an FPGA that means a lot of clock cycles just walking the array before the search even starts on a node. I'm wondering if that's the actual bottleneck or if my alpha-beta pruning is just badly ordered and exploring garbage lines. The confusing part is the timing reports say my design runs at 100 MHz with no problem, so it's not like I'm starved for clock speed. But each node takes hundreds of cycles and I can't tell if the problem is the board representation, the move ordering, or just my state machine being bloated. Has anyone here swapped from a mailbox style board to something else and actually seen the node rate jump? Not sure if it's worth the rewrite or if I shold focus on pruning first.