blob: 92ebb6ce2142118892e76c0a791023d992fd419f [file]
// 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 otp_ctrl_reg_pkg;
// Param list
parameter int NumSramKeyReqSlots = 3;
parameter int OtpByteAddrWidth = 11;
parameter int NumErrorEntries = 10;
parameter int NumDaiWords = 2;
parameter int NumDigestWords = 2;
parameter int NumSwCfgWindowWords = 512;
parameter int NumPart = 8;
parameter int VendorTestOffset = 0;
parameter int VendorTestSize = 64;
parameter int ScratchOffset = 0;
parameter int ScratchSize = 56;
parameter int VendorTestDigestOffset = 56;
parameter int VendorTestDigestSize = 8;
parameter int CreatorSwCfgOffset = 64;
parameter int CreatorSwCfgSize = 800;
parameter int CreatorSwCfgAstCfgOffset = 64;
parameter int CreatorSwCfgAstCfgSize = 156;
parameter int CreatorSwCfgAstInitEnOffset = 220;
parameter int CreatorSwCfgAstInitEnSize = 4;
parameter int CreatorSwCfgRomExtSkuOffset = 224;
parameter int CreatorSwCfgRomExtSkuSize = 4;
parameter int CreatorSwCfgSigverifyRsaModExpIbexEnOffset = 228;
parameter int CreatorSwCfgSigverifyRsaModExpIbexEnSize = 4;
parameter int CreatorSwCfgSigverifyRsaKeyEnOffset = 232;
parameter int CreatorSwCfgSigverifyRsaKeyEnSize = 8;
parameter int CreatorSwCfgSigverifySpxEnOffset = 240;
parameter int CreatorSwCfgSigverifySpxEnSize = 4;
parameter int CreatorSwCfgSigverifySpxKeyEnOffset = 244;
parameter int CreatorSwCfgSigverifySpxKeyEnSize = 8;
parameter int CreatorSwCfgFlashDataDefaultCfgOffset = 252;
parameter int CreatorSwCfgFlashDataDefaultCfgSize = 4;
parameter int CreatorSwCfgFlashInfoBootDataCfgOffset = 256;
parameter int CreatorSwCfgFlashInfoBootDataCfgSize = 4;
parameter int CreatorSwCfgRngEnOffset = 260;
parameter int CreatorSwCfgRngEnSize = 4;
parameter int CreatorSwCfgJitterEnOffset = 264;
parameter int CreatorSwCfgJitterEnSize = 4;
parameter int CreatorSwCfgRetRamResetMaskOffset = 268;
parameter int CreatorSwCfgRetRamResetMaskSize = 4;
parameter int CreatorSwCfgManufStateOffset = 272;
parameter int CreatorSwCfgManufStateSize = 4;
parameter int CreatorSwCfgRomExecEnOffset = 276;
parameter int CreatorSwCfgRomExecEnSize = 4;
parameter int CreatorSwCfgCpuctrlOffset = 280;
parameter int CreatorSwCfgCpuctrlSize = 4;
parameter int CreatorSwCfgMinSecVerRomExtOffset = 284;
parameter int CreatorSwCfgMinSecVerRomExtSize = 4;
parameter int CreatorSwCfgMinSecVerBl0Offset = 288;
parameter int CreatorSwCfgMinSecVerBl0Size = 4;
parameter int CreatorSwCfgDefaultBootDataInProdEnOffset = 292;
parameter int CreatorSwCfgDefaultBootDataInProdEnSize = 4;
parameter int CreatorSwCfgRmaSpinEnOffset = 296;
parameter int CreatorSwCfgRmaSpinEnSize = 4;
parameter int CreatorSwCfgRmaSpinCyclesOffset = 300;
parameter int CreatorSwCfgRmaSpinCyclesSize = 4;
parameter int CreatorSwCfgRngRepcntThresholdsOffset = 304;
parameter int CreatorSwCfgRngRepcntThresholdsSize = 4;
parameter int CreatorSwCfgRngRepcntsThresholdsOffset = 308;
parameter int CreatorSwCfgRngRepcntsThresholdsSize = 4;
parameter int CreatorSwCfgRngAdaptpHiThresholdsOffset = 312;
parameter int CreatorSwCfgRngAdaptpHiThresholdsSize = 4;
parameter int CreatorSwCfgRngAdaptpLoThresholdsOffset = 316;
parameter int CreatorSwCfgRngAdaptpLoThresholdsSize = 4;
parameter int CreatorSwCfgRngBucketThresholdsOffset = 320;
parameter int CreatorSwCfgRngBucketThresholdsSize = 4;
parameter int CreatorSwCfgRngMarkovHiThresholdsOffset = 324;
parameter int CreatorSwCfgRngMarkovHiThresholdsSize = 4;
parameter int CreatorSwCfgRngMarkovLoThresholdsOffset = 328;
parameter int CreatorSwCfgRngMarkovLoThresholdsSize = 4;
parameter int CreatorSwCfgRngExthtHiThresholdsOffset = 332;
parameter int CreatorSwCfgRngExthtHiThresholdsSize = 4;
parameter int CreatorSwCfgRngExthtLoThresholdsOffset = 336;
parameter int CreatorSwCfgRngExthtLoThresholdsSize = 4;
parameter int CreatorSwCfgRngAlertThresholdOffset = 340;
parameter int CreatorSwCfgRngAlertThresholdSize = 4;
parameter int CreatorSwCfgRngHealthConfigDigestOffset = 344;
parameter int CreatorSwCfgRngHealthConfigDigestSize = 4;
parameter int CreatorSwCfgDigestOffset = 856;
parameter int CreatorSwCfgDigestSize = 8;
parameter int OwnerSwCfgOffset = 864;
parameter int OwnerSwCfgSize = 800;
parameter int OwnerSwCfgRomErrorReportingOffset = 864;
parameter int OwnerSwCfgRomErrorReportingSize = 4;
parameter int OwnerSwCfgRomBootstrapEnOffset = 868;
parameter int OwnerSwCfgRomBootstrapEnSize = 4;
parameter int OwnerSwCfgRomAlertClassEnOffset = 872;
parameter int OwnerSwCfgRomAlertClassEnSize = 4;
parameter int OwnerSwCfgRomAlertEscalationOffset = 876;
parameter int OwnerSwCfgRomAlertEscalationSize = 4;
parameter int OwnerSwCfgRomAlertClassificationOffset = 880;
parameter int OwnerSwCfgRomAlertClassificationSize = 320;
parameter int OwnerSwCfgRomLocalAlertClassificationOffset = 1200;
parameter int OwnerSwCfgRomLocalAlertClassificationSize = 64;
parameter int OwnerSwCfgRomAlertAccumThreshOffset = 1264;
parameter int OwnerSwCfgRomAlertAccumThreshSize = 16;
parameter int OwnerSwCfgRomAlertTimeoutCyclesOffset = 1280;
parameter int OwnerSwCfgRomAlertTimeoutCyclesSize = 16;
parameter int OwnerSwCfgRomAlertPhaseCyclesOffset = 1296;
parameter int OwnerSwCfgRomAlertPhaseCyclesSize = 64;
parameter int OwnerSwCfgRomAlertDigestProdOffset = 1360;
parameter int OwnerSwCfgRomAlertDigestProdSize = 4;
parameter int OwnerSwCfgRomAlertDigestProdEndOffset = 1364;
parameter int OwnerSwCfgRomAlertDigestProdEndSize = 4;
parameter int OwnerSwCfgRomAlertDigestDevOffset = 1368;
parameter int OwnerSwCfgRomAlertDigestDevSize = 4;
parameter int OwnerSwCfgRomAlertDigestRmaOffset = 1372;
parameter int OwnerSwCfgRomAlertDigestRmaSize = 4;
parameter int OwnerSwCfgRomWatchdogBiteThresholdCyclesOffset = 1376;
parameter int OwnerSwCfgRomWatchdogBiteThresholdCyclesSize = 4;
parameter int OwnerSwCfgRomKeymgrRomExtMeasEnOffset = 1380;
parameter int OwnerSwCfgRomKeymgrRomExtMeasEnSize = 4;
parameter int OwnerSwCfgManufStateOffset = 1384;
parameter int OwnerSwCfgManufStateSize = 4;
parameter int OwnerSwCfgDigestOffset = 1656;
parameter int OwnerSwCfgDigestSize = 8;
parameter int HwCfgOffset = 1664;
parameter int HwCfgSize = 80;
parameter int DeviceIdOffset = 1664;
parameter int DeviceIdSize = 32;
parameter int ManufStateOffset = 1696;
parameter int ManufStateSize = 32;
parameter int EnSramIfetchOffset = 1728;
parameter int EnSramIfetchSize = 1;
parameter int EnCsrngSwAppReadOffset = 1729;
parameter int EnCsrngSwAppReadSize = 1;
parameter int EnEntropySrcFwReadOffset = 1730;
parameter int EnEntropySrcFwReadSize = 1;
parameter int EnEntropySrcFwOverOffset = 1731;
parameter int EnEntropySrcFwOverSize = 1;
parameter int HwCfgDigestOffset = 1736;
parameter int HwCfgDigestSize = 8;
parameter int Secret0Offset = 1744;
parameter int Secret0Size = 40;
parameter int TestUnlockTokenOffset = 1744;
parameter int TestUnlockTokenSize = 16;
parameter int TestExitTokenOffset = 1760;
parameter int TestExitTokenSize = 16;
parameter int Secret0DigestOffset = 1776;
parameter int Secret0DigestSize = 8;
parameter int Secret1Offset = 1784;
parameter int Secret1Size = 88;
parameter int FlashAddrKeySeedOffset = 1784;
parameter int FlashAddrKeySeedSize = 32;
parameter int FlashDataKeySeedOffset = 1816;
parameter int FlashDataKeySeedSize = 32;
parameter int SramDataKeySeedOffset = 1848;
parameter int SramDataKeySeedSize = 16;
parameter int Secret1DigestOffset = 1864;
parameter int Secret1DigestSize = 8;
parameter int Secret2Offset = 1872;
parameter int Secret2Size = 88;
parameter int RmaTokenOffset = 1872;
parameter int RmaTokenSize = 16;
parameter int CreatorRootKeyShare0Offset = 1888;
parameter int CreatorRootKeyShare0Size = 32;
parameter int CreatorRootKeyShare1Offset = 1920;
parameter int CreatorRootKeyShare1Size = 32;
parameter int Secret2DigestOffset = 1952;
parameter int Secret2DigestSize = 8;
parameter int LifeCycleOffset = 1960;
parameter int LifeCycleSize = 88;
parameter int LcTransitionCntOffset = 1960;
parameter int LcTransitionCntSize = 48;
parameter int LcStateOffset = 2008;
parameter int LcStateSize = 40;
parameter int NumAlerts = 5;
// Address widths within the block
parameter int CoreAw = 13;
parameter int PrimAw = 5;
///////////////////////////////////////////////
// Typedefs for registers for core interface //
///////////////////////////////////////////////
typedef struct packed {
struct packed {
logic q;
} otp_operation_done;
struct packed {
logic q;
} otp_error;
} otp_ctrl_reg2hw_intr_state_reg_t;
typedef struct packed {
struct packed {
logic q;
} otp_operation_done;
struct packed {
logic q;
} otp_error;
} otp_ctrl_reg2hw_intr_enable_reg_t;
typedef struct packed {
struct packed {
logic q;
logic qe;
} otp_operation_done;
struct packed {
logic q;
logic qe;
} otp_error;
} otp_ctrl_reg2hw_intr_test_reg_t;
typedef struct packed {
struct packed {
logic q;
logic qe;
} fatal_macro_error;
struct packed {
logic q;
logic qe;
} fatal_check_error;
struct packed {
logic q;
logic qe;
} fatal_bus_integ_error;
struct packed {
logic q;
logic qe;
} fatal_prim_otp_alert;
struct packed {
logic q;
logic qe;
} recov_prim_otp_alert;
} otp_ctrl_reg2hw_alert_test_reg_t;
typedef struct packed {
struct packed {
logic q;
logic qe;
} rd;
struct packed {
logic q;
logic qe;
} wr;
struct packed {
logic q;
logic qe;
} digest;
} otp_ctrl_reg2hw_direct_access_cmd_reg_t;
typedef struct packed {
logic [10:0] q;
} otp_ctrl_reg2hw_direct_access_address_reg_t;
typedef struct packed {
logic [31:0] q;
} otp_ctrl_reg2hw_direct_access_wdata_mreg_t;
typedef struct packed {
struct packed {
logic q;
logic qe;
} integrity;
struct packed {
logic q;
logic qe;
} consistency;
} otp_ctrl_reg2hw_check_trigger_reg_t;
typedef struct packed {
logic [31:0] q;
} otp_ctrl_reg2hw_check_timeout_reg_t;
typedef struct packed {
logic [31:0] q;
} otp_ctrl_reg2hw_integrity_check_period_reg_t;
typedef struct packed {
logic [31:0] q;
} otp_ctrl_reg2hw_consistency_check_period_reg_t;
typedef struct packed {
logic q;
} otp_ctrl_reg2hw_vendor_test_read_lock_reg_t;
typedef struct packed {
logic q;
} otp_ctrl_reg2hw_creator_sw_cfg_read_lock_reg_t;
typedef struct packed {
logic q;
} otp_ctrl_reg2hw_owner_sw_cfg_read_lock_reg_t;
typedef struct packed {
struct packed {
logic d;
logic de;
} otp_operation_done;
struct packed {
logic d;
logic de;
} otp_error;
} otp_ctrl_hw2reg_intr_state_reg_t;
typedef struct packed {
struct packed {
logic d;
} vendor_test_error;
struct packed {
logic d;
} creator_sw_cfg_error;
struct packed {
logic d;
} owner_sw_cfg_error;
struct packed {
logic d;
} hw_cfg_error;
struct packed {
logic d;
} secret0_error;
struct packed {
logic d;
} secret1_error;
struct packed {
logic d;
} secret2_error;
struct packed {
logic d;
} life_cycle_error;
struct packed {
logic d;
} dai_error;
struct packed {
logic d;
} lci_error;
struct packed {
logic d;
} timeout_error;
struct packed {
logic d;
} lfsr_fsm_error;
struct packed {
logic d;
} scrambling_fsm_error;
struct packed {
logic d;
} key_deriv_fsm_error;
struct packed {
logic d;
} bus_integ_error;
struct packed {
logic d;
} dai_idle;
struct packed {
logic d;
} check_pending;
} otp_ctrl_hw2reg_status_reg_t;
typedef struct packed {
logic [2:0] d;
} otp_ctrl_hw2reg_err_code_mreg_t;
typedef struct packed {
logic d;
} otp_ctrl_hw2reg_direct_access_regwen_reg_t;
typedef struct packed {
logic [31:0] d;
} otp_ctrl_hw2reg_direct_access_rdata_mreg_t;
typedef struct packed {
logic [31:0] d;
} otp_ctrl_hw2reg_vendor_test_digest_mreg_t;
typedef struct packed {
logic [31:0] d;
} otp_ctrl_hw2reg_creator_sw_cfg_digest_mreg_t;
typedef struct packed {
logic [31:0] d;
} otp_ctrl_hw2reg_owner_sw_cfg_digest_mreg_t;
typedef struct packed {
logic [31:0] d;
} otp_ctrl_hw2reg_hw_cfg_digest_mreg_t;
typedef struct packed {
logic [31:0] d;
} otp_ctrl_hw2reg_secret0_digest_mreg_t;
typedef struct packed {
logic [31:0] d;
} otp_ctrl_hw2reg_secret1_digest_mreg_t;
typedef struct packed {
logic [31:0] d;
} otp_ctrl_hw2reg_secret2_digest_mreg_t;
// Register -> HW type for core interface
typedef struct packed {
otp_ctrl_reg2hw_intr_state_reg_t intr_state; // [201:200]
otp_ctrl_reg2hw_intr_enable_reg_t intr_enable; // [199:198]
otp_ctrl_reg2hw_intr_test_reg_t intr_test; // [197:194]
otp_ctrl_reg2hw_alert_test_reg_t alert_test; // [193:184]
otp_ctrl_reg2hw_direct_access_cmd_reg_t direct_access_cmd; // [183:178]
otp_ctrl_reg2hw_direct_access_address_reg_t direct_access_address; // [177:167]
otp_ctrl_reg2hw_direct_access_wdata_mreg_t [1:0] direct_access_wdata; // [166:103]
otp_ctrl_reg2hw_check_trigger_reg_t check_trigger; // [102:99]
otp_ctrl_reg2hw_check_timeout_reg_t check_timeout; // [98:67]
otp_ctrl_reg2hw_integrity_check_period_reg_t integrity_check_period; // [66:35]
otp_ctrl_reg2hw_consistency_check_period_reg_t consistency_check_period; // [34:3]
otp_ctrl_reg2hw_vendor_test_read_lock_reg_t vendor_test_read_lock; // [2:2]
otp_ctrl_reg2hw_creator_sw_cfg_read_lock_reg_t creator_sw_cfg_read_lock; // [1:1]
otp_ctrl_reg2hw_owner_sw_cfg_read_lock_reg_t owner_sw_cfg_read_lock; // [0:0]
} otp_ctrl_core_reg2hw_t;
// HW -> register type for core interface
typedef struct packed {
otp_ctrl_hw2reg_intr_state_reg_t intr_state; // [563:560]
otp_ctrl_hw2reg_status_reg_t status; // [559:543]
otp_ctrl_hw2reg_err_code_mreg_t [9:0] err_code; // [542:513]
otp_ctrl_hw2reg_direct_access_regwen_reg_t direct_access_regwen; // [512:512]
otp_ctrl_hw2reg_direct_access_rdata_mreg_t [1:0] direct_access_rdata; // [511:448]
otp_ctrl_hw2reg_vendor_test_digest_mreg_t [1:0] vendor_test_digest; // [447:384]
otp_ctrl_hw2reg_creator_sw_cfg_digest_mreg_t [1:0] creator_sw_cfg_digest; // [383:320]
otp_ctrl_hw2reg_owner_sw_cfg_digest_mreg_t [1:0] owner_sw_cfg_digest; // [319:256]
otp_ctrl_hw2reg_hw_cfg_digest_mreg_t [1:0] hw_cfg_digest; // [255:192]
otp_ctrl_hw2reg_secret0_digest_mreg_t [1:0] secret0_digest; // [191:128]
otp_ctrl_hw2reg_secret1_digest_mreg_t [1:0] secret1_digest; // [127:64]
otp_ctrl_hw2reg_secret2_digest_mreg_t [1:0] secret2_digest; // [63:0]
} otp_ctrl_core_hw2reg_t;
// Register offsets for core interface
parameter logic [CoreAw-1:0] OTP_CTRL_INTR_STATE_OFFSET = 13'h 0;
parameter logic [CoreAw-1:0] OTP_CTRL_INTR_ENABLE_OFFSET = 13'h 4;
parameter logic [CoreAw-1:0] OTP_CTRL_INTR_TEST_OFFSET = 13'h 8;
parameter logic [CoreAw-1:0] OTP_CTRL_ALERT_TEST_OFFSET = 13'h c;
parameter logic [CoreAw-1:0] OTP_CTRL_STATUS_OFFSET = 13'h 10;
parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_OFFSET = 13'h 14;
parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_REGWEN_OFFSET = 13'h 18;
parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_CMD_OFFSET = 13'h 1c;
parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_ADDRESS_OFFSET = 13'h 20;
parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_WDATA_0_OFFSET = 13'h 24;
parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_WDATA_1_OFFSET = 13'h 28;
parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_RDATA_0_OFFSET = 13'h 2c;
parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_RDATA_1_OFFSET = 13'h 30;
parameter logic [CoreAw-1:0] OTP_CTRL_CHECK_TRIGGER_REGWEN_OFFSET = 13'h 34;
parameter logic [CoreAw-1:0] OTP_CTRL_CHECK_TRIGGER_OFFSET = 13'h 38;
parameter logic [CoreAw-1:0] OTP_CTRL_CHECK_REGWEN_OFFSET = 13'h 3c;
parameter logic [CoreAw-1:0] OTP_CTRL_CHECK_TIMEOUT_OFFSET = 13'h 40;
parameter logic [CoreAw-1:0] OTP_CTRL_INTEGRITY_CHECK_PERIOD_OFFSET = 13'h 44;
parameter logic [CoreAw-1:0] OTP_CTRL_CONSISTENCY_CHECK_PERIOD_OFFSET = 13'h 48;
parameter logic [CoreAw-1:0] OTP_CTRL_VENDOR_TEST_READ_LOCK_OFFSET = 13'h 4c;
parameter logic [CoreAw-1:0] OTP_CTRL_CREATOR_SW_CFG_READ_LOCK_OFFSET = 13'h 50;
parameter logic [CoreAw-1:0] OTP_CTRL_OWNER_SW_CFG_READ_LOCK_OFFSET = 13'h 54;
parameter logic [CoreAw-1:0] OTP_CTRL_VENDOR_TEST_DIGEST_0_OFFSET = 13'h 58;
parameter logic [CoreAw-1:0] OTP_CTRL_VENDOR_TEST_DIGEST_1_OFFSET = 13'h 5c;
parameter logic [CoreAw-1:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_0_OFFSET = 13'h 60;
parameter logic [CoreAw-1:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_1_OFFSET = 13'h 64;
parameter logic [CoreAw-1:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_0_OFFSET = 13'h 68;
parameter logic [CoreAw-1:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_1_OFFSET = 13'h 6c;
parameter logic [CoreAw-1:0] OTP_CTRL_HW_CFG_DIGEST_0_OFFSET = 13'h 70;
parameter logic [CoreAw-1:0] OTP_CTRL_HW_CFG_DIGEST_1_OFFSET = 13'h 74;
parameter logic [CoreAw-1:0] OTP_CTRL_SECRET0_DIGEST_0_OFFSET = 13'h 78;
parameter logic [CoreAw-1:0] OTP_CTRL_SECRET0_DIGEST_1_OFFSET = 13'h 7c;
parameter logic [CoreAw-1:0] OTP_CTRL_SECRET1_DIGEST_0_OFFSET = 13'h 80;
parameter logic [CoreAw-1:0] OTP_CTRL_SECRET1_DIGEST_1_OFFSET = 13'h 84;
parameter logic [CoreAw-1:0] OTP_CTRL_SECRET2_DIGEST_0_OFFSET = 13'h 88;
parameter logic [CoreAw-1:0] OTP_CTRL_SECRET2_DIGEST_1_OFFSET = 13'h 8c;
// Reset values for hwext registers and their fields for core interface
parameter logic [1:0] OTP_CTRL_INTR_TEST_RESVAL = 2'h 0;
parameter logic [0:0] OTP_CTRL_INTR_TEST_OTP_OPERATION_DONE_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_INTR_TEST_OTP_ERROR_RESVAL = 1'h 0;
parameter logic [4:0] OTP_CTRL_ALERT_TEST_RESVAL = 5'h 0;
parameter logic [0:0] OTP_CTRL_ALERT_TEST_FATAL_MACRO_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_ALERT_TEST_FATAL_CHECK_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_ALERT_TEST_FATAL_BUS_INTEG_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_ALERT_TEST_FATAL_PRIM_OTP_ALERT_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_ALERT_TEST_RECOV_PRIM_OTP_ALERT_RESVAL = 1'h 0;
parameter logic [16:0] OTP_CTRL_STATUS_RESVAL = 17'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_VENDOR_TEST_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_CREATOR_SW_CFG_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_OWNER_SW_CFG_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_HW_CFG_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_SECRET0_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_SECRET1_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_SECRET2_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_LIFE_CYCLE_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_DAI_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_LCI_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_TIMEOUT_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_LFSR_FSM_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_SCRAMBLING_FSM_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_KEY_DERIV_FSM_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_BUS_INTEG_ERROR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_DAI_IDLE_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_STATUS_CHECK_PENDING_RESVAL = 1'h 0;
parameter logic [29:0] OTP_CTRL_ERR_CODE_RESVAL = 30'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_0_RESVAL = 3'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_1_RESVAL = 3'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_2_RESVAL = 3'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_3_RESVAL = 3'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_4_RESVAL = 3'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_5_RESVAL = 3'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_6_RESVAL = 3'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_7_RESVAL = 3'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_8_RESVAL = 3'h 0;
parameter logic [2:0] OTP_CTRL_ERR_CODE_ERR_CODE_9_RESVAL = 3'h 0;
parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_REGWEN_RESVAL = 1'h 1;
parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_RESVAL = 1'h 1;
parameter logic [2:0] OTP_CTRL_DIRECT_ACCESS_CMD_RESVAL = 3'h 0;
parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_CMD_RD_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_CMD_WR_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_CMD_DIGEST_RESVAL = 1'h 0;
parameter logic [31:0] OTP_CTRL_DIRECT_ACCESS_RDATA_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_DIRECT_ACCESS_RDATA_0_DIRECT_ACCESS_RDATA_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_DIRECT_ACCESS_RDATA_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_DIRECT_ACCESS_RDATA_1_DIRECT_ACCESS_RDATA_1_RESVAL = 32'h 0;
parameter logic [1:0] OTP_CTRL_CHECK_TRIGGER_RESVAL = 2'h 0;
parameter logic [0:0] OTP_CTRL_CHECK_TRIGGER_INTEGRITY_RESVAL = 1'h 0;
parameter logic [0:0] OTP_CTRL_CHECK_TRIGGER_CONSISTENCY_RESVAL = 1'h 0;
parameter logic [31:0] OTP_CTRL_VENDOR_TEST_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_VENDOR_TEST_DIGEST_0_VENDOR_TEST_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_VENDOR_TEST_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_VENDOR_TEST_DIGEST_1_VENDOR_TEST_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_0_CREATOR_SW_CFG_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_1_CREATOR_SW_CFG_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_0_OWNER_SW_CFG_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_1_OWNER_SW_CFG_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_HW_CFG_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_HW_CFG_DIGEST_0_HW_CFG_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_HW_CFG_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_HW_CFG_DIGEST_1_HW_CFG_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET0_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET0_DIGEST_0_SECRET0_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET0_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET0_DIGEST_1_SECRET0_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET1_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET1_DIGEST_0_SECRET1_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET1_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET1_DIGEST_1_SECRET1_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET2_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET2_DIGEST_0_SECRET2_DIGEST_0_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET2_DIGEST_1_RESVAL = 32'h 0;
parameter logic [31:0] OTP_CTRL_SECRET2_DIGEST_1_SECRET2_DIGEST_1_RESVAL = 32'h 0;
// Window parameters for core interface
parameter logic [CoreAw-1:0] OTP_CTRL_SW_CFG_WINDOW_OFFSET = 13'h 1000;
parameter int unsigned OTP_CTRL_SW_CFG_WINDOW_SIZE = 'h 800;
// Register index for core interface
typedef enum int {
OTP_CTRL_INTR_STATE,
OTP_CTRL_INTR_ENABLE,
OTP_CTRL_INTR_TEST,
OTP_CTRL_ALERT_TEST,
OTP_CTRL_STATUS,
OTP_CTRL_ERR_CODE,
OTP_CTRL_DIRECT_ACCESS_REGWEN,
OTP_CTRL_DIRECT_ACCESS_CMD,
OTP_CTRL_DIRECT_ACCESS_ADDRESS,
OTP_CTRL_DIRECT_ACCESS_WDATA_0,
OTP_CTRL_DIRECT_ACCESS_WDATA_1,
OTP_CTRL_DIRECT_ACCESS_RDATA_0,
OTP_CTRL_DIRECT_ACCESS_RDATA_1,
OTP_CTRL_CHECK_TRIGGER_REGWEN,
OTP_CTRL_CHECK_TRIGGER,
OTP_CTRL_CHECK_REGWEN,
OTP_CTRL_CHECK_TIMEOUT,
OTP_CTRL_INTEGRITY_CHECK_PERIOD,
OTP_CTRL_CONSISTENCY_CHECK_PERIOD,
OTP_CTRL_VENDOR_TEST_READ_LOCK,
OTP_CTRL_CREATOR_SW_CFG_READ_LOCK,
OTP_CTRL_OWNER_SW_CFG_READ_LOCK,
OTP_CTRL_VENDOR_TEST_DIGEST_0,
OTP_CTRL_VENDOR_TEST_DIGEST_1,
OTP_CTRL_CREATOR_SW_CFG_DIGEST_0,
OTP_CTRL_CREATOR_SW_CFG_DIGEST_1,
OTP_CTRL_OWNER_SW_CFG_DIGEST_0,
OTP_CTRL_OWNER_SW_CFG_DIGEST_1,
OTP_CTRL_HW_CFG_DIGEST_0,
OTP_CTRL_HW_CFG_DIGEST_1,
OTP_CTRL_SECRET0_DIGEST_0,
OTP_CTRL_SECRET0_DIGEST_1,
OTP_CTRL_SECRET1_DIGEST_0,
OTP_CTRL_SECRET1_DIGEST_1,
OTP_CTRL_SECRET2_DIGEST_0,
OTP_CTRL_SECRET2_DIGEST_1
} otp_ctrl_core_id_e;
// Register width information to check illegal writes for core interface
parameter logic [3:0] OTP_CTRL_CORE_PERMIT [36] = '{
4'b 0001, // index[ 0] OTP_CTRL_INTR_STATE
4'b 0001, // index[ 1] OTP_CTRL_INTR_ENABLE
4'b 0001, // index[ 2] OTP_CTRL_INTR_TEST
4'b 0001, // index[ 3] OTP_CTRL_ALERT_TEST
4'b 0111, // index[ 4] OTP_CTRL_STATUS
4'b 1111, // index[ 5] OTP_CTRL_ERR_CODE
4'b 0001, // index[ 6] OTP_CTRL_DIRECT_ACCESS_REGWEN
4'b 0001, // index[ 7] OTP_CTRL_DIRECT_ACCESS_CMD
4'b 0011, // index[ 8] OTP_CTRL_DIRECT_ACCESS_ADDRESS
4'b 1111, // index[ 9] OTP_CTRL_DIRECT_ACCESS_WDATA_0
4'b 1111, // index[10] OTP_CTRL_DIRECT_ACCESS_WDATA_1
4'b 1111, // index[11] OTP_CTRL_DIRECT_ACCESS_RDATA_0
4'b 1111, // index[12] OTP_CTRL_DIRECT_ACCESS_RDATA_1
4'b 0001, // index[13] OTP_CTRL_CHECK_TRIGGER_REGWEN
4'b 0001, // index[14] OTP_CTRL_CHECK_TRIGGER
4'b 0001, // index[15] OTP_CTRL_CHECK_REGWEN
4'b 1111, // index[16] OTP_CTRL_CHECK_TIMEOUT
4'b 1111, // index[17] OTP_CTRL_INTEGRITY_CHECK_PERIOD
4'b 1111, // index[18] OTP_CTRL_CONSISTENCY_CHECK_PERIOD
4'b 0001, // index[19] OTP_CTRL_VENDOR_TEST_READ_LOCK
4'b 0001, // index[20] OTP_CTRL_CREATOR_SW_CFG_READ_LOCK
4'b 0001, // index[21] OTP_CTRL_OWNER_SW_CFG_READ_LOCK
4'b 1111, // index[22] OTP_CTRL_VENDOR_TEST_DIGEST_0
4'b 1111, // index[23] OTP_CTRL_VENDOR_TEST_DIGEST_1
4'b 1111, // index[24] OTP_CTRL_CREATOR_SW_CFG_DIGEST_0
4'b 1111, // index[25] OTP_CTRL_CREATOR_SW_CFG_DIGEST_1
4'b 1111, // index[26] OTP_CTRL_OWNER_SW_CFG_DIGEST_0
4'b 1111, // index[27] OTP_CTRL_OWNER_SW_CFG_DIGEST_1
4'b 1111, // index[28] OTP_CTRL_HW_CFG_DIGEST_0
4'b 1111, // index[29] OTP_CTRL_HW_CFG_DIGEST_1
4'b 1111, // index[30] OTP_CTRL_SECRET0_DIGEST_0
4'b 1111, // index[31] OTP_CTRL_SECRET0_DIGEST_1
4'b 1111, // index[32] OTP_CTRL_SECRET1_DIGEST_0
4'b 1111, // index[33] OTP_CTRL_SECRET1_DIGEST_1
4'b 1111, // index[34] OTP_CTRL_SECRET2_DIGEST_0
4'b 1111 // index[35] OTP_CTRL_SECRET2_DIGEST_1
};
///////////////////////////////////////////////
// Typedefs for registers for prim interface //
///////////////////////////////////////////////
typedef struct packed {
struct packed {
logic q;
} field0;
struct packed {
logic q;
} field1;
struct packed {
logic q;
} field2;
struct packed {
logic [9:0] q;
} field3;
struct packed {
logic [10:0] q;
} field4;
} otp_ctrl_reg2hw_csr0_reg_t;
typedef struct packed {
struct packed {
logic [6:0] q;
} field0;
struct packed {
logic q;
} field1;
struct packed {
logic [6:0] q;
} field2;
struct packed {
logic q;
} field3;
struct packed {
logic [15:0] q;
} field4;
} otp_ctrl_reg2hw_csr1_reg_t;
typedef struct packed {
logic q;
} otp_ctrl_reg2hw_csr2_reg_t;
typedef struct packed {
struct packed {
logic [2:0] q;
} field0;
struct packed {
logic [9:0] q;
} field1;
struct packed {
logic q;
} field2;
struct packed {
logic q;
} field3;
struct packed {
logic q;
} field4;
struct packed {
logic q;
} field5;
struct packed {
logic q;
} field6;
struct packed {
logic q;
} field7;
struct packed {
logic q;
} field8;
} otp_ctrl_reg2hw_csr3_reg_t;
typedef struct packed {
struct packed {
logic [9:0] q;
} field0;
struct packed {
logic q;
} field1;
struct packed {
logic q;
} field2;
struct packed {
logic q;
} field3;
} otp_ctrl_reg2hw_csr4_reg_t;
typedef struct packed {
struct packed {
logic [5:0] q;
} field0;
struct packed {
logic [1:0] q;
} field1;
struct packed {
logic q;
} field2;
struct packed {
logic [2:0] q;
} field3;
struct packed {
logic q;
} field4;
struct packed {
logic q;
} field5;
struct packed {
logic [15:0] q;
} field6;
} otp_ctrl_reg2hw_csr5_reg_t;
typedef struct packed {
struct packed {
logic [9:0] q;
} field0;
struct packed {
logic q;
} field1;
struct packed {
logic q;
} field2;
struct packed {
logic [15:0] q;
} field3;
} otp_ctrl_reg2hw_csr6_reg_t;
typedef struct packed {
struct packed {
logic [5:0] q;
} field0;
struct packed {
logic [2:0] q;
} field1;
struct packed {
logic q;
} field2;
struct packed {
logic q;
} field3;
} otp_ctrl_reg2hw_csr7_reg_t;
typedef struct packed {
struct packed {
logic [2:0] d;
logic de;
} field0;
struct packed {
logic [9:0] d;
logic de;
} field1;
struct packed {
logic d;
logic de;
} field2;
struct packed {
logic d;
logic de;
} field3;
struct packed {
logic d;
logic de;
} field4;
struct packed {
logic d;
logic de;
} field5;
struct packed {
logic d;
logic de;
} field6;
struct packed {
logic d;
logic de;
} field7;
struct packed {
logic d;
logic de;
} field8;
} otp_ctrl_hw2reg_csr3_reg_t;
typedef struct packed {
struct packed {
logic [5:0] d;
logic de;
} field0;
struct packed {
logic [1:0] d;
logic de;
} field1;
struct packed {
logic d;
logic de;
} field2;
struct packed {
logic [2:0] d;
logic de;
} field3;
struct packed {
logic d;
logic de;
} field4;
struct packed {
logic d;
logic de;
} field5;
struct packed {
logic [15:0] d;
logic de;
} field6;
} otp_ctrl_hw2reg_csr5_reg_t;
typedef struct packed {
struct packed {
logic [5:0] d;
logic de;
} field0;
struct packed {
logic [2:0] d;
logic de;
} field1;
struct packed {
logic d;
logic de;
} field2;
struct packed {
logic d;
logic de;
} field3;
} otp_ctrl_hw2reg_csr7_reg_t;
// Register -> HW type for prim interface
typedef struct packed {
otp_ctrl_reg2hw_csr0_reg_t csr0; // [158:135]
otp_ctrl_reg2hw_csr1_reg_t csr1; // [134:103]
otp_ctrl_reg2hw_csr2_reg_t csr2; // [102:102]
otp_ctrl_reg2hw_csr3_reg_t csr3; // [101:82]
otp_ctrl_reg2hw_csr4_reg_t csr4; // [81:69]
otp_ctrl_reg2hw_csr5_reg_t csr5; // [68:39]
otp_ctrl_reg2hw_csr6_reg_t csr6; // [38:11]
otp_ctrl_reg2hw_csr7_reg_t csr7; // [10:0]
} otp_ctrl_prim_reg2hw_t;
// HW -> register type for prim interface
typedef struct packed {
otp_ctrl_hw2reg_csr3_reg_t csr3; // [80:52]
otp_ctrl_hw2reg_csr5_reg_t csr5; // [51:15]
otp_ctrl_hw2reg_csr7_reg_t csr7; // [14:0]
} otp_ctrl_prim_hw2reg_t;
// Register offsets for prim interface
parameter logic [PrimAw-1:0] OTP_CTRL_CSR0_OFFSET = 5'h 0;
parameter logic [PrimAw-1:0] OTP_CTRL_CSR1_OFFSET = 5'h 4;
parameter logic [PrimAw-1:0] OTP_CTRL_CSR2_OFFSET = 5'h 8;
parameter logic [PrimAw-1:0] OTP_CTRL_CSR3_OFFSET = 5'h c;
parameter logic [PrimAw-1:0] OTP_CTRL_CSR4_OFFSET = 5'h 10;
parameter logic [PrimAw-1:0] OTP_CTRL_CSR5_OFFSET = 5'h 14;
parameter logic [PrimAw-1:0] OTP_CTRL_CSR6_OFFSET = 5'h 18;
parameter logic [PrimAw-1:0] OTP_CTRL_CSR7_OFFSET = 5'h 1c;
// Register index for prim interface
typedef enum int {
OTP_CTRL_CSR0,
OTP_CTRL_CSR1,
OTP_CTRL_CSR2,
OTP_CTRL_CSR3,
OTP_CTRL_CSR4,
OTP_CTRL_CSR5,
OTP_CTRL_CSR6,
OTP_CTRL_CSR7
} otp_ctrl_prim_id_e;
// Register width information to check illegal writes for prim interface
parameter logic [3:0] OTP_CTRL_PRIM_PERMIT [8] = '{
4'b 1111, // index[0] OTP_CTRL_CSR0
4'b 1111, // index[1] OTP_CTRL_CSR1
4'b 0001, // index[2] OTP_CTRL_CSR2
4'b 0111, // index[3] OTP_CTRL_CSR3
4'b 0011, // index[4] OTP_CTRL_CSR4
4'b 1111, // index[5] OTP_CTRL_CSR5
4'b 1111, // index[6] OTP_CTRL_CSR6
4'b 0011 // index[7] OTP_CTRL_CSR7
};
endpackage