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_264; wire nor_266; wire and_267; assign nor_264 = ~(value[1] | value[0]); assign nor_266 = ~(value[3] | value[2] | nor_264); assign and_267 = ~(value[3] | value[2]) & nor_264; assign out = {and_267, nor_266, priority_sel_1b_2way({nor_266, and_267}, 1'h0, ~(value[1] | ~value[0]), ~(value[3] | ~value[2]))}; endmodule