gpt4 book ai didi

if-statement - Verilog 中的 If else 条件优先级

转载 作者:行者123 更新时间:2023-12-05 02:35:25 25 4
gpt4 key购买 nike

我注意到在 Verilog 中使用 if-else 条件语句时存在赋值优先级。例如下面的代码:

if(counter < 6)
z <= 1;
else if(counter < 12)
z <= 2;
else
z <= 3;

我注意到,直到计数器小于 6,z 的值被分配值 1 ( z <= 1 ),一旦计数器的值超过 6 且小于 12,z被分配了值 2 ( z <= 2 )。

如果像下面的代码那样在条件语句中使用了不同的变量怎么办?

if(wire1_is_enabled)
z <= 1;
else if(wire2_is_enabled)
z <= 0;

当两个条件都为真时会发生什么?这里赋值运算符的行为是什么?我认为这是不良的编程习惯。

最佳答案

是的,嵌套if-else分支语句在执行顺序中自然具有优先级。考虑使用 case语句而不是深度嵌套if更具可读性的语句。

除非你有这样的代码,否则这种编码风格没有任何问题:

if(counter < 6)
z <= 1;
else if(counter < 2)
z <= 2; // unreachable
else
z <= 3;

然后声明z <= 2;变得不可达,因为当第一个条件为假时,第二个条件永远不会为真。幸运的是,有许多工具可以为您标记此问题。

两者都是 ifcase陈述假定优先逻辑。但是,您可以选择显式添加 priorityunique if 之前的关键字或 case关键字来声明和检查您的意图。请参阅 IEEE 1800-2017 SystemVerilog LRM 中的第 12.4 和 12.5 节.

关于if-statement - Verilog 中的 If else 条件优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70569050/

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