if和case基本可以看做一致。一般,综合工具会判定case语句中的分支是否互不相同,如果这些选项是互不相同的,那么综合工具将认为它们具有相同的优先级别,并综合成一个MUX而不是优先级结构。甚至,当分支列表不是互不相同的时候,综合工具也允许用户决定是否以无优先权形式来处理。当if语句中的分支是用互不相同的条件指定时,该if语句会综合成MUX结构,但是分支并不是互不相同的情况下,综合工具会综合成一个优先级结构。
module test(
input a, b, c, d,
input [1:0] sel,
output reg y
);
//--------------------------------------------
always@(*)
begin
case(sel)
2'b00: y <= a;
2'b01: y <= b;
2'b10: y <= c;
2'b11: y <= d;
default:;
endcase
end
//--------------------------------------------
endmodule