module ldo_all(
        // Output to clock PAD
        //output CDC_CLK_OUT0,
        //output CDC_CLK_OUT1,
        //output CDC_CLK_OUT2,
        // SPI Interface
        input  ldo_reset,  // Active Low Reset
        input  signal_reset,
        input  [3:0] SPI_LDO_SS,   // Slave Select            
        input  clk,        // Serial Clock
        input  SPI_LDO_MOSI,    // Master Out Slave In
        // output SPI_LDO_MISO,
        // LDO interface
        //output [72:0] data,
        output reg [9:0] out,
`ifdef USE_POWER_PINS
    inout vdda1,        // User area 1 3.3V supply
    inout vdda2,        // User area 2 3.3V supply
    inout vssa1,        // User area 1 analog ground
    inout vssa2,        // User area 2 analog ground
    inout vccd1,        // User area 1 1.8V supply
    inout vccd2,        // User area 2 1.8v supply
    inout vssd1,        // User area 1 digital ground
    inout vssd2,        // User area 2 digital ground
`endif
);

    //wire data_in;           //SPI_LDO_MOSI_IN

    wire [9:0] ldo_1_out;
    wire [9:0] ldo_2_out;
    wire [9:0] ldo_3_out;
    wire [9:0] ldo_4_out;
    wire [9:0] ldo_5_out;
    wire [9:0] ldo_6_out;
    wire [9:0] ldo_7_out;
    wire [9:0] ldo_8_out;
    wire [9:0] ldo_9_out;
    wire [9:0] ldo_10_out;

    reg [21:0] ldo_reg;
    reg [21:0] ldo_reg_next;

    reg [4:0] count;
    reg [4:0] count_next;

    ldo_1 ldo_1_macro(
        .clk(clk),                         //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_1_out[9]),                   // Comparator Output
        .ctrl_out(ldo_1_out[8:0])
    );

    ldo_2 ldo_2_macro(
        .clk(clk),                         //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_2_out[9]),                   // Comparator Output
        .ctrl_out(ldo_2_out[8:0])
    );

    ldo_3 ldo_3_macro(
        .clk(clk),                 //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_3_out[9]),                   // Comparator Output
        .ctrl_out(ldo_3_out[8:0])
    );

    ldo_4 ldo_4_macro(
        .clk(clk),                         //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_4_out[9]),                   // Comparator Output
        .ctrl_out(ldo_4_out[8:0])
    );

    ldo_5 ldo_5_macro(
        .clk(clk),                         //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_5_out[9]),                   // Comparator Output
        .ctrl_out(ldo_5_out[8:0])
    );

    ldo_6 ldo_6_macro(
        .clk(clk),                         //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_6_out[9]),                   // Comparator Output
        .ctrl_out(ldo_6_out[8:0])
    );

    ldo_7 ldo_7_macro(
        .clk(clk),                         //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_7_out[9]),                   // Comparator Output
        .ctrl_out(ldo_7_out[8:0])
    );

    ldo_8 ldo_8_macro(
        .clk(clk),                         //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_8_out[9]),                   // Comparator Output
        .ctrl_out(ldo_8_out[8:0])
    );

    ldo_9 ldo_9_macro(
        .clk(clk),                         //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_9_out[9]),                   // Comparator Output
        .ctrl_out(ldo_9_out[8:0])
    );

    ldo_10 ldo_10_macro(
        .clk(clk),                         //input
        .reset(ldo_reset),                   //input
        .trim1(ldo_reg[0]),                  //input
        .trim2(ldo_reg[1]),
        .trim3(ldo_reg[2]),
        .trim4(ldo_reg[3]),
        .trim5(ldo_reg[4]),
        .trim6(ldo_reg[5]),
        .trim7(ldo_reg[6]),
        .trim8(ldo_reg[7]),
        .trim9(ldo_reg[8]),
        .trim10(ldo_reg[9]),
        .mode_sel(ldo_reg[11:10]),                // 2'b00 (Comparator & PT Array Test Mode)    // 2'b01 (Controller Test Mode)     // 2'b1X (LDO Run Mode)    input
        .std_ctrl_in(ldo_reg[12]),                // Standalone Controller Test Input
        .std_pt_in_cnt(ldo_reg[21:13]),           // Standalone PT Array Test Input
        .cmp_out(ldo_10_out[9]),                   // Comparator Output
        .ctrl_out(ldo_10_out[8:0])
    );


    always @(*) begin

        ldo_reg_next = ldo_reg;
        count_next = count;

        case (SPI_LDO_SS)
            4'b0000: out = ldo_1_out;
            4'b0001: out = ldo_2_out;
            4'b0010: out = ldo_3_out;
            4'b0011: out = ldo_4_out;
            4'b0100: out = ldo_5_out;
            4'b0101: out = ldo_6_out;
            4'b0110: out = ldo_7_out;
            4'b0111: out = ldo_8_out;
            4'b1000: out = ldo_9_out;
            4'b1001: out = ldo_10_out;
            default: out = ldo_1_out;
        endcase

    end

    always @(negedge clk) begin
        if(signal_reset) begin
            if (count <= 5'd21) begin
                count <= count_next + 1'b1;
                ldo_reg <= {ldo_reg_next[20:0],SPI_LDO_MOSI};
            end
            else begin
                count <= count_next;
                ldo_reg <= ldo_reg_next;
	    end
        end
        else begin
                count <= 0;
                ldo_reg <= ldo_reg_next;
        end
    end

endmodule
