gpt4 book ai didi

verilog - verilog 中 case 'inside' 的用途是什么?可以合成吗?

转载 作者:行者123 更新时间:2023-12-03 04:04:01 50 4
gpt4 key购买 nike

在verilog中,我们有“内部”的情况。它有什么用途&它可以合成吗?

例如:

case(in) inside
4'b0000, 4'b00?1: ; // 0 and 1,3
[5:7]: ; // 5,6,7
default: ;
endcase

最佳答案

在 Verilog 中,您没有 case inside - 即 SystemVerilog。在 Verilog 中,如果您希望在 case 语句中使用通配符,则必须使用 casezcasex。在 casez 语句中,Z 表示不关心;在 casex 语句中,ZX 表示不关心,例如

casez (in)
4'b0000, 4'b00z1: ; // 0 and 1,3
4'b0101, 4'b0110, 4'b0111: ; // 5,6,7
default: ;
endcase

或者,因为 ?Z 的精确同义词:

casez (in)
4'b0000, 4'b00?1: ; // 0 and 1,3
4'b0101, 4'b0110, 4'b0111: ; // 5,6,7
default: ;
endcase

或者,使用casex:

casez (in)
4'b0000, 4'b00x1: ; // 0 and 1,3
4'b0101, 4'b0110, 4'b0111: ; // 5,6,7
default: ;
endcase

SystemVerilog 添加了 case inside,这更好,因为它允许使用范围(就像在原始示例中一样):

  [5:7]: ; // 5,6,7

因为它是不对称的。使用 casex 是 Verilog 中的第二大罪过(仅次于使用有序端口映射)。这是因为 casex对称的(casez 也是如此)。我的意思是,输入表达式中的 casex 中的 X (示例中的 in)也意味着不关心,这意味着如果输入表达式转到 X,则所有分支都匹配(并且执行第一个分支,因为第一个匹配分支是在 Verilog case 语句中执行的)。这样做的结果是,如果网络或变量进入 Xcasex 会将其过滤掉而不是传播它,这意味着错误可能会被隐藏。 case inside 不会发生这种情况,因为输入表达式中有 X(或 Z)并不意味着不关心(这就是我所说的不对称的意思)。

因此,您可以在任何需要带有通配符或范围的 case 语句的地方使用 case inside。是的 - 它是可合成的。

<小时/>

casez 在 Verilog 中被认为更安全,因为输入表达式不太可能虚假地转到 Z

关于verilog - verilog 中 case 'inside' 的用途是什么?可以合成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57470741/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com