module scrambler_tb;
  parameter VCD_FILE = "scrambler_tb.vcd";

  `include "tb_base.v"

  reg [31:0] data_in;
  reg [31:0] data_out_expected;
  wire [31:0] data_scrambled;
  wire [31:0] data_out;

  always @(posedge clk) begin
    if (reset == 1'b1) begin
      data_in <= 'h03020100;
    end else begin
      data_in <= data_in + {4{8'h04}};
    end
  end

  jesd204_scrambler #(
    .DESCRAMBLE(0)
  ) i_scrambler (
    .clk(clk),
    .reset(reset),
    .enable(1'b1),
    .data_in(data_in),
    .data_out(data_scrambled)
  );

  jesd204_scrambler #(
    .DESCRAMBLE(1)
  ) i_descrambler (
    .clk(clk),
    .reset(reset),
    .enable(1'b1),
    .data_in(data_scrambled),
    .data_out(data_out)
  );

  always @(posedge clk) begin
    if (data_in != data_out && failed == 1'b0) begin
      failed <= 1'b1;
    end
  end

endmodule