在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2525|回复: 5

[求助] 双端口RAM可仿真无法综合

[复制链接]
发表于 2015-1-23 17:28:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在SDRAM controller 里碰到一个dual port RAM, 仿真可以通过,但无法综合。

仿真器:iverilog + vvp
综合报错如下:
dpram_generic.v:23: Net 'mem3[7][7]' or a directly connected net is driven by more than one source, and not all drivers are three-state. (ELAB-366)

有什么办法解决吗?

这是开源项目wb_sdram_ctrl里的dual port ram。

dpram_generic.v:

module dpram_generic #(

parameter ADDR_WIDTH = 3
)
(

input
clk_a,

input  [ADDR_WIDTH-1:0]
addr_a,

input  [3:0]
we_a,

input  [31:0]
di_a,

output reg [31:0]
do_a,


input
clk_b,

input  [ADDR_WIDTH-1:0]
addr_b,

input  [3:0]
we_b,

input  [31:0]
di_b,

output reg [31:0]
do_b
);


reg [7:0]
mem0[(1<<ADDR_WIDTH)-1:0];

reg [7:0]
mem1[(1<<ADDR_WIDTH)-1:0];

reg [7:0]
mem2[(1<<ADDR_WIDTH)-1:0];

reg [7:0]
mem3[(1<<ADDR_WIDTH)-1:0];


always @(posedge clk_a) begin

if (we_a[3])

mem3[addr_a] <= di_a[31:24];

if (we_a[2])

mem2[addr_a] <= di_a[23:16];

if (we_a[1])

mem1[addr_a] <= di_a[15:8];

if (we_a[0])

mem0[addr_a] <= di_a[7:0];

do_a <= {mem3[addr_a], mem2[addr_a],

mem1[addr_a], mem0[addr_a]};

end


always @(posedge clk_b) begin

if (we_b[3])

mem3[addr_b] <= di_b[31:24];

if (we_b[2])

mem2[addr_b] <= di_b[23:16];

if (we_b[1])

mem1[addr_b] <= di_b[15:8];

if (we_b[0])

mem0[addr_b] <= di_b[7:0];

do_b <= {mem3[addr_b], mem2[addr_b],

mem1[addr_b], mem0[addr_b]};

end
endmodule
发表于 2015-1-23 21:32:26 | 显示全部楼层
这样写肯定没法综合,因为mem信号有多驱动。
解决办法是直接调用DPRAM的IP核。
 楼主| 发表于 2015-1-23 22:17:34 | 显示全部楼层
DPRAM 的IP又是怎么实现的,有谁知道吗?据说是8T bit cell?
发表于 2015-1-23 23:05:55 | 显示全部楼层
回复 3# zhh124

会调用IP核就行了,不用关心内部咋实现的。
发表于 2015-1-24 19:10:52 | 显示全部楼层
一个reg类型变量不能在两个always里赋值,你上边的例子如果AB同时写有效,而ab地址相同,那个地址应该写什么呢。我明白你的意思。把两个always写成一个。或用case({wra,wrb)
发表于 2015-1-25 10:15:54 | 显示全部楼层
你用哪个工艺综合的?那个工艺肯定有相应的memory compiler,生成一个就好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-1 15:10 , Processed in 0.084221 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表