如何使Synplify推断寄存器而不是RAM?

在某些情况下,您可能会编写Verilog或VHDL代码来推断内存。

但是,设计工具将其实现为分布式RAM,无法初始化或预设为零。

如果要预设内存,这可能是一个问题。
Synplify编译器(Lattice ispLEVER和Diamond工具的一部分)根据内存推断代码推断出RAM类型。
默认情况下,Synplify将内存推断为分布式RAM(如果可用,则为Block RAM)。
要更改Synplify推断此内存的方式,您必须在代码上设置属性:
VHDL示例

属性syn_ramstyle:string;

属性syn_ramstyle为mem0_s,mem1_s,mem2_s,mem3_s:信号为“寄存器”;

  • Verilog的例子
  • reg [7:0] mem0_s [31:0] / * synthesis syn_ramstyle =“registers”* /;
  • 这会将您的内存推断为寄存器,而不是分布式RAM,允许您预先设置内存。

注意存储器作为寄存器通常不如使用分布式或Block RAM资源那样节省资源。

通过此属性可以通过三种方式推断内存: 。寄存器 - 使推断的RAM映射到寄存器(触发器和逻辑),而不是技术特定的RAM资源。 。distributed - 使RAM使用分布式RAM或PFU资源实现。 。block_ram - 使用专用RAM资源实现RAM。 。如果您的RAM资源有限,无论出于何种原因,您可以使用此属性将其他RAM映射到寄存器而不是专用或分布式RAM资源。
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-27 14:03:49 +0800

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

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