如何使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资源。添加评论