问题描述
在地址重叠的某些条件下,Virtex-6 FPGA Block RAM的内容可能会损坏。本答复记录提供了Virtex-6 FPGA Block RAM用户指南 (UG363)第15页的详细信息,其中还包括其他类型的冲突避免描述。
解决/修复方法
问题描述:
- 用于RAMB36E1或RAMB18E1组件的WRITE_MODE = READ_FIRST的真双端口(TDP)模式
- RAMB36E1或RAMB18E1组件的简单双端口(SDP)模式,包括纠错码(ECC)实现
“解决方案”部分介绍了解决问题的方法。 图1: 表1:地址冲突条件
RAMB36E1原语 | RAMB18E1原语 |
地址冲突 |
受影响的组件:
- RAMB18E1或RAMB36E1,WRITE_MODE在任一端口上设置为READ_FIRST
- RAMB18E1或RAMB36E1,RAM_MODE = SDP
- 所有具有WRITE模式的UNIMacro组件都在任一端口上设置为READ_FIRST
软件中的行为:
- 在ISE 11.4及更高版本的软件中 – 在具有块RAM的设计中,在READ_FIRST模式(包括SDP和ECC模式)中生成警告,并且CLKA和CLKB不与同一时钟相关联。
- 在ISE 12.1及更高版本中 – 仿真结果向用户说明了问题。仿真模型已更新,以提醒用户有关此情况,并反映可能发生损坏的未知数。
- 在ISE 12.2及更高版本中,为简单双端口模式Block RAM配置添加了WRITE_FIRST模式支持。有关详细信息,请参阅“解决方法”部分。
受影响的IP: 解决方法:
- 对于真双端口(TDP)模式,确定是否绝对需要READ_FIRST模式。如果不是,请使用WRITE_FIRST或NO_CHANGE模式。
- 当在12.1软件中可用时,使用更新的仿真模型在所有条件下执行完整的时序仿真。至少应运行综合后仿真,以识别任何潜在的 iMPACT。
- 从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 Generator生成Block RAM的简单双端口配置,请选择并生成内核的v4.2以使用WRITE_FIRST模式。必要时,FIFO Generator 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;
-
没有回复内容