Why is this an issue?

always_ff block should not contain any blocking assignments for non-local variables.

How to fix it

Code examples

Noncompliant code example

always_ff @(posedge clk) begin
  y = 0; // Noncompliant: Blocking assignment
  z <= 1; // Compliant: Non-blocking assignment
  int k;
  k = 42; // Compliant: Blocking assignment on local variable
end

Compliant solution

always_ff @(posedge clk) begin
  y = 0; // Compliant: Non-blocking assignment
  z <= 1; // Compliant: Non-blocking assignment
  int k;
  k = 42; // Compliant: Blocking assignment on local variable
end

Resources

Articles & blog posts