Vivado simulation stuck at 0 fs
EDIT: Besides the problem mentioned below, I found the problem in the Dff entity itself (I was focused on the testbench, sorry for that): The main process hasn't any wait statement of any sort. Either add a sensitivity list to main process:

main : PROCESS (clk, rst) 


Or add a wait statement inside main process:

wait on clk, rst;


That should fix it.

Your simulation doesn't terminate since the clk_pr process will run forever. Here's a simple solution:

--- clock generator
clk &lt;= not clk after 50 ns when finished /= '1' else '0';

--- rest of your test bench
main_pr : PROCESS

--- test code

--- stop clock
finished &lt;= '1';
wait;
END PROCESS;


Of course you can replace 50 ns with the constant you use, remember to add a finished signal to the test bench initialized to '0'.