AR #22314 - MAP, XtremeDSP Slice - Why do I have extra or missing registers in my DSP48, DSP48E, or DSP48A A, B input path that cause my design to fail in timing simulation and hardware when using MAP -timing?

Search Answers Database


 

MAP, XtremeDSP Slice - Why do I have extra or missing registers in my DSP48, DSP48E, or DSP48A A, B input path that cause my design to fail in timing simulation and hardware when using MAP -timing?

AR# 22314
Part SW-MAP
Last Modified 2008-07-07 00:00:00.0
Status Active
Keywords DSP, AREG, BREG, duplicate, simulation mis-match, Hardware, co-sim, 7.1.04i, 8.1i, 8.1.01i, 8.1.02i, 10.1, 10.1.01, 10.1.02

Description

Keywords: DSP, AREG, BREG, duplicate, simulation mis-match, Hardware, co-sim, 7.1.04i, 8.1i, 8.1.01i, 8.1.02i, 10.1, 10.1.01, 10.1.02

Why do I have extra or missing registers in my DSP48, DSP48E, or DSP48A A, B input path that cause my design to fail in timing simulation and hardware when using the MAP -timing option? The problem usually manifests itself as a design that includes a DSP48 derivative (DSP48, DSP48E, or DSP48A) that works correctly in behavioral simulation, but not in hardware when using the MAP -timing option.

This can affect Spartan-3A DSP (DSP48A), Virtex-4 (DSP48) or Virtex-5 (DSP48E). In the case of Virtex-5, the MAP -timing option is always used and cannot be turned off.

Solution

This is a known problem that has been found on various designs from ISE 7.1i and beyond.

The problem occurs because MAP is attempting to optimize the design by pulling registers out of or into the DSP48 slices. However, in some cases, it is adding registers to the DSP48 slice inputs. This added latency breaks the synchronization and causes problems in hardware and post-PAR simulation, which causes a mismatch with behavioral simulation.

The first recommendation by which to work around this problem is to try the latest release of the Xilinx ISE Implementation tools, as this issue might be fixed in the latest release.

Second, if it is not resolved in the latest release of the ISE Implementation tools, you can work around this problem by setting the following environment variable on your system:
XIL_MAP_NO_DSP_AUTOREG = 1

For information on setting environment variables, see (Xilinx Answer 11630).

If the environment variable does fix your design, please open a case with Xilinx Technical Support so that this issue can be addressed:
http://www.xilinx.com/support/mysupport.htm
 
 
/csi/footer.htm