对于下面代码中的示例,由于/ * synthesis preserve * /,Quartus®Stand会出现RAM推断问题
模块记忆
#(参数DATA_WIDTH = 8,参数ADDR_WIDTH = 6)(
输入[(DATA_WIDTH-1):0]数据,
input [(ADDR_WIDTH-1):0] read_addr,write_addr,
输入我们,clk,
输出[(DATA_WIDTH-1):0] q,
输出reg [3:0] state = 0 / *综合保留* /
);
simple_dual_port_ram_single_clock simple_dual_port_ram_single_clock_inst(
.data(数据),
.read_addr(read_addr),
.write_addr(write_addr),
.we(我们),
.clk(clk),
.q(q)
);
解决方法:
该问题是由已知限制引起的,其中模块声明中的任何保留在使用Verilog 95样式时应用于整个模块。要解决此问题,请使用Verilog 2001属性样式。即:
更换:
输出reg [3:0] state = 0 / *综合保留* /
有:
(*保留*)输出reg [3:0] state = 0
Quartus®Pro版本的软件中没有此问题。对于Quartus®Standard版本,请使用变通方法。
没有回复内容