Simulation of instructions POP HL and POP BC shows that SP is incremented only once. The issue seems to be caused by this code, located at line #643 of NextZ80CPU.v
REG_WSEL = {1'b0, FETCH5:4, 1'bx};
In other instructions, bit 0 of REG_WSEL is used to select hi or low order byte of the destination register depending on the stage cycle of the instruction. Changing that line with this:
REG_WSEL = {1'b0, FETCH5:4, ~STAGE0};
fixed the issue for me.
You may replace the 'x' with '0' or '1',or use the "Post-Translate" simulation.
The bug manifested after I changed all "x" by "0" in the code.