Где-то опечатка, строго говоря:

Sgt <= ~W6_2 & (Str | Sgt);

Не эквивалентно:

if (Str) Sgt <= 1'b1;
else if (W6_2) Sgt <= 1'b0;