blob: 4bb07d7b98e271cd9d52763613b70f93a6a5954c [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// Register Package auto-generated by `reggen` containing data structure
package kmac_reg_pkg;
// Param list
parameter int NumWordsKey = 16;
parameter int NumWordsPrefix = 11;
////////////////////////////
// Typedefs for registers //
////////////////////////////
typedef struct packed {
struct packed {
logic q;
} kmac_done;
struct packed {
logic q;
} fifo_empty;
struct packed {
logic q;
} kmac_err;
} kmac_reg2hw_intr_state_reg_t;
typedef struct packed {
struct packed {
logic q;
} kmac_done;
struct packed {
logic q;
} fifo_empty;
struct packed {
logic q;
} kmac_err;
} kmac_reg2hw_intr_enable_reg_t;
typedef struct packed {
struct packed {
logic q;
logic qe;
} kmac_done;
struct packed {
logic q;
logic qe;
} fifo_empty;
struct packed {
logic q;
logic qe;
} kmac_err;
} kmac_reg2hw_intr_test_reg_t;
typedef struct packed {
struct packed {
logic q;
} kmac_en;
struct packed {
logic [2:0] q;
} strength;
struct packed {
logic [1:0] q;
} mode;
struct packed {
logic q;
} msg_endianness;
struct packed {
logic q;
} state_endianness;
} kmac_reg2hw_cfg_reg_t;
typedef struct packed {
struct packed {
logic q;
logic qe;
} start;
struct packed {
logic q;
logic qe;
} process;
struct packed {
logic q;
logic qe;
} run;
struct packed {
logic q;
logic qe;
} done;
} kmac_reg2hw_cmd_reg_t;
typedef struct packed {
logic [31:0] q;
logic qe;
} kmac_reg2hw_key_share0_mreg_t;
typedef struct packed {
logic [31:0] q;
logic qe;
} kmac_reg2hw_key_share1_mreg_t;
typedef struct packed {
logic [2:0] q;
} kmac_reg2hw_key_len_reg_t;
typedef struct packed {
logic [31:0] q;
logic qe;
} kmac_reg2hw_prefix_mreg_t;
typedef struct packed {
struct packed {
logic d;
logic de;
} kmac_done;
struct packed {
logic d;
logic de;
} fifo_empty;
struct packed {
logic d;
logic de;
} kmac_err;
} kmac_hw2reg_intr_state_reg_t;
typedef struct packed {
struct packed {
logic d;
logic de;
} kmac_en;
struct packed {
logic [2:0] d;
logic de;
} strength;
struct packed {
logic [1:0] d;
logic de;
} mode;
struct packed {
logic d;
logic de;
} msg_endianness;
struct packed {
logic d;
logic de;
} state_endianness;
} kmac_hw2reg_cfg_reg_t;
typedef struct packed {
struct packed {
logic d;
} sha3_idle;
struct packed {
logic d;
} sha3_absorb;
struct packed {
logic d;
} sha3_squeeze;
struct packed {
logic [4:0] d;
} fifo_depth;
struct packed {
logic d;
} fifo_empty;
struct packed {
logic d;
} fifo_full;
} kmac_hw2reg_status_reg_t;
typedef struct packed {
logic [31:0] d;
logic de;
} kmac_hw2reg_err_code_reg_t;
typedef struct packed {
logic d;
} kmac_hw2reg_cfg_regwen_reg_t;
///////////////////////////////////////
// Register to internal design logic //
///////////////////////////////////////
typedef struct packed {
kmac_reg2hw_intr_state_reg_t intr_state; // [1449:1447]
kmac_reg2hw_intr_enable_reg_t intr_enable; // [1446:1444]
kmac_reg2hw_intr_test_reg_t intr_test; // [1443:1438]
kmac_reg2hw_cfg_reg_t cfg; // [1437:1430]
kmac_reg2hw_cmd_reg_t cmd; // [1429:1422]
kmac_reg2hw_key_share0_mreg_t [15:0] key_share0; // [1421:894]
kmac_reg2hw_key_share1_mreg_t [15:0] key_share1; // [893:366]
kmac_reg2hw_key_len_reg_t key_len; // [365:363]
kmac_reg2hw_prefix_mreg_t [10:0] prefix; // [362:0]
} kmac_reg2hw_t;
///////////////////////////////////////
// Internal design logic to register //
///////////////////////////////////////
typedef struct packed {
kmac_hw2reg_intr_state_reg_t intr_state; // [62:60]
kmac_hw2reg_cfg_reg_t cfg; // [59:52]
kmac_hw2reg_status_reg_t status; // [51:52]
kmac_hw2reg_err_code_reg_t err_code; // [51:52]
kmac_hw2reg_cfg_regwen_reg_t cfg_regwen; // [51:52]
} kmac_hw2reg_t;
// Register Address
parameter logic [11:0] KMAC_INTR_STATE_OFFSET = 12'h 0;
parameter logic [11:0] KMAC_INTR_ENABLE_OFFSET = 12'h 4;
parameter logic [11:0] KMAC_INTR_TEST_OFFSET = 12'h 8;
parameter logic [11:0] KMAC_CFG_OFFSET = 12'h c;
parameter logic [11:0] KMAC_CMD_OFFSET = 12'h 10;
parameter logic [11:0] KMAC_STATUS_OFFSET = 12'h 14;
parameter logic [11:0] KMAC_KEY_SHARE0_0_OFFSET = 12'h 18;
parameter logic [11:0] KMAC_KEY_SHARE0_1_OFFSET = 12'h 1c;
parameter logic [11:0] KMAC_KEY_SHARE0_2_OFFSET = 12'h 20;
parameter logic [11:0] KMAC_KEY_SHARE0_3_OFFSET = 12'h 24;
parameter logic [11:0] KMAC_KEY_SHARE0_4_OFFSET = 12'h 28;
parameter logic [11:0] KMAC_KEY_SHARE0_5_OFFSET = 12'h 2c;
parameter logic [11:0] KMAC_KEY_SHARE0_6_OFFSET = 12'h 30;
parameter logic [11:0] KMAC_KEY_SHARE0_7_OFFSET = 12'h 34;
parameter logic [11:0] KMAC_KEY_SHARE0_8_OFFSET = 12'h 38;
parameter logic [11:0] KMAC_KEY_SHARE0_9_OFFSET = 12'h 3c;
parameter logic [11:0] KMAC_KEY_SHARE0_10_OFFSET = 12'h 40;
parameter logic [11:0] KMAC_KEY_SHARE0_11_OFFSET = 12'h 44;
parameter logic [11:0] KMAC_KEY_SHARE0_12_OFFSET = 12'h 48;
parameter logic [11:0] KMAC_KEY_SHARE0_13_OFFSET = 12'h 4c;
parameter logic [11:0] KMAC_KEY_SHARE0_14_OFFSET = 12'h 50;
parameter logic [11:0] KMAC_KEY_SHARE0_15_OFFSET = 12'h 54;
parameter logic [11:0] KMAC_KEY_SHARE1_0_OFFSET = 12'h 58;
parameter logic [11:0] KMAC_KEY_SHARE1_1_OFFSET = 12'h 5c;
parameter logic [11:0] KMAC_KEY_SHARE1_2_OFFSET = 12'h 60;
parameter logic [11:0] KMAC_KEY_SHARE1_3_OFFSET = 12'h 64;
parameter logic [11:0] KMAC_KEY_SHARE1_4_OFFSET = 12'h 68;
parameter logic [11:0] KMAC_KEY_SHARE1_5_OFFSET = 12'h 6c;
parameter logic [11:0] KMAC_KEY_SHARE1_6_OFFSET = 12'h 70;
parameter logic [11:0] KMAC_KEY_SHARE1_7_OFFSET = 12'h 74;
parameter logic [11:0] KMAC_KEY_SHARE1_8_OFFSET = 12'h 78;
parameter logic [11:0] KMAC_KEY_SHARE1_9_OFFSET = 12'h 7c;
parameter logic [11:0] KMAC_KEY_SHARE1_10_OFFSET = 12'h 80;
parameter logic [11:0] KMAC_KEY_SHARE1_11_OFFSET = 12'h 84;
parameter logic [11:0] KMAC_KEY_SHARE1_12_OFFSET = 12'h 88;
parameter logic [11:0] KMAC_KEY_SHARE1_13_OFFSET = 12'h 8c;
parameter logic [11:0] KMAC_KEY_SHARE1_14_OFFSET = 12'h 90;
parameter logic [11:0] KMAC_KEY_SHARE1_15_OFFSET = 12'h 94;
parameter logic [11:0] KMAC_KEY_LEN_OFFSET = 12'h 98;
parameter logic [11:0] KMAC_PREFIX_0_OFFSET = 12'h 9c;
parameter logic [11:0] KMAC_PREFIX_1_OFFSET = 12'h a0;
parameter logic [11:0] KMAC_PREFIX_2_OFFSET = 12'h a4;
parameter logic [11:0] KMAC_PREFIX_3_OFFSET = 12'h a8;
parameter logic [11:0] KMAC_PREFIX_4_OFFSET = 12'h ac;
parameter logic [11:0] KMAC_PREFIX_5_OFFSET = 12'h b0;
parameter logic [11:0] KMAC_PREFIX_6_OFFSET = 12'h b4;
parameter logic [11:0] KMAC_PREFIX_7_OFFSET = 12'h b8;
parameter logic [11:0] KMAC_PREFIX_8_OFFSET = 12'h bc;
parameter logic [11:0] KMAC_PREFIX_9_OFFSET = 12'h c0;
parameter logic [11:0] KMAC_PREFIX_10_OFFSET = 12'h c4;
parameter logic [11:0] KMAC_ERR_CODE_OFFSET = 12'h c8;
parameter logic [11:0] KMAC_CFG_REGWEN_OFFSET = 12'h cc;
// Window parameter
parameter logic [11:0] KMAC_STATE_OFFSET = 12'h 400;
parameter logic [11:0] KMAC_STATE_SIZE = 12'h 200;
parameter logic [11:0] KMAC_MSG_FIFO_OFFSET = 12'h 800;
parameter logic [11:0] KMAC_MSG_FIFO_SIZE = 12'h 800;
// Register Index
typedef enum int {
KMAC_INTR_STATE,
KMAC_INTR_ENABLE,
KMAC_INTR_TEST,
KMAC_CFG,
KMAC_CMD,
KMAC_STATUS,
KMAC_KEY_SHARE0_0,
KMAC_KEY_SHARE0_1,
KMAC_KEY_SHARE0_2,
KMAC_KEY_SHARE0_3,
KMAC_KEY_SHARE0_4,
KMAC_KEY_SHARE0_5,
KMAC_KEY_SHARE0_6,
KMAC_KEY_SHARE0_7,
KMAC_KEY_SHARE0_8,
KMAC_KEY_SHARE0_9,
KMAC_KEY_SHARE0_10,
KMAC_KEY_SHARE0_11,
KMAC_KEY_SHARE0_12,
KMAC_KEY_SHARE0_13,
KMAC_KEY_SHARE0_14,
KMAC_KEY_SHARE0_15,
KMAC_KEY_SHARE1_0,
KMAC_KEY_SHARE1_1,
KMAC_KEY_SHARE1_2,
KMAC_KEY_SHARE1_3,
KMAC_KEY_SHARE1_4,
KMAC_KEY_SHARE1_5,
KMAC_KEY_SHARE1_6,
KMAC_KEY_SHARE1_7,
KMAC_KEY_SHARE1_8,
KMAC_KEY_SHARE1_9,
KMAC_KEY_SHARE1_10,
KMAC_KEY_SHARE1_11,
KMAC_KEY_SHARE1_12,
KMAC_KEY_SHARE1_13,
KMAC_KEY_SHARE1_14,
KMAC_KEY_SHARE1_15,
KMAC_KEY_LEN,
KMAC_PREFIX_0,
KMAC_PREFIX_1,
KMAC_PREFIX_2,
KMAC_PREFIX_3,
KMAC_PREFIX_4,
KMAC_PREFIX_5,
KMAC_PREFIX_6,
KMAC_PREFIX_7,
KMAC_PREFIX_8,
KMAC_PREFIX_9,
KMAC_PREFIX_10,
KMAC_ERR_CODE,
KMAC_CFG_REGWEN
} kmac_id_e;
// Register width information to check illegal writes
parameter logic [3:0] KMAC_PERMIT [52] = '{
4'b 0001, // index[ 0] KMAC_INTR_STATE
4'b 0001, // index[ 1] KMAC_INTR_ENABLE
4'b 0001, // index[ 2] KMAC_INTR_TEST
4'b 0011, // index[ 3] KMAC_CFG
4'b 0001, // index[ 4] KMAC_CMD
4'b 0011, // index[ 5] KMAC_STATUS
4'b 1111, // index[ 6] KMAC_KEY_SHARE0_0
4'b 1111, // index[ 7] KMAC_KEY_SHARE0_1
4'b 1111, // index[ 8] KMAC_KEY_SHARE0_2
4'b 1111, // index[ 9] KMAC_KEY_SHARE0_3
4'b 1111, // index[10] KMAC_KEY_SHARE0_4
4'b 1111, // index[11] KMAC_KEY_SHARE0_5
4'b 1111, // index[12] KMAC_KEY_SHARE0_6
4'b 1111, // index[13] KMAC_KEY_SHARE0_7
4'b 1111, // index[14] KMAC_KEY_SHARE0_8
4'b 1111, // index[15] KMAC_KEY_SHARE0_9
4'b 1111, // index[16] KMAC_KEY_SHARE0_10
4'b 1111, // index[17] KMAC_KEY_SHARE0_11
4'b 1111, // index[18] KMAC_KEY_SHARE0_12
4'b 1111, // index[19] KMAC_KEY_SHARE0_13
4'b 1111, // index[20] KMAC_KEY_SHARE0_14
4'b 1111, // index[21] KMAC_KEY_SHARE0_15
4'b 1111, // index[22] KMAC_KEY_SHARE1_0
4'b 1111, // index[23] KMAC_KEY_SHARE1_1
4'b 1111, // index[24] KMAC_KEY_SHARE1_2
4'b 1111, // index[25] KMAC_KEY_SHARE1_3
4'b 1111, // index[26] KMAC_KEY_SHARE1_4
4'b 1111, // index[27] KMAC_KEY_SHARE1_5
4'b 1111, // index[28] KMAC_KEY_SHARE1_6
4'b 1111, // index[29] KMAC_KEY_SHARE1_7
4'b 1111, // index[30] KMAC_KEY_SHARE1_8
4'b 1111, // index[31] KMAC_KEY_SHARE1_9
4'b 1111, // index[32] KMAC_KEY_SHARE1_10
4'b 1111, // index[33] KMAC_KEY_SHARE1_11
4'b 1111, // index[34] KMAC_KEY_SHARE1_12
4'b 1111, // index[35] KMAC_KEY_SHARE1_13
4'b 1111, // index[36] KMAC_KEY_SHARE1_14
4'b 1111, // index[37] KMAC_KEY_SHARE1_15
4'b 0001, // index[38] KMAC_KEY_LEN
4'b 1111, // index[39] KMAC_PREFIX_0
4'b 1111, // index[40] KMAC_PREFIX_1
4'b 1111, // index[41] KMAC_PREFIX_2
4'b 1111, // index[42] KMAC_PREFIX_3
4'b 1111, // index[43] KMAC_PREFIX_4
4'b 1111, // index[44] KMAC_PREFIX_5
4'b 1111, // index[45] KMAC_PREFIX_6
4'b 1111, // index[46] KMAC_PREFIX_7
4'b 1111, // index[47] KMAC_PREFIX_8
4'b 1111, // index[48] KMAC_PREFIX_9
4'b 1111, // index[49] KMAC_PREFIX_10
4'b 1111, // index[50] KMAC_ERR_CODE
4'b 0001 // index[51] KMAC_CFG_REGWEN
};
endpackage