module __std__clzt_pow2_4( input wire [3:0] value, output wire [2:0] out ); function automatic priority_sel_1b_2way (input reg [1:0] sel, input reg case0, input reg case1, input reg default_value); begin casez (sel) 2'b?1: begin priority_sel_1b_2way = case0; end 2'b10: begin priority_sel_1b_2way = case1; end 2'b00: begin priority_sel_1b_2way = default_value; end default: begin // Propagate X priority_sel_1b_2way = 1'dx; end endcase end endfunction wire nor_238; wire nor_240; wire and_241; assign nor_238 = ~(value[1] | value[0]); assign nor_240 = ~(value[3] | value[2] | nor_238); assign and_241 = ~(value[3] | value[2]) & nor_238; assign out = {and_241, nor_240, priority_sel_1b_2way({nor_240, and_241}, 1'h0, ~(value[1] | ~value[0]), ~(value[3] | ~value[2]))}; endmodule