`timescale 1ns / 1ps

module sclk_gen_tb;

    // Inputs
    reg ENA;
    reg SYNC;
    reg RESETn;
    reg CPHA;
    reg CLK;
    reg CPOL;

    // Output
    wire SCLK;

    // CLOCK
    initial begin
        CLK = 0;
        forever #5 CLK = ~CLK;
    end

    // Testszenarien
    initial begin
        // Eingänge initialisieren
        ENA = 0;
        SYNC = 0;
        RESETn = 1;
        CPHA = 0;
        CPOL = 0;

        // Reset
        #10 RESETn = 0;
        #20 RESETn = 1;

        // Test 1: ENA toggelt
        #30 ENA = 1;
        #20 ENA = 0;

        // Test 2: SYNC toggelt
        #40 SYNC = 1;
        #20 SYNC = 0;

        // Test 3: CPHA und CPOL Funktion
        CPHA = 1;
        CPOL = 1;
        ENA = 1; // Enable wird aktiviert
        #40 CPHA = 0;
        #40 CPOL = 0;

        // Enable wird deaktiviert
        #50 ENA = 0;

        
        #100;
    end

    //DUT
    sclk_gen dut (
        .ENA(ENA), 
        .SYNC(SYNC), 
        .RESETn(RESETn), 
        .CPHA(CPHA), 
        .CLK(CLK), 
        .CPOL(CPOL), 
        .SCLK(SCLK)
    );

endmodule
