La mayoría de las herramientas de síntesis admiten pragmas. Por ejemplo, en el siguiente código, la puerta y no se considerarán para la síntesis.
// synthesis translate_off
and2 (a, b, c[4]);
// synthesis translate_on
También se pueden usar macros predefinidas:
'ifdef synthesis
parameter PARAM = 4;
'endif
Ambos de los anteriores son específicos de la herramienta, por lo que tendrás que ver qué macros predefinidas admite tu herramienta, o podrías definir una macro y usarla.
Si desea algo más robusto y no como herramienta específica, puede usar una declaración de generación condicional que divida bien la simulación y la síntesis:
generate
if (SYNTHESIS == 1)
ff_for_synthesis_here
else
ff_for_simulation_here
end generate