Configuration Readback can corrupt 9K block RAM (RAMB8BWER) data. Configuration Readback (including iMPACT Verify) is not supported when 9K block RAM is used in the Spartan-6 Production devices. However, Readback CRC (POST_CRC), which is commonly used for SEU detection, is supported.
This Answer Record describes the Spartan-6 9K Block RAM Readback issue as listed in the Spartan-6 Errata, including EN148:
- Readback is not supported when using 9K block RAM mode.
- This includes ICAP, SelectMAP, and JTAG configuration methods.
- Readback CRC for SEU detection (POST_CRC) is not affected by this issue.
- Normal read and write operations are not affected.
- 18K block RAM mode is not affected.
- If readback is performed on a 9K block RAM, the memory contents can be corruptedtoan unknownvalueinstead of thedefault value of "0" or the user-initialized contents.
- This is independent of whether the block RAM is used or masked out.
Use the 18K block RAM if readbackis beingperformed. Two options have been added in the ISE 13.2 design tools to assist with avoiding 9K block RAM usage:
- MAP Switch (off by default): The MAP option: -convert_bram8 is added in the ISE 13.2 software.When used, it re-targets all 9K block RAM in the design to 18K block RAM if resources are available. This switch can be added to the command line.If you are running through the GUI, in the Advanced Process Properties, there is a box to enter "Other Map Command Line Options". By default, this option is not set.
- XST Switch (not used by default):The XST switch: -infer_ramb8 setting (where setting can be Yes or No) is added in the ISE 13.2 software.When used (set to No), it blocks the inference of 9K block RAMs in XST. By default this is set to Yes, which is unchanged behavior from all previous software versions. If set to No, XST does not infer the RAMB8 primitive, but any instantiated RAMB8s remain. This switch can be added to the command line. If you are running through the GUI, in the Advanced Process Properties, there is a box to enter "Other XST Command Line Options".
- Instantiate RAMB16BWER, not RAMB8BWER.
- Do not use Block Memory Generator for 9K mode if readbackis beingperformed.
- XST infers a 9K block RAM based on size. If the inferred RAM fits into the RAMB8BWER, it will be used.
- This behavior is seen in all software versions.
- To use an 18K block RAM instead, it must be instantiated to use the RAMB16BWER.
- To determine if XST inferred 9K block RAM in the design, view the MAP report and search for RAMB8BWER.