芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 19773|回复: 1

【Modelsim常见问题】vlog-2730 Undefined variable: . already dec...

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 418

    主题

    769

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    15805
    QQ
    发表于 2019-1-3 10:37:56 | 显示全部楼层 |阅读模式
    很多人最开始学习FPGA使用Modelsim进行仿真时候都会遇到Quartus软件编译没有错误的工程,Modelsim编译提示语法错误的情况。

    典型现象:
      
    # ** Error:  C:/Users/Administrator/Desktop/class12_FSM_hello/rtl/Hello.v(37): (vlog-2730)  Undefined variable: 'state'.
      
    #
      
    # ** Error:  C:/Users/Administrator/Desktop/class12_FSM_hello/rtl/Hello.v(74): 'state'  already declared in this scope (Hello).
      
    # ** Error:  D:/altera/13.0/modelsim_ae/win32aloem/vlog failed.
      

    006.png

    问题解析
    Modelsim和Quartus对语法的分析严谨程度不一样,Modelsim更严谨,或者更像C语言。所有信号必须先定义后使用。所以很多随心所欲写的代码,在Quartus中编译没问题,但是在modelsim中编译可能通不过。举个例子:
      
        reg [24:0]cnt; //定义计数器
      
      
        //计数器计数进程
      
        always@(posedge Clk50M or negedge Rst_n)
      
        if(Rst_n == 1'b0)
      
            cnt <= 25'd0;
      
        else if(cnt ==25'd24_999_999)
      
            cnt <= 25'd0;
      
        else
      
            cnt <= cnt + 1'b1;
      
        //计数器计数进程
      
        always@(posedge Clk50M or negedge Rst_n)
      
        if(Rst_n == 1'b0)
      
            cnt <= 25'd0;
      
        else if(cnt ==25'd24_999_999)
      
            cnt <= 25'd0;
      
        else
      
            cnt <= cnt + 1'b1;
      
    reg [24:0]cnt; //定义计数器
    两者的区别仅仅在于,左侧代码是先定义cnt,然后对其进行赋值操作用到了该信号(除赋值操作外,其他任何操作也都算使用该信号),这样写在Quartus软件和Modelsim软件中都是没有问题的,但是右侧,先使用了cnt这个信号,后面才来定义,这样的写法,在Quartus软件中没问题,但是Modelsim软件中编译就会报错,提示找不到cnt这个信号。

    解决方法
    大家在写代码时候一定要规范,先定义信号再使用。参考举例代码的左侧代码。


    回复

    使用道具 举报

  • TA的每日心情
    难过
    2020-9-13 11:32
  • 5

    主题

    13

    帖子

    431

    积分

    中级会员

    Rank: 4

    积分
    431
    发表于 2019-3-26 15:42:24 | 显示全部楼层
    我就遇到这样的问题,折腾了好久才想明白才感慨其他人的代码怎么都是定义写前头的
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2024-3-29 06:13 , Processed in 0.114076 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表