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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 306|回复: 6

[求助] 在对verilog代码进行dc综合时,有以下报错,该如何解决,求帮助。

[复制链接]
发表于 2024-11-11 16:33:23 | 显示全部楼层 |阅读模式

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

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

x
这个项目是一个开源的项目,在对其综合的过程发现了Net 'mem_array[12][15]' or a directly connected net is driven by more than one source, and not all drivers are three-state. 此类错误,如图所示,此类报错该如何解决,需要改代码吗?求大佬帮忙解决。以下是出错.v文件的代码。


module ram_dp (
                                clka    ,  
                                cena_i  ,
                        oena_i  ,
                        wena_i  ,
                        addra_i ,
                        dataa_o ,
                        dataa_i ,
                                clkb    ,     
                                cenb_i  ,   
                                oenb_i  ,   
                                wenb_i  ,   
                                addrb_i        ,
                                datab_o ,   
                                datab_i
);

// ********************************************
//                                             
//    Parameter DECLARATION                    
//                                             
// ********************************************
parameter                     Word_Width=32;
parameter                          Addr_Width=8;

// ********************************************
//                                             
//    Input/Output DECLARATION                    
//                                             
// ********************************************
// A port
input                     clka;      // clock input
input                             cena_i;    // chip enable, low active
input                             oena_i;    // data output enable, low active
input                             wena_i;    // write enable, low active
input   [Addr_Width-1:0]  addra_i;   // address input
input   [Word_Width-1:0]  dataa_i;   // data input
output        [Word_Width-1:0]  dataa_o;   // data output

// B Port
input                     clkb;      // clock input                     
input                             cenb_i;    // chip enable, low active         
input                             oenb_i;    // data output enable, low active  
input                             wenb_i;    // write enable, low active        
input   [Addr_Width-1:0]  addrb_i;   // address input                  
input   [Word_Width-1:0]  datab_i;   // data input                     
output        [Word_Width-1:0]  datab_o;   // data output                     

// ********************************************
//                                             
//    Register DECLARATION                 
//                                             
// ********************************************
reg    [Word_Width-1:0]   mem_array[(1<<Addr_Width)-1:0];

// ********************************************
//                                             
//    Wire DECLARATION                 
//                                             
// ********************************************
reg           [Word_Width-1:0]  dataa_r;
reg           [Word_Width-1:0]  datab_r;

// ********************************************
//                                             
//    Logic DECLARATION                 
//                                             
// ********************************************
// -- A Port --//
always @(posedge clka) begin               
        if(!cena_i && !wena_i)
                mem_array[addra_i] <= dataa_i;
end

always @(posedge clka) begin
        if (!cena_i && wena_i)
                dataa_r <= mem_array[addra_i];
        else
                dataa_r <= 'bx;
end

assign dataa_o = oena_i ? 'bz : dataa_r;

// -- B Port --//
always @(posedge clkb) begin               
        if(!cenb_i && !wenb_i)
                mem_array[addrb_i] <= datab_i;
end

always @(posedge clkb) begin   
        if (!cenb_i && wenb_i)
                datab_r <= mem_array[addrb_i];
        else
                datab_r <= 'bx;
end

assign datab_o = oenb_i ? 'bz : datab_r;

endmodule
bba0a683095cdaf0274048460c0e468.png
发表于 2024-11-11 17:13:28 | 显示全部楼层
man message-id 里面有提示。这是ram的仿真模型,综合出来也不对。
发表于 2024-11-11 17:19:07 | 显示全部楼层
需要替换ram,问ip去要
 楼主| 发表于 3 天前 | 显示全部楼层


zhaozhety 发表于 2024-11-11 17:19
需要替换ram,问ip去要


请问可以用memory_compiler 生成吗?

 楼主| 发表于 3 天前 | 显示全部楼层


温柔阴影 发表于 2024-11-11 17:13
man message-id 里面有提示。这是ram的仿真模型,综合出来也不对。


好的谢谢您,那是不是要用memory_compiler去生成这种ram
发表于 3 天前 | 显示全部楼层


zirryl 发表于 2024-11-18 11:05
好的谢谢您,那是不是要用memory_compiler去生成这种ram


是的,拿到配置直接生成,生成完了,改rtl例化即可。
 楼主| 发表于 昨天 16:24 | 显示全部楼层


869053983 发表于 2024-11-18 18:19
是的,拿到配置直接生成,生成完了,改rtl例化即可。


感谢

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-21 23:54 , Processed in 0.019300 second(s), 8 queries , Gzip On, Redis On.

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