String Linting:比较Verilog参数和常量字符串
我们有一个带有字符串参数的模块xxxString 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
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,我知道,但这是问题的可能解决办法。