Meaning of `ifdef SYNTHESIS

In reply to vk7715:

This is typically used to mark areas of code that are behavioral in nature and non-synthesizable, often when the testbench will be used both emulation and simulation.

A better approach to eliminate the need for additional +define+ arguments is to use synthesis pragmas (translate_off, translate_on) which most synthesis tools use to recognize non-synthesizable code.