module __std__clzt_pow2_8( input wire [7:0] value, output wire [3:0] out ); function automatic priority_sel_1b_4way (input reg [3:0] sel, input reg case0, input reg case1, input reg case2, input reg case3, input reg default_value); begin casez (sel) 4'b???1: begin priority_sel_1b_4way = case0; end 4'b??10: begin priority_sel_1b_4way = case1; end 4'b?100: begin priority_sel_1b_4way = case2; end 4'b1000: begin priority_sel_1b_4way = case3; end 4'b0000: begin priority_sel_1b_4way = default_value; end default: begin // Propagate X priority_sel_1b_4way = 1'dx; end endcase end endfunction wire nor_560; wire and_565; wire nor_567; wire and_570; wire nor_571; wire nor_572; wire and_574; wire and_576; wire and_577; wire nor_579; assign nor_560 = ~(value[5] | value[4]); assign and_565 = ~(value[7] | value[6]) & nor_560; assign nor_567 = ~(value[1] | value[0]); assign and_570 = ~(value[3] | value[2]) & nor_567; assign nor_571 = ~(value[3] | value[2] | nor_567); assign nor_572 = ~(~and_565 | and_570); assign and_574 = and_565 & and_570; assign and_576 = nor_572 & ~nor_571; assign and_577 = nor_572 & nor_571; assign nor_579 = ~(value[7] | value[6] | nor_560); assign out = {and_574, nor_572, and_577 & ~and_574 | nor_579 & ~and_576 & ~and_577 & ~and_574, priority_sel_1b_4way({nor_579, and_576, and_577, and_574}, 1'h0, ~(value[1] | ~value[0]), ~(value[3] | ~value[2]), ~(value[5] | ~value[4]), ~(value[7] | ~value[6]))}; endmodule