10 #include "sw/device/lib/testing/entropy_src_testutils.h"
11 #include "sw/device/lib/testing/entropy_testutils.h"
12 #include "sw/device/lib/testing/test_framework/check.h"
17 OTTF_DEFINE_TEST_CONFIG();
24 kEntropyFifoBufferSize = 16,
35 static void entropy_data_flush(dif_entropy_src_t *entropy_src) {
36 uint32_t entropy_bits;
37 uint32_t read_count = 0;
41 const uint32_t kMaxReadCount = 12;
45 CHECK(entropy_bits != 0);
47 if (read_count >= kMaxReadCount) {
51 LOG_INFO(
"Flushed %d entropy words.", read_count);
64 void test_firmware_override(dif_entropy_src_t *entropy) {
65 CHECK_STATUS_OK(entropy_testutils_stop_all());
67 entropy_src_testutils_fw_override_enable(entropy, kEntropyFifoBufferSize,
70 entropy_data_flush(entropy);
74 uint32_t buf[kEntropyFifoBufferSize] = {0};
75 uint32_t word_count = 0;
78 entropy, buf, kEntropyFifoBufferSize));
79 for (
size_t i = 0; i < kEntropyFifoBufferSize; ++i) {
86 entropy, buf, kEntropyFifoBufferSize, NULL));
87 word_count += kEntropyFifoBufferSize;
92 LOG_INFO(
"Processed %d words via FIFO_OVR buffer.", word_count);
93 entropy_data_flush(entropy);
97 dif_entropy_src_t entropy_src;
98 CHECK_DIF_OK(dif_entropy_src_init(
100 test_firmware_override(&entropy_src);