Some years back I was messing around with designing the ALU for a PDP11. I came up with a very convoluted method of testing that worked like this: The FPGA had a long SPI shift register that received arguments and op codes. It also returned results. I used an AD Blackfin board to send the test vectors which it grabbed from an NFS server running on my Linux box.
in order to test mathematical algorithms
e.g. the complex exponential, the CORDIC, the DSP engine, etc
I am using my debug engine in a similar way
in your case you used a piece of hardware already implemented
the SPI shift register (it's the one used in the jtag block, ain'it?)
in my case the debug engine is itself a piece of VHDL code, which has been longly tested
before of taking place "as trusted tool" in the step of being reused to test other code
it talks to the host, it gets testing vectors and it sends back results
on the host the application can compare "expected" with "actual" and fill a "test report"
there is entropy in my approach because I am testing my own code with my own made tool
in the theory: not good, in the practice: it helps, good!