I *highly* recommend using free AXI Verification IP for anything AXI to verify that your bus transfers are compliant with the spec. I use it all the time when designing anything AXI before I ever connect my module to real AXI bus. It can be configured to simulate master, slave or just a passthrough, the latter mode is for verification, but I typically use it as either master or slave depending of whether the module I'm working on is a slave or master.
There is one caveat - AXI VIP is written in 100% SystemVerilog, and you will need to use that language for the testbench code because VDHL and Verilog do not support some of the advanced SV features which
are used for that IP. You DUT can be designed using any HDL, the SV requirement is only for the testbench code.
In your case I noticed that you don't assert bready and arvalid to valid values (high or low), who knows maybe that screws something up. And - just in case - check the connectivity, AXI has got quite a bit of signals, so it's easy to miss one or connect it to something else by accident. If all of that checks out, please post the full source code of the module with a problem, so that we can actually simulate it to find an issue.