为仿真禁用块 RAM 冲突检查 - 2023.2 简体中文

Vivado Design Suite 用户指南: 逻辑仿真 (UG900)

Document ID
UG900
Release Date
2023-10-18
Version
2023.2 简体中文

AMD 块 RAM 存储器是真正的双端口 RAM,其中两个端口均可随时访问任意存储器位置。请确保同时执行读取和写入时,不会对相同地址空间进行寻址。这会导致块 RAM 地址冲突。这些属于有效的冲突,因为从读取端口读取的数据是无效的。

在硬件中,读取的值可能是旧数据、新数据或者新旧数据组合。

在仿真中,这是通过输出 X 来完成建模的,因为读取的值未知。如需了解有关块 RAM 冲突的更多信息,请参阅器件的用户指南。

在某些应用中,无法避免此类冲突,也无法通过设计来绕过此状况。在这类情况下,块 RAM 可配置为不查找这些违例。这是通过块 RAM 原语中的泛型 (VHDL) 或参数 (Verilog) SIM_COLLISION_CHECK 字符串来控制的。

下表所示的字符串选项可供您搭配 SIM_COLLISION_CHECK 用于控制发生冲突情况下的仿真行为。

表 1. SIM_COLLISION_CHECK 字符串
字符串 写入冲突消息 在输出中写入 X
ALL 支持 支持
WARNING_ONLY 支持 否。仅在发生冲突时才适用。后续读取相同地址空间可能会在输出上生成 X。
GENERATE_X_ONLY 不支持 支持
不支持 否。仅在发生冲突时才适用。后续读取相同地址空间可能会在输出上生成 X。

在实例级别应用 SIM_COLLISION_CHECK,这样您即可更改每个块 RAM 实例的设置。