Open
Description
From @rachitnigam in #750:
Generally recommend splitting up assignments an
always_comb
block so that only individual signals are assigned to.Instead of:
always_comb begin x = a; y = x; end
do:
always_comb begin x = a end always_comb begin y = x end
This is because
=
is the "blocking assignment" operator and implies ordering over statements. In the first program, we'll havey == a
at the end. Generally, blocking semantics should be avoided.
We should carefully go through the primitive library and remove any blocking assignments that are present.