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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5117|回复: 2

[求助] 一个很简单的问题。。想问一下为什么quartus和modelsim编译结果会不同

[复制链接]
发表于 2016-3-19 11:55:48 | 显示全部楼层 |阅读模式

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

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

x
代码里是一个很简单的ripple adder,在modelsim10.1C里通过编译,但是在quartus15.0里没有通过,想知道一下是为什么,代码应该怎么改?
quartus15.0中显示的错误代码是:
Error (10232): Verilog HDL error at test.v(19): index 4 cannot fall outside the declared range [3:0] for vector "carry"
大致意思也就是第19行的carry[i+1]循坏展开后会超过定义中的wire [N-1:0] carry






  1. module test(co,sum,a0,a1,ci);
  2. parameter N=4;
  3. output [N-1:0] sum;
  4. output co;
  5. input[N-1:0] a0,a1;
  6. input ci;

  7. wire [N-1:0] carry;

  8. genvar i;

  9. generate
  10.         for(i=0;i<N;i=i+1) begin:r_loop
  11.                 wire t1,t2,t3;
  12.                 xor g1(t1,a0[i],a1[i]);
  13.                 xor g2(sum[i],t1,carry[i]);
  14.                 and g3(t2,a0[i],a1[i]);
  15.                 and g4(t3,t1,carry[i]);
  16.                 or g5(carry[i+1],t2,t3);
  17.         end
  18. endgenerate

  19. assign carry[0] = ci;
  20. assign co = carry[N];

  21. endmodule


复制代码
发表于 2016-3-20 11:08:23 | 显示全部楼层
modelsim编译可过,仿真报错!对于未定义的信号默认为wire型,这跟软件无关。而对于已定义长度的信号使用超出范围,按你使用情况quartus报错。个人觉得应该只是报Waring就行了。因为按默认来说不影响理解!把‘wire [N-1:0] carry;’改为‘wire [N:0] carry;’试试,理论上应该你的carry位宽是data+co这么宽。
 楼主| 发表于 2016-3-20 21:06:45 | 显示全部楼层
回复 2# cutfor

嗯可以了!谢谢啦~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-1-3 14:37 , Processed in 0.018679 second(s), 9 queries , Gzip On, Redis On.

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