是的。使用 Stratix® 10 设备时,您可能会在模拟真双端口 (TDP) RAM 中使用的 DCFIFO 中看到多个设置时序违规。
从如下所示的节点可能会观察到设置时序违规:
- <仿真 TDP RAM 实例的路径>|ram_2port_0|fifo_wrapper_in|dcfifo_in|dcfifo_component|auto_generated|rdptr_g[<number>]
- <仿真 TDP RAM 实例的路径>|ram_2port_0|fifo_wrapper_out|dcfifo_out|dcfifo_component|auto_generated|ws_dgrp|dffpipe1|dffe3a[<number>]
通过使用以下解决方案中显示的说明减少 DCFIFO 的深度,可以改善这些设置时序裕量。
要减少仿真 TDP RAM 中 DCFIFO 的深度,请使用以下步骤。
- 在 Quartus® Prime Pro Edition 的项目导航器中显示 Hierarchy 选项卡。
- 展开 设计层次结构,在仿真的 TDP RAM 实例下查找以下实例。
- ram_2port_0 > fifo_wrapper_in > dcfifo_in
- ram_2port_0 > fifo_wrapper_out > dcfifo_out - 请记住 dcfifo_in 实例和 dcfifo_out 实例的实体名称。
在下面的示例图中,请记住用黄色方块括起来的实体名称。
- 实例dcfifo_in为“ram2p_fifo_1910_sno4eky”
- 实例dcfifo_out为“ram2p_fifo_1910_3zzux5y”
- 转到 项目导航器的 “文件”选项卡 。
- 展开 .模拟 TDP RAM 的 ip 文件 ,并找到<dcfifo_in>.v 的实体名称和 <dcfifo_out>.v 的实体名称。
在“文件”选项卡的以下示例图中,将编辑由黄色方块括起来的文件。
- 打开 <dcfifo_in>.v 的实体名称。
- 在 defparam 声明中找到以下参数。
- dcfifo_component.lpm_numwords = <lpm_numwords 个数字>
- dcfifo_component.lpm_widthu = <lpm_widthu 个数字>
- 更改 dcfifo_component.lpm_numwords 和 dcfifo_component.lpm_widthu。
- dcfifo_component.lpm_numwords 必须大于模拟 TDP RAM IP 的时钟 B(快速时钟)除以时钟 A(慢速时钟)的时钟频率比
- dcfifo_component.lpm_numwords 必须大于 4
- dcfifo_component.lpm_numwords must 为 2^dcfifo_component.lpm_widthu
例如
- 如果时钟 B 频率/时钟 A 频率之比为 5,则最小 dcfifo_component.lpm_numword 必须为 8 (2^3)
如果 dcfifo_component.lpm_numword 是 8 (2^3),dcfifo_component.lpm_widthu 是 3 - 保存文件
- 打开 dcfifo_out><.v 的实体名称,然后重复步骤 7 到 9
请注意,如果重新生成模拟的 TDP RAM IP,则会重新生成上述文件,并且参数也会恢复为默认数字。