【发布时间】:2019-10-08 18:06:28
【问题描述】:
我正在尝试了解一些 System Verilog 语法。我在努力完成一项任务时遇到了这个解决方案,但我不明白它为什么有效。
localparam int lo = w;
uwire [n:0] lo_bits, hi_bits;
assign answer = lo_bits == nlo ? lo_bits + hi_bits : lo_bits;
这不完全是我的代码中的内容,但我的问题如下:为什么我不能将它重写为一个简单的 if-else 块?
if (lo == lo_bits)
assign answer = lo_bits + hi_bits;
else
assign answer = lo_bits;
Verilog 抱怨 lo_bits 是一个 uwire,我无法将它与 lo 进行比较,但是为什么在上面的示例中允许它呢?这两个作业不是等价的吗?
非常感谢您的帮助!
【问题讨论】:
标签: verilog system-verilog ternary-operator assign hdl