VIVADO综合-当RAM输出驱动寄存器总线的一部分时,无法推断块RAM

描述

在2014.2和更旧版本中,如果RAM输出驱动寄存器总线的一部分,即使RAMMY样式被设置为“块”,VIVADO综合也无法推断块RAM。

参见下面的示例代码。

柱状数据寄存器总线由RAM输出驱动的一部分和DATAIAN驱动的另一部分。

(RAMMyType =“块”*)
Reg [7:0] LeimEM[0:3];

Reg [15:0]α-柱状数据=0;
Reg〔ADDRYBIT-1:0}〕LyniMeMyRead地址=0;

总是@(POSEDGE CLK)开始
第二类文献[7:0]α[l]和lt;= LeimEM[LynIn MyMyRead地址];
γ-柱状数据[15:8]α<= DATAYIN;
结束

解决方案

这个问题在2014.3版本中被修正了。

有两个可以用于先前版本的工作空间:

  • 将分裂寄存器总线分配分为单独的总是块或进程:
总是@(POSEDGE CLK)
第二类文献[7:0]α[l]和lt;= LeimEM[LynIn MyMyRead地址];
总是@(POSEDGE CLK)
γ-柱状数据[15:8]α<= DATAYIN;
  • 使用临时中间信号,使RAM输出信号不被分配到寄存器总线的一部分:
Reg〔7:0〕
Reg([7:0])
总是@(POSEDGE CLK)开始
一个数据包L.Y.L.&Lt;= LeimEM[LynIn MyMyRead地址];
第二个数据是:
结束
总是@ *开始
γ-柱状数据[15:8]=DATAYNIN;
γ-柱状数据[7:0]α==OutPuthDATAOFROXYRAM;
γ端
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-30 17:41:46 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它