Consider the following snippet from my own code:
always_comb begin
if (from_write.valid && from_write.uop.rs1 == from_read.uop.rs1) begin
rs1 = from_write.rd;
end else begin
rs1 = from_read.rs1;
end
end
This triggers sequential_block_in_always_comb, because of the begin/end. If one removes them:
always_comb
if (from_write.valid && from_write.uop.rs1 == from_read.uop.rs1)
rs1 = from_write.rd;
else
rs1 = from_read.rs1;
This triggers multiline_if_begin, which wants you to add begin/end, leading to the original code which triggers sequential_block_in_always_comb.
I bring this up because both of these rules are included in designintent, which is apparently a sensible default.
Consider the following snippet from my own code:
This triggers
sequential_block_in_always_comb, because of thebegin/end. If one removes them:This triggers
multiline_if_begin, which wants you to addbegin/end, leading to the original code which triggerssequential_block_in_always_comb.I bring this up because both of these rules are included in
designintent, which is apparently a sensible default.