FPGA: intentional delays through manual placement/routing
What I've done in a recent design is to multiply up the clock frequency and use a clocked delay. That can get me granularity in the sub-5ns region with a cheap FPGA. 

This document from Lattice describes how to do exactly what you are asking (fool the compiler into not optimizing out the buffers).