我写了一个多端口ram的模块,但是综合不出频率
时间:10-02
整理:3721RD
点击:
我写了一个多端口ram的模块,但是综合不出频率,去除这个模块,整体的频率就能综合出来,请高手指正
module regfile(
clk,
// for decoder1
we3,
ra1,
ra2,
wa3,
wd3,
rd1,
rd2,
// decoder2
we6,
ra4,
ra5,
wa6,
wd6,
rd4,
rd5
);
//macro defines
parameter WIDTH_REG_ADDR = 3'd5;
parameter WIDTH_REG_DATA = 6'd32;
//input signals
input clk;
input we3;
input we6;
input[WIDTH_REG_ADDR-1:0] ra1;
input[WIDTH_REG_ADDR-1:0] ra2;
input[WIDTH_REG_ADDR-1:0] wa3;
input[WIDTH_REG_ADDR-1:0] ra4;
input[WIDTH_REG_ADDR-1:0] ra5;
input[WIDTH_REG_ADDR-1:0] wa6;
input[WIDTH_REG_DATA-1:0] wd6;
input[WIDTH_REG_DATA-1:0] wd3;
//output signals
output[WIDTH_REG_DATA-1:0] rd1;
output[WIDTH_REG_DATA-1:0] rd2;
output[WIDTH_REG_DATA-1:0] rd4;
output[WIDTH_REG_DATA-1:0] rd5;
//logic
reg [31:0] rf[31:0];
always @ (posedge clk)
begin
if (we3) rf[wa3]<=wd3;
else
if (we6) rf[wa6]<=wd6;
end
assign rd1 = (ra1 != 0)?rf[ra1]:0;
assign rd2 = (ra2 != 0)?rf[ra2]:0;
assign rd4 = (ra4 != 0)?rf[ra4]:0;
assign rd5 = (ra5 != 0)?rf[ra5]:0;
endmodule
module regfile(
clk,
// for decoder1
we3,
ra1,
ra2,
wa3,
wd3,
rd1,
rd2,
// decoder2
we6,
ra4,
ra5,
wa6,
wd6,
rd4,
rd5
);
//macro defines
parameter WIDTH_REG_ADDR = 3'd5;
parameter WIDTH_REG_DATA = 6'd32;
//input signals
input clk;
input we3;
input we6;
input[WIDTH_REG_ADDR-1:0] ra1;
input[WIDTH_REG_ADDR-1:0] ra2;
input[WIDTH_REG_ADDR-1:0] wa3;
input[WIDTH_REG_ADDR-1:0] ra4;
input[WIDTH_REG_ADDR-1:0] ra5;
input[WIDTH_REG_ADDR-1:0] wa6;
input[WIDTH_REG_DATA-1:0] wd6;
input[WIDTH_REG_DATA-1:0] wd3;
//output signals
output[WIDTH_REG_DATA-1:0] rd1;
output[WIDTH_REG_DATA-1:0] rd2;
output[WIDTH_REG_DATA-1:0] rd4;
output[WIDTH_REG_DATA-1:0] rd5;
//logic
reg [31:0] rf[31:0];
always @ (posedge clk)
begin
if (we3) rf[wa3]<=wd3;
else
if (we6) rf[wa6]<=wd6;
end
assign rd1 = (ra1 != 0)?rf[ra1]:0;
assign rd2 = (ra2 != 0)?rf[ra2]:0;
assign rd4 = (ra4 != 0)?rf[ra4]:0;
assign rd5 = (ra5 != 0)?rf[ra5]:0;
endmodule
库里面没有对应这样功能的memory模块,自然是综合不出memory了
只有一个ram,你想要哪里到哪里的时间参数?
没有时间参数啊
Thanks!
这个好奇怪啊,难道没有time report
