そういう仕様なのか、ただの私の勘違いなのか分かりませんが、一応書いておきます。
・Verilog 記述のなかで、ifdef — endif で記述されているブロックがあって
・SYNTHESIS という名前で指定されていたとき、つまり、 `ifdef SYNTHESIS となっていたとき、
・Xilinx Vivado での合成時に SYNTHESIS という define を指定するしないにかかわらず、問答無用で、その ifdef ブロックが使用される
という現象に遭遇しました。ちなみに、SYNTHESIS ではなく他の define 名(たとえば ABC とか)にしたらこの現象は起こりませんでした。
たしか vivado は 2017.1 でした。
まあ、そういうものなんだ、と思ってしまえばいいんですが、ちょっと引っかかりましたのでメモしておきます。
ちなみに、synth_design という合成コマンドでは、-verilog_define で define 指定ができるはずです。
https://japan.xilinx.com/support/answers/54958.html