// Hardmax One-Hot Classification - Reference Solution
// Finds the index of the maximum input value and outputs a one-hot vector.
// This is mathematically equivalent to finding the class with highest Softmax probability.
// Tie-breaking: Lowest index wins.

module hardmax_onehot (
    input  wire signed [7:0] x0,
    input  wire signed [7:0] x1,
    input  wire signed [7:0] x2,
    input  wire signed [7:0] x3,
    input  wire signed [7:0] x4,
    input  wire signed [7:0] x5,
    output reg  [5:0] y_onehot
);

    reg signed [7:0] max_val;
    reg [2:0] max_idx;
    
    always @(*) begin
        // Initialize with x0
        max_val = x0;
        max_idx = 3'd0;
        
        // Compare with x1
        if (x1 > max_val) begin
            max_val = x1;
            max_idx = 3'd1;
        end
        
        // Compare with x2
        if (x2 > max_val) begin
            max_val = x2;
            max_idx = 3'd2;
        end
        
        // Compare with x3
        if (x3 > max_val) begin
            max_val = x3;
            max_idx = 3'd3;
        end
        
        // Compare with x4
        if (x4 > max_val) begin
            max_val = x4;
            max_idx = 3'd4;
        end
        
        // Compare with x5
        if (x5 > max_val) begin
            max_val = x5;
            max_idx = 3'd5;
        end
        
        // Generate one-hot output
        y_onehot = 6'd0;
        y_onehot[max_idx] = 1'b1;
    end

endmodule
