If statement Verilog:if-without-else-inside-clocked-always块创建寄存器保持路径

If statement Verilog:if-without-else-inside-clocked-always块创建寄存器保持路径,if-statement,verilog,If Statement,Verilog,我最近遇到了这种结构的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规范

我最近遇到了这种结构的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规范中对always块的定义或定义此行为的if语句中找不到任何内容。

如果没有else分支,当不满足任何条件时,flop_a将不受always块的影响,因此它将保留其旧值。 如果使用flop_a添加else分支,则这是完全相同的行为