微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 综合时出现位宽不同的赋值怎么处理?

综合时出现位宽不同的赋值怎么处理?

时间:10-02 整理:3721RD 点击:
例如顶层模块top里有这么一句:req #( .WID(WID)) U1 ( .clk(clk),.rst(rst),.din(din) )
即调用了req模块,例化单元为U1
在req模块中,din位宽为参数WID,而顶层模块中WID的默认值与req模块不同,导致综合时会报如下错误:
Error: Width mismatch on port 'din' of reference to 'req' in 'top'. (LINK-3)
请问这种情况该怎么处理?Verilog似乎可以自行处理不同位宽之间的赋值啊!因为出现了很多处,不想一一修改,并且调用的大多是FIFO之类的宏单元,改起来没那么灵活,请问有什么好的办法没有?万分感谢!

req 模块那个是可变参数,由顶层模块传进去,应该是你的hard macro 的 din width 与传进去顶层define 的 WID 不一致

那应该怎么办?硬核是不是有固定的参数啊,比如MEM有64x32b的,但是我真正用到的数据位宽只有29,那要怎么调用呢?硬核好像是可以通过memory compiler生成的,那可以随意生成吗?比如64x29b这种看起来很奇怪的能不能产生呢?目前其实还没有真正的硬核呢,只是有硬核的模块定义和端口声明,里头还是空的……所以想知道能不能产生位宽刚刚好的硬核,请指教,多谢啦!

可以compile 出来的,data width 不一定是2的N次方
先搞清地址线和数据线

好的,太感谢了!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top