Mark Branstad | bdebfd4 | 2020-04-11 22:26:39 +0000 | [diff] [blame] | 1 | // Copyright lowRISC contributors. |
Sam Elliott | 45fb1c6 | 2020-06-02 18:18:54 +0100 | [diff] [blame] | 2 | // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
Mark Branstad | bdebfd4 | 2020-04-11 22:26:39 +0000 | [diff] [blame] | 3 | // SPDX-License-Identifier: Apache-2.0 |
Mark Branstad | de6e479 | 2020-10-28 10:32:25 -0700 | [diff] [blame] | 4 | // |
| 5 | |
Mark Branstad | bdebfd4 | 2020-04-11 22:26:39 +0000 | [diff] [blame] | 6 | package entropy_src_pkg; |
| 7 | |
| 8 | //------------------------- |
| 9 | // Entropy Interface |
| 10 | //------------------------- |
| 11 | |
Steve Nelson | 627595e | 2020-12-07 11:54:35 -0800 | [diff] [blame] | 12 | parameter int RNG_BUS_WIDTH = 4; |
| 13 | parameter int CSRNG_BUS_WIDTH = 384; |
| 14 | parameter int FIPS_BUS_WIDTH = 1; |
Steve Nelson | ef7bcab | 2021-01-06 08:40:01 -0800 | [diff] [blame] | 15 | parameter int FIPS_CSRNG_BUS_WIDTH = FIPS_BUS_WIDTH + CSRNG_BUS_WIDTH; |
Steve Nelson | dea5092 | 2020-10-22 08:45:18 -0700 | [diff] [blame] | 16 | |
Mark Branstad | de6e479 | 2020-10-28 10:32:25 -0700 | [diff] [blame] | 17 | // es entropy i/f |
Mark Branstad | bdebfd4 | 2020-04-11 22:26:39 +0000 | [diff] [blame] | 18 | typedef struct packed { |
Steve Nelson | 5540c3b | 2020-11-30 15:22:23 -0800 | [diff] [blame] | 19 | logic es_ack; |
| 20 | logic [CSRNG_BUS_WIDTH-1:0] es_bits; |
Steve Nelson | 627595e | 2020-12-07 11:54:35 -0800 | [diff] [blame] | 21 | logic [FIPS_BUS_WIDTH-1:0] es_fips; |
Mark Branstad | bdebfd4 | 2020-04-11 22:26:39 +0000 | [diff] [blame] | 22 | } entropy_src_hw_if_rsp_t; |
| 23 | |
| 24 | typedef struct packed { |
Mark Branstad | cfd6d41 | 2020-09-30 14:41:54 -0700 | [diff] [blame] | 25 | logic es_req; |
Mark Branstad | bdebfd4 | 2020-04-11 22:26:39 +0000 | [diff] [blame] | 26 | } entropy_src_hw_if_req_t; |
| 27 | |
Mark Branstad | ff80736 | 2020-11-16 07:56:15 -0800 | [diff] [blame] | 28 | parameter entropy_src_hw_if_req_t ENTROPY_SRC_HW_IF_REQ_DEFAULT = '{default: '0}; |
| 29 | parameter entropy_src_hw_if_rsp_t ENTROPY_SRC_HW_IF_RSP_DEFAULT = '{default: '0}; |
| 30 | |
Mark Branstad | de6e479 | 2020-10-28 10:32:25 -0700 | [diff] [blame] | 31 | |
Mark Branstad | de7eba3 | 2021-03-22 14:18:38 -0700 | [diff] [blame] | 32 | // csrng block encrypt request/ack i/f |
| 33 | typedef struct packed { |
| 34 | logic cs_aes_halt_req; |
| 35 | } cs_aes_halt_req_t; |
| 36 | |
| 37 | typedef struct packed { |
| 38 | logic cs_aes_halt_ack; |
| 39 | } cs_aes_halt_rsp_t; |
| 40 | |
| 41 | parameter cs_aes_halt_req_t CS_AES_HALT_REQ_DEFAULT = '{default: '0}; |
| 42 | parameter cs_aes_halt_rsp_t CS_AES_HALT_RSP_DEFAULT = '{default: '0}; |
| 43 | |
Mark Branstad | de6e479 | 2020-10-28 10:32:25 -0700 | [diff] [blame] | 44 | // ast rng i/f |
Mark Branstad | bdebfd4 | 2020-04-11 22:26:39 +0000 | [diff] [blame] | 45 | typedef struct packed { |
| 46 | logic rng_enable; |
| 47 | } entropy_src_rng_req_t; |
| 48 | |
| 49 | typedef struct packed { |
Mark Branstad | de6e479 | 2020-10-28 10:32:25 -0700 | [diff] [blame] | 50 | logic rng_valid; |
Steve Nelson | 5540c3b | 2020-11-30 15:22:23 -0800 | [diff] [blame] | 51 | logic [RNG_BUS_WIDTH-1:0] rng_b; |
Mark Branstad | bdebfd4 | 2020-04-11 22:26:39 +0000 | [diff] [blame] | 52 | } entropy_src_rng_rsp_t; |
| 53 | |
Mark Branstad | ff80736 | 2020-11-16 07:56:15 -0800 | [diff] [blame] | 54 | parameter entropy_src_rng_req_t ENTROPY_SRC_RNG_REQ_DEFAULT = '{default: '0}; |
| 55 | parameter entropy_src_rng_rsp_t ENTROPY_SRC_RNG_RSP_DEFAULT = '{default: '0}; |
| 56 | |
Mark Branstad | de6e479 | 2020-10-28 10:32:25 -0700 | [diff] [blame] | 57 | // external health test i/f |
| 58 | typedef struct packed { |
Steve Nelson | 627595e | 2020-12-07 11:54:35 -0800 | [diff] [blame] | 59 | logic [RNG_BUS_WIDTH-1:0] entropy_bit; |
Mark Branstad | de6e479 | 2020-10-28 10:32:25 -0700 | [diff] [blame] | 60 | logic entropy_bit_valid; |
| 61 | logic clear; |
| 62 | logic active; |
| 63 | logic [15:0] thresh_hi; |
| 64 | logic [15:0] thresh_lo; |
| 65 | logic [15:0] window; |
| 66 | } entropy_src_xht_req_t; |
| 67 | |
| 68 | typedef struct packed { |
| 69 | logic[15:0] test_cnt; |
| 70 | logic test_fail_hi_pulse; |
| 71 | logic test_fail_lo_pulse; |
| 72 | } entropy_src_xht_rsp_t; |
| 73 | |
Mark Branstad | ff80736 | 2020-11-16 07:56:15 -0800 | [diff] [blame] | 74 | parameter entropy_src_xht_req_t ENTROPY_SRC_XHT_REQ_DEFAULT = '{default: '0}; |
| 75 | parameter entropy_src_xht_rsp_t ENTROPY_SRC_XHT_RSP_DEFAULT = '{default: '0}; |
| 76 | |
Michael Schaffner | 65a1afb | 2020-07-14 16:17:55 -0700 | [diff] [blame] | 77 | endpackage : entropy_src_pkg |