始终使用@ * |意义和缺点

时间:2011-05-07 07:09:16

标签: verilog hdl system-verilog

你可以说那是什么意思

  • 总是@ *

使用该声明后是否有任何可能的副作用?

3 个答案:

答案 0 :(得分:4)

这只是列出always块所依赖的所有线路的快捷方式。那些电线是“灵敏度列表”。使用它的一个优点是合成代码不太可能关心你在灵敏度列表中放置的内容(posedgenegedge除外),因为导线将“物理”连接在一起。模拟器可能依赖于列表来选择应该导致块执行的事件。如果更改块并忘记更新列表,则模拟可能与实际合成行为不同。

答案 1 :(得分:3)

在SystemVerilog中,我们希望你使用always_comb begin ... end而不是always @ *。

总是@ *的一大缺点是,当你的某些组合逻辑涉及常数时,总是@ *可能不会在时间0触发,它需要看到信号变化才能触发。 always_comb保证在时间0至少触发一次。

always_comb的另一个好处是它内联函数调用。如果你调用一个函数,并且该函数的主体引用了一个未作为参数传递的信号,那么@ *将始终对该信号不敏感。

答案 2 :(得分:2)

@Ben Jackson正确回答。第二部分的答案是没有可能的副作用;我认为这是组合逻辑的推荐做法。