// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

#include <stdbool.h>
#include <stdint.h>

#include "sw/device/lib/testing/check.h"
#include "sw/device/lib/testing/rand_testutils.h"

/**
 * The polynomial co-efficients used in the 32-bit LFSR implementation.
 *
 * This implementation matches the RTL design at `hw/ip/prim/rtl/prim_lfsr.sv`.
 */
const uint32_t kLfsrCoefficients = 0x80000057;

uint32_t rand_testutils_gen32(void) {
  static uint32_t lfsr = 1;
  bool lsb = lfsr & 0x1u;
  lfsr >>= 1;
  if (lsb) {
    lfsr ^= kLfsrCoefficients;
  }
  return lfsr;
}

uint32_t rand_testutils_gen32_range(uint32_t min, uint32_t max) {
  CHECK(max >= min);
  uint32_t range = max - min;
  if (range == 0) {
    return min;
  }
  return min + (rand_testutils_gen32() % (range + 1));
}
