微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > DC关于模块参数调用的问题,请大牛来帮忙,谢啦

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

时间:10-02 整理:3721RD 点击:
底层模块是: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的话就不会出错,这是为啥?
谢谢各位了

希望你以后把底层模块的IO模块代码贴完全.....
你这个代码问题在这里
sr #(.WIDTH(1), .LENGTH(16)) sr_sel .......
....     .sr_in(1'b1),
WIDTH(1)
如果你不是1,那么跟后面的sr_in(1'b1)端口位宽就冲突了....我发现你这个问题相当大....尤其是用"...."没贴的那部分,正好看不到问题的关键....开始我也觉得没问题....就是那个"....."害的...
后来发现你居然后面有个 ")".....这就很明显了....
如果说得不对,麻烦你贴完整代码....这个问题很简单,不过你没贴满所以我想到了好几个可能出错的地方,不方面断言...

楼上正解
应该是语法问题



    你好,非常感谢你的回复,我这个问题想了几遍应该是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)
);
这个问题好纠结。

格式怎么变乱了,晕,大家凑合着看吧,呵呵

不知道你用的DC是哪个版本,我用的2008和2009都没碰到过语法不支持的问题。 我个人觉得这应该不是DC不支持2001的语法规则的问题.你这个模块不难,稍微改一下规格就可以把2001改成1995标准,你可以试一下...
实验室电脑没装DC,不然都可以帮你测一下

你这就是位宽不匹配嘛 比如sr_out你定的是4bit,顶成用wire定义了1bit的sel去连接,那肯定是语法错误啊

明显语法错误 4bit去连1bit 建议nLint 无waring 无error再做后面的时事



   那个4是默认参数,小编实例化的时候已经改了.....



    你好,问题解决了,只需要在脚本中添加  set hdlin_auto_save_templates true  即可,谢谢

小编你好,我也碰到了和你类似的问题。我的接口变量不是parameter是define的宏,也会报Error,mismatch on port ......
我加上你在10楼回复的命令也不管用。小编能介绍一下这个命令的具体作用么?
你还有没有过类似的经历?

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

网站地图

Top