blob: accba47b56d3d6c0d17c544c62b43cc5bc6090cc [file] [log] [blame]
Mark Branstadbdebfd42020-04-11 22:26:39 +00001// Copyright lowRISC contributors.
Sam Elliott45fb1c62020-06-02 18:18:54 +01002// Licensed under the Apache License, Version 2.0, see LICENSE for details.
Mark Branstadbdebfd42020-04-11 22:26:39 +00003// SPDX-License-Identifier: Apache-2.0
Mark Branstadde6e4792020-10-28 10:32:25 -07004//
5
Mark Branstadbdebfd42020-04-11 22:26:39 +00006package entropy_src_pkg;
7
8 //-------------------------
9 // Entropy Interface
10 //-------------------------
11
Steve Nelson627595e2020-12-07 11:54:35 -080012 parameter int RNG_BUS_WIDTH = 4;
13 parameter int CSRNG_BUS_WIDTH = 384;
14 parameter int FIPS_BUS_WIDTH = 1;
Steve Nelsonef7bcab2021-01-06 08:40:01 -080015 parameter int FIPS_CSRNG_BUS_WIDTH = FIPS_BUS_WIDTH + CSRNG_BUS_WIDTH;
Steve Nelsondea50922020-10-22 08:45:18 -070016
Mark Branstadde6e4792020-10-28 10:32:25 -070017 // es entropy i/f
Mark Branstadbdebfd42020-04-11 22:26:39 +000018 typedef struct packed {
Steve Nelson5540c3b2020-11-30 15:22:23 -080019 logic es_ack;
20 logic [CSRNG_BUS_WIDTH-1:0] es_bits;
Steve Nelson627595e2020-12-07 11:54:35 -080021 logic [FIPS_BUS_WIDTH-1:0] es_fips;
Mark Branstadbdebfd42020-04-11 22:26:39 +000022 } entropy_src_hw_if_rsp_t;
23
24 typedef struct packed {
Mark Branstadcfd6d412020-09-30 14:41:54 -070025 logic es_req;
Mark Branstadbdebfd42020-04-11 22:26:39 +000026 } entropy_src_hw_if_req_t;
27
Mark Branstadff807362020-11-16 07:56:15 -080028 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 Branstadde6e4792020-10-28 10:32:25 -070031
Mark Branstadde7eba32021-03-22 14:18:38 -070032 // 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 Branstadde6e4792020-10-28 10:32:25 -070044 // ast rng i/f
Mark Branstadbdebfd42020-04-11 22:26:39 +000045 typedef struct packed {
46 logic rng_enable;
47 } entropy_src_rng_req_t;
48
49 typedef struct packed {
Mark Branstadde6e4792020-10-28 10:32:25 -070050 logic rng_valid;
Steve Nelson5540c3b2020-11-30 15:22:23 -080051 logic [RNG_BUS_WIDTH-1:0] rng_b;
Mark Branstadbdebfd42020-04-11 22:26:39 +000052 } entropy_src_rng_rsp_t;
53
Mark Branstadff807362020-11-16 07:56:15 -080054 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 Branstadde6e4792020-10-28 10:32:25 -070057 // external health test i/f
58 typedef struct packed {
Steve Nelson627595e2020-12-07 11:54:35 -080059 logic [RNG_BUS_WIDTH-1:0] entropy_bit;
Mark Branstadde6e4792020-10-28 10:32:25 -070060 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 Branstadff807362020-11-16 07:56:15 -080074 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 Schaffner65a1afb2020-07-14 16:17:55 -070077endpackage : entropy_src_pkg