Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Linting:比较Verilog参数和常量字符串_String_Parameters_Verilog - Fatal编程技术网

String Linting:比较Verilog参数和常量字符串

String Linting:比较Verilog参数和常量字符串,string,parameters,verilog,String,Parameters,Verilog,我们有一个带有字符串参数的模块xxx module xxx; parameter PAR = "bad" generate if (PAR == "abc") begin end endgenerate endmodule 我们安装模块并传递一个参数值 xxx #(.PAR("abcd")) u_xxx; 起毛工具会抱怨线有问题。票面价值“ABCD”是32位,而“ABC”是24位。 if (PAR == "abc&q

我们有一个带有字符串参数的模块xxx

module xxx;
parameter PAR = "bad"

generate
if (PAR == "abc") begin

end
endgenerate

endmodule
我们安装模块并传递一个参数值

xxx #(.PAR("abcd")) u_xxx;
起毛工具会抱怨线有问题。票面价值“ABCD”是32位,而“ABC”是24位。
if (PAR == "abc") begin

是否有一个好的解决方案来解决linting问题?

Verilog将每个“char”视为一个8位实体。因此,字符串参数的宽度是由8乘以字符数定义的

在普通的verilog中,没有办法绕过它。所以,起毛工具可能会抱怨。另一方面,比较应该可以。Verilog将零扩展丢失的位。因此,您可以放弃lint消息

在普通的“verilog”中,并没有很好的方法来解决这个linting问题。最好的方法是忘记字符串并切换到整数

parameter abc = 0;
parameter abcd = 1;
...
if (PAR == abc) ...

另一种解决方案是切换到SystemVerilog并将参数类型定义为“字符串”或以位为单位定义其最大宽度。

Verilog将每个“字符”视为8位实体。因此,字符串参数的宽度是由8乘以字符数定义的

在普通的verilog中,没有办法绕过它。所以,起毛工具可能会抱怨。另一方面,比较应该可以。Verilog将零扩展丢失的位。因此,您可以放弃lint消息

在普通的“verilog”中,并没有很好的方法来解决这个linting问题。最好的方法是忘记字符串并切换到整数

parameter abc = 0;
parameter abcd = 1;
...
if (PAR == abc) ...

另一种解决方案是切换到SystemVerilog并将参数类型定义为“字符串”或以位为单位定义其最大宽度。

切换到使用SystemVerilog(您可能已经在使用它,但不知道它),并将参数声明为字符串

module xxx;
parameter string PAR="abc";
或者使用皮棉豁免

if (PAR == "abc") begin // lint ignore this 

检查lint工具手册中的正确语法

切换到使用SystemVerilog(您可能已经在使用它,但不知道它),并将参数声明为字符串

module xxx;
parameter string PAR="abc";
或者使用皮棉豁免

if (PAR == "abc") begin // lint ignore this 

检查lint工具手册中的语法是否正确

Verilog没有
字符串
类型;SystemVerilog有;Verilog使用ASCII编码将每个字符转换为8位。这就是为什么它将“abc”视为24位

您可以预先加载零,使Verilog接受32位(4个字符)的值,默认值仍然使用24位(4个字符)

或者,假设您没有使用Verilog-95,您可以指定范围或将其设置为
integer
类型(参见IEEE1364-2001§3.11.1模块参数)


SystemVerilog(它超越了Verilog)为您提供了更多选项。§6.20常量

Verilog没有
字符串
类型;SystemVerilog有;Verilog使用ASCII编码将每个字符转换为8位。这就是为什么它将“abc”视为24位

您可以预先加载零,使Verilog接受32位(4个字符)的值,默认值仍然使用24位(4个字符)

或者,假设您没有使用Verilog-95,您可以指定范围或将其设置为
integer
类型(参见IEEE1364-2001§3.11.1模块参数)


SystemVerilog(它超越了Verilog)为您提供了更多选项。§6.20常量

OP未将其标记为系统verilog。没有字符串。@Serge,我知道,但这是问题的可能解决方案。OP没有将其标记为system verilog。没有任何条件。@Serge,我知道,但这是问题的可能解决办法。