From: xabi on
Hi all,

Iam experimenting with Scrubbing in Xilinx Virtex-4 devices.

According to XAPP1088, pag.18:
"For scrubbing operations, there are special considerations for designs
utilizing distributed RAMs and SRL16s. When a LUT is configured as either
SRL16 or distributed RAM (LUT RAM), scrubbing can corrupt the contents of
such primitives if GLUTMASK_B bit is left at its default setting of
'1'. Therefore, it is important to ensure the GLUTMASK_B bit is set to
'0'. Block RAM content, however, is not covered by the GLUTMASK_B
setting. Therefore, block RAM content configuration columns still need to
be avoided during scrubbing."

Based on this information, I have carried out two experiments:

1) I have generated a bitstream in which all the LUTs of a whole CLB column
have been used as SRL16, initialized to a given value. I have checked in
this bitstream that the computed ECC codes (in the 21st word of the
configuration frame for this CLB column) were equal to 0x000!! As expected,
this confirms that LUTs configured as SRL16s are not considered when
computing the ECC.

2) I have generated a bitstream in which some of the LUTs of a CLB column
have been used as SRL16 and others as LUTs. In this situation the generated
bitstream incorporates ECC codes which are not equal to 0 in the 21st word
of the configuration frame for this CLB column.

Consequently, I have confirmed that when computing the ECC codes for the
configuration frames, only those LUTs not configured as SRL16s or LUT-RAMs
are taken into account. This creates me a question:

How can we know if a LUT is configured in one of these modes? I suppose
this information is encoded in the bitstream... Do anyone have any clue
about this?
I would really appreciate any information.

Thanks in advance.

Xabi

---------------------------------------
Posted through http://www.FPGARelated.com
From: he on
> According to XAPP1088, pag.18:
> "For scrubbing operations, there are special considerations for designs
> utilizing distributed RAMs and SRL16s. When a LUT is configured as either
> SRL16 or distributed RAM (LUT RAM), scrubbing can corrupt the contents of
> such primitives if GLUTMASK_B bit is left at its default setting of
> �1�. Therefore, it is important to ensure the GLUTMASK_B bit is set to
> �0�. Block RAM content, however, is not covered by the GLUTMASK_B
> setting. Therefore, block RAM content configuration columns still need to
> be avoided during scrubbing."

I avoided these problems by not using SRLs and cutting BRAM contents out
of the partial bitfiles. This also makes reconfiguration faster, because
the bitfiles become significantly smaller.

> How can we know if a LUT is configured in one of these modes?

Do you need to? Have you tried reconfiguring your SRLs with the
GLUTMASK_B bit set accordingly?

-HE