I have a problem with using USE_TIMING_CONSTRAINT. I have a wrapper for XPM_MEMORY_SDP and XPM_MEMORY_TDP with memory primitive set to auto. Some instances of these wrappers get mapped to block ram, some to distributed RAM, depending on width/depth/utilization. I want the timing paths cut on distributed RAM, but I can't set USE_TIMING_CONSTRAINT on all instances to 1 by default because the tool will error out if the instance doesn't use distributed RAM.
ERROR: [Synth8-6058]: USE_EMBEDDED_CONSTRAINT is set to (1), but Embedded Constraint is supported only for distributed RAM with separate write and read clocks.
IMHO, this should be a warning, as setting it is harmless. And if we trust the tool to decide what memory to use, then one cannot reliably use this parameter, as the tool can change the selected memory type at any time.