我最近遇到了这种结构的Verilog代码:
reg flop_a;
always @(posedge clk) begin
if (reset)
flop_a <= 1'b0;
else if (some_condition)
flop_a <= new_value;
end
我会显式编码寄存器的保持路径,但省略"else"条件并暗示保持路径似乎也有效。
为什么这(安全(有效?我在 verilog IEEE 规范对始终块的定义或定义此行为的 if 语句中找不到任何内容。
如果没有else
分支,当不满足任何条件时,flop_a
不会受到always
块的影响,因此它将保持其旧值。 如果添加带有flop_a <= flop_a;
的else
分支,则这是完全相同的行为