UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 34859

Virtex-6 FPGA Block RAM 设计咨询 - 地址空间重叠

描述

在地址重叠的某些情况下可能会导致 Virtex-6 FPGA block RAM 内容损坏。本答复记录为《Virtex-6 FPGA Block RAM 用户指南》(UG363) 第 15 页所提出的这一冲突避免类型提供了更详尽的信息,同时该指南还对如何避免其他的冲突类型进行了说明。

解决方案

问题描述:

在某些情况下,可能导致 Virtex-6 FPGA block RAM 内容损坏。

只有在为 block RAM 的 CLKA 和 CLKB 配置了不同时钟的情况下, 使用下列任何一种设置时才会出现此问题:
  • 为 RAMB36E1 或RAMB18E1 组件设置的真正双端口 (TDP) 模式 其中 WRITE_MODE = READ_FIRST
  • 为  RAMB36E1 或  RAMB18E1 元件设置的简单双端口 (SDP) 模式,包括 错误纠正代码 (ECC) 实现 

在某个重叠地址上,当一个端口在执行写操作而另一个端口在尝试进行后续的读操作时,读操作可能会失败,并且被写入的存储器位置的内容可能会损坏。如果 Block RAM 的 CLKA 和 CLKB 受同一个时钟驱动,那么将不会发生冲突,并且可以成功执行读写操作而不会发生存储器损坏。有关哪些时钟机制会受到此问题影响的更多详情,请参阅下列图表,并查阅“解决方法”部分以获取解决此问题的方法。



图 1:







表 1:地址冲突条件

 
RAMB36E1 原语

RAMB18E1 原语
地址冲突
在满足下列所有条件下才会发生地址冲突:

- 同时启用了两个端口(ENA 和 ENB = 1)

- 两个端口使用的不是同一个时钟 (CLKA ≠ CLKB)

-  时钟之间的相位偏移介于 100 ps 和 3 ns 之间(或下一个时钟沿) 

- 对于两个端口来说,A14-A8、A5 和 A0 都是相同的

在满足下列所有条件下才会发生地址冲突:

- 同时启用了两个端口(ENA 和 ENB = 1)

- 两个端口使用的不是同一个时钟 (CLKA ≠ CLKB)

-  时钟之间的相位偏移介于 100 ps 和 3 ns 之间(或下一个时钟沿) 

- 对于两个端口来说,A13-A7 和 A4 都是相同的


受影响的组件:
  • RAMB18E1 或 RAMB36E1,其 WRITE_MODE 在任一端口上均设置为 READ_FIRST
  • RAM_MODE=SDP 的 RAMB18E1 或 RAMB36E1
  • 所有 UNIMacro 组件,其 WRITE 模式在任一端口上均设置为 READ_FIRST



软件行为:
  • 在 ISE 11.4 和更高版本的软件中 - 将在 READ_FIRST 模式(包括 SDP 和 ECC 模式)的 block RAM 设计中生成一个警告消息,并且 CLKA 和 CLKB 将与不同的时钟相关联。
  • 在 ISE 12.1 和更高版本中 -  仿真的结果向用户阐明了此问题。  已更新了仿真模型以向用户发出此条件警报,并且反映可能发生损坏的未知因素。
  • 在 ISE 12.2 和更高版本中,已为简单双端口模式的 Block RAM 配置添加了 WRITE_FIRST 模式支持。如需更多详情,请参阅“解决方法”部分。

受影响的 IP:

某些 版本的 IP 受地址重叠问题的影响。为了避免发生此问题,请使用 ISE 12.1 或更高版本中的最新版 IP。



解决方法:
  • 对于真正双端口 (TDP) 模式,请确定是否绝对有必要使用 READ_FIRST 模式。  如果没有必要,请使用 WRITE_FIRST 或 NO_CHANGE 模式。
  • 在 12.1 软件中推出更新的仿真模型时,应该使用该模型对所有情况执行完整时序仿真。  为了识别任何潜在的冲突,至少应该运行综合后仿真。
  • 从 12.2 ISE 软件开始,简单双端口 (SDP) Block RAM 将提供 WRITE_FIRST 模式支持。
    • 对于使用同一时钟驱动的 RDCLK 和 WRCLK 的所有 SDP Block RAM,请使用 READ_FIRST 模式,因为在这种情况下将不发生任何冲突。如果 SDP Block RAM 的 RDCLK 和 WRCLK 受不同时钟驱动,请使用 WRITE_FIRST 模式。在 WRITE_FIRST 模式下,用户必须按照避免冲突的要求进行设计,当一个端口执行写操作,而另一个端口同时从相同的位置执行读操作时将存在这种要求。
    • 系统已更新了 CoreGenerator IP 和 XST 来支持 WRITE_FIRST 模式特性。如果使用 Block RAM 生成器来生成 Block RAM 的简单双端口配置,请选择并生成 v4.2 版的内核来使用 WRITE_FIRST 模式。 FIFO 生成器 v6.2 在必要时会自动使用 WRITE_FIRST 简单双端口 Block RAM。
    • 要为 SDP Block RAM 启用 WRITE_FIRST 模式,请在 UCF 文件的任何所需 Block RAM 中添加以下两个约束:
    • INST <BRAM_inst_name> WRITE_MODE_A = WRITE_FIRST;  
    • INST <BRAM_inst_name> WRITE_MODE_B = WRITE_FIRST; 
AR# 34859
日期 07/29/2010
状态 Active
Type 设计咨询
器件 More Less
Tools
的页面