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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6541|回复: 10

[求助] DC关于模块参数调用的问题,请大牛来帮忙,谢啦

[复制链接]
发表于 2011-11-28 18:39:23 | 显示全部楼层 |阅读模式

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

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

x
底层模块是:module sr #(parameter WIDTH = 8, LENGTH = 4)
                 ... input [WIDTH-1:0] sr_in,
其中parameter的值是随便设置的,

上层模块调用为:
sr #(.WIDTH(1), .LENGTH(16)) sr_sel .......
....     .sr_in(1'b1),


但是DC综合会报错:Width mismatch on port 'sr_in' of reference to 'sr'

如果把两个模块的WIDTH都改成1的话就不会出错,这是为啥?

谢谢各位了
发表于 2011-11-28 23:50:53 | 显示全部楼层
希望你以后把底层模块的IO模块代码贴完全.....

你这个代码问题在这里
sr #(.WIDTH(1), .LENGTH(16)) sr_sel .......
....     .sr_in(1'b1),

WIDTH(1)
如果你不是1,那么跟后面的sr_in(1'b1)端口位宽就冲突了....我发现你这个问题相当大....尤其是用"...."没贴的那部分,正好看不到问题的关键....开始我也觉得没问题....就是那个"....."害的...
后来发现你居然后面有个 ")".....这就很明显了....
如果说得不对,麻烦你贴完整代码....这个问题很简单,不过你没贴满所以我想到了好几个可能出错的地方,不方面断言...
发表于 2011-11-29 09:06:44 | 显示全部楼层
楼上正解
应该是语法问题
 楼主| 发表于 2011-11-29 09:25:35 | 显示全部楼层
回复 2# jack888518


    你好,非常感谢你的回复,我这个问题想了几遍应该是DC对2001语法不支持的原因,我把代码贴上来

    底层模块就是一个普通的移位寄存器
// 移位寄存器
module sr_cordic #(parameter WIDTH = 4, LENGTH = 8)  //定义参数上层可以调用
(
input clk,
input en,
input [WIDTH-1:0] sr_in,
output[WIDTH-1:0] sr_out
);


// Declare the shift register
reg [WIDTH-1:0] sr [LENGTH-1:0];
// Declare an iterator
integer n;
always @ (posedge clk)
begin
  if (en)
  begin
   // Shift everything over, load the incoming data
   for (n = LENGTH-1; n>0; n = n-1)
   begin
    sr[n] <= sr[n-1];//<=
   end
   // Shift one position in
   sr[0] <= sr_in;
  end
end
// Catch the outgoing data
assign sr_out = sr[LENGTH-1];
endmodule

上层模块为:
wire sel;
sr_cordic #(.WIDTH(1), .LENGTH(16)) sr_select    //调用底层的参数,如果底层模块WIDTH = 4, LENGTH = 8,就会出现不可综合
(                                                                      //的情况,除非改成WIDTH = 1, LENGTH = 16,但是我上层的模块需要调用很多
  .clk(clk),                                                           //个不同宽度的底层模块
  .en(1'b1),
  .sr_in(z_t[ANG_WIDTH-1]),                        
  .sr_out(sel)
);

这个问题好纠结。。。。。
 楼主| 发表于 2011-11-29 09:26:55 | 显示全部楼层
格式怎么变乱了,晕,大家凑合着看吧,呵呵
发表于 2011-11-29 14:01:06 | 显示全部楼层




不知道你用的DC是哪个版本,我用的2008和2009都没碰到过语法不支持的问题。 我个人觉得这应该不是DC不支持2001的语法规则的问题.你这个模块不难,稍微改一下规格就可以把2001改成1995标准,你可以试一下...
实验室电脑没装DC,不然都可以帮你测一下
发表于 2011-11-30 09:12:11 | 显示全部楼层
你这就是位宽不匹配嘛 比如sr_out你定的是4bit,顶成用wire定义了1bit的sel去连接,那肯定是语法错误啊
发表于 2011-11-30 10:19:23 | 显示全部楼层
明显语法错误 4bit去连1bit 建议nLint 无waring 无error再做后面的时事
发表于 2011-11-30 17:32:07 | 显示全部楼层
回复 7# kobefly225


   那个4是默认参数,楼主实例化的时候已经改了.....
 楼主| 发表于 2011-11-30 20:43:34 | 显示全部楼层
回复 9# jack888518


    你好,问题解决了,只需要在脚本中添加  set hdlin_auto_save_templates true  即可,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-28 18:52 , Processed in 0.021965 second(s), 6 queries , Gzip On, MemCached On.

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