System verilog 赋值vs if语句
这是:System verilog 赋值vs if语句,system-verilog,System Verilog,这是: assign ON = signalA && signalB; always_comb begin case (blabla) case_A: begin if (ON) next_state = some_state; end ... 相当于: always_comb begin case (blabla) case_A: begin if (signalA &
assign ON = signalA && signalB;
always_comb begin
case (blabla)
case_A: begin
if (ON) next_state = some_state;
end
...
相当于:
always_comb begin
case (blabla)
case_A: begin
if (signalA && signalB) next_state = some_state;
end
...
他们生产同样数量的硬件吗?一个比另一个好吗 在这种情况下,它们应该产生相同数量的逻辑 通常,至少在以下情况下,
始终\u comb
是首选:
- 如果右侧有一个函数,并且它依赖于一个全局网络或变量,那么使用
更准确,因为它“对函数内容内的更改很敏感”总是\u comb
将生成有关推断闩锁的警告始终\u comb
always_comb ON = signalA && signalB;
always_comb begin
case (blabla)
case_A: begin
if (ON) next_state = some_state;
end
end
或:
请注意,通过连续赋值或始终将组合将signalA和&signalB
分配给ON
,您并没有创建额外的逻辑。把它看作是一个内部信号,不管是哪种方式存在,但是你可以选择或者不给它指派一个名字。这样做的一个原因是为了调试和查看波形显示器上signalA和&signalB
的值
always_comb begin
ON = signalA && signalB;
case (blabla)
case_A: begin
if (ON) next_state = some_state;
end
end