One option is to instantiate one or more buffer cells manually. For that, you will need to know the cell name regarding your tech library and your RTL code will be tech dependent. If you don't want this, you can also create your own buffer module (e.g. with inverters) and can use it.
Here is an example for Verilog instantiation. BUFX1 is the cell name in an arbitrary library.
BUFX1 my_buffer (.in(my_signal), .out(my_delayed_signal));
Normally synthesis and P&R tools optimize out this cell, but you can tell the tool that you want to keep it. The example constraint below is in Synopsys Design Constraints (SDC) format. Most of the tool vendors support it.
set_dont_touch <path to my_buffer>
You should be aware of that the delay of the cell will be different for each corner (e.g. slow, typical, fast). So the delay is not constant, but in a range.