your code uses 3 parameters:
WIDTH = 8; DEPTH = 16; POINTER_SIZE = 5;
Technically this is not a bug, but it is really non-optimal and non recommended. This is because the DEPTH and POINTER_SIZE are not independent. You should define DEPTH from POINTER_SIZE. Something like: parameter DEPTH = (1 << POINTER_SIZE);
By the way, what you name POINTER_SIZE, is more commonly called ADDR_WIDTH.