// Copyright lowRISC contributors (OpenTitan project).
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
// One-hot encoder
// Outputs a one-hot encoded version of an integer input.
module [docs]prim_onehot_enc #(
parameter int unsigned OneHotWidth = 32,
localparam int unsigned InputWidth = $clog2(OneHotWidth)
) (
input logic [InputWidth-1:0] in_i,
input logic en_i, // out_o == '0 when en_i == 0
output logic [OneHotWidth-1:0] out_o
);
for (genvar i = 0; i < OneHotWidth; ++i) begin : g_out
assign out_o[i] = (in_i == i) & en_i;
end
endmodule