Verilog 的 debug 技巧(1)
Debug问题:
1)expect a comma,一般是定义的时候少了相应的;
比如说,wire【15:0】dout没有加上;就会出现这种错误;
2)A net is not a legal lvalue in this context.定义类型错误,将wire型定义成了reg型的,
3) reg ‘out_valid’ declared in a module/macromodule,cannot also be declaredinput or inout;
这种类型应该是模块之间的定义出现了错误,需要检查连接模块之间的连线是否定义成了一样
4) SystemVerilognamed argument: use –sv switch to enable this SystemVerilog construct.
一般是在调用module的时候会出现这种情况;注意在时序
5) expecting an ’=’ or ‘<=’ sign in an assignment
可能是因为定义错误导致的,时序电路和组合逻辑采用的赋值方式不同,分别采用阻塞赋值和非阻塞赋值等方式。
6)‘inn1’: undeclaredidentifier没有声明相应的变量为wire型还是reg型的
7)input/output/inout‘avg’ declared as vector or array, then redeclared as scalar.(无向量结构)
是以下的错误,定义input【15:0】avg;wire avg;没有加上范围向量。
8)Part-selectoperator cannot be applied to scalar.
avg <= sum[18:3] + {15’b0, sum[2]} ;这种错误,选择部分的的内容也不可以加到向量中去。前一部分可以采用移位的方式来实现选位的功能;也可能是由于sum的位宽定义错误;(可能都没有定义位宽,默认为1)
9)bit-select operatorcannot be applied to scalar;单个bit的运算不可以加到向量中去。第8)9)问题可能有sum定义的位宽不对导致(可能都没有定义位宽,默认为1);也可能是由于verilog不提供相应的解决的选定位数的方法导致的;
10)port sizes differin port connection.位宽不一致导致的逻辑错误。
11)illegal out(或者output)port specification.定义输出的属性错误
12)expecting a rightparenthesis (‘)’)是指少了右括号);相应的expecting a semicolon (‘:’)是指少了分号。可能是由于在if判断语句中写如if ( a= b ),导致的错误,对的应该为if ( a == b)
13 ) illegal expression primary.可能是类似于将always写成always这样的语法错误。
14)A Verilog keyword was found where an identifier wasexpected.程序中出现了相应的Verilog的关键字,有一个关键字列表,是一些不可以被定义为变量的名字的列表,这个需要注意。
评论