你能说那是什么意思吗
- 总是 @ *
使用该语句后是否有任何可能的副作用?
它只是列出always
块所依赖的所有电线的快捷方式。这些电线是“敏感列表”。使用它的一个优点是合成代码不太可能关心您在敏感度列表中放入的内容(除posedge
and negedge
),因为电线将“物理地”连接在一起。模拟器可能依赖列表来选择哪些事件应该导致块执行。如果您更改模块并忘记更新列表,您的模拟可能会偏离实际的合成行为。
@Ben Jackson 回答正确。第二部分的答案是没有可能的副作用;我认为这是组合逻辑的推荐做法。
在 SystemVerilog 中,我们希望您使用 always_comb begin...end 而不是 always @*。
always@* 的最大缺点是,当您的某些组合逻辑涉及常量时,always@* 可能不会在时间 0 触发,它需要看到信号变化才能触发。always_comb 保证至少在时间 0 触发一次。
always_comb 的另一个好处是它内联函数调用。如果你调用一个函数,并且函数体引用了一个没有作为参数传递的信号,那么@* 总是对该信号不敏感。