always @ (a or b or c or select2)
begin
r = c;
case (select2)
2'b00: r = a;
2'b01: r = b;
endcase
end
in an article, it says this will infer a priority, but I don't think so. can anyone correct me if i am wrong.
this is just a non-full_case case statement, why it will infer priority. priority should comes from the non-parallel case items. :???::???:
would you plz summarize the situations when case state will refer to priority encoder? I think I mess something up here.
it seems that without synopsis parallel_case directive, case and casez will always refer to priority encoder no matter whether the case items are parallel or not. but if we use parallel_case directive(no matter the case items are parallel or not), then only in this case, it will refer to parallel encoder.
So, when a case statement has mutually exclusive case items and it use parallel_case directive, it will generate a parallel encoder, but this parallel encoder will performance just like the priority encoder in the pre-synthesis simulation. There is no mismatch.
If a case statement has some "overlapping" case items and parallel_case directive is still used, then this is a mismatch between pre- and post-synthesis.