[top] Add a SV enum for enumerating alerts
Signed-off-by: Michael Schaffner <msf@google.com>
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
index e2e7e97..9fc4595 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
@@ -551,6 +551,122 @@
parameter int unsigned TOP_EARLGREY_ROM_SIZE_BYTES = 32'h8000;
+ // Enumeration of alert modules
+ typedef enum int unsigned {
+ TopEarlgreyAlertPeripheralUart0 = 0,
+ TopEarlgreyAlertPeripheralUart1 = 1,
+ TopEarlgreyAlertPeripheralUart2 = 2,
+ TopEarlgreyAlertPeripheralUart3 = 3,
+ TopEarlgreyAlertPeripheralGpio = 4,
+ TopEarlgreyAlertPeripheralSpiDevice = 5,
+ TopEarlgreyAlertPeripheralI2c0 = 6,
+ TopEarlgreyAlertPeripheralI2c1 = 7,
+ TopEarlgreyAlertPeripheralI2c2 = 8,
+ TopEarlgreyAlertPeripheralPattgen = 9,
+ TopEarlgreyAlertPeripheralRvTimer = 10,
+ TopEarlgreyAlertPeripheralOtpCtrl = 11,
+ TopEarlgreyAlertPeripheralLcCtrl = 12,
+ TopEarlgreyAlertPeripheralSpiHost0 = 13,
+ TopEarlgreyAlertPeripheralSpiHost1 = 14,
+ TopEarlgreyAlertPeripheralUsbdev = 15,
+ TopEarlgreyAlertPeripheralPwrmgrAon = 16,
+ TopEarlgreyAlertPeripheralRstmgrAon = 17,
+ TopEarlgreyAlertPeripheralClkmgrAon = 18,
+ TopEarlgreyAlertPeripheralSysrstCtrlAon = 19,
+ TopEarlgreyAlertPeripheralAdcCtrlAon = 20,
+ TopEarlgreyAlertPeripheralPwmAon = 21,
+ TopEarlgreyAlertPeripheralPinmuxAon = 22,
+ TopEarlgreyAlertPeripheralAonTimerAon = 23,
+ TopEarlgreyAlertPeripheralSensorCtrl = 24,
+ TopEarlgreyAlertPeripheralSramCtrlRetAon = 25,
+ TopEarlgreyAlertPeripheralFlashCtrl = 26,
+ TopEarlgreyAlertPeripheralRvDm = 27,
+ TopEarlgreyAlertPeripheralRvPlic = 28,
+ TopEarlgreyAlertPeripheralAes = 29,
+ TopEarlgreyAlertPeripheralHmac = 30,
+ TopEarlgreyAlertPeripheralKmac = 31,
+ TopEarlgreyAlertPeripheralOtbn = 32,
+ TopEarlgreyAlertPeripheralKeymgr = 33,
+ TopEarlgreyAlertPeripheralCsrng = 34,
+ TopEarlgreyAlertPeripheralEntropySrc = 35,
+ TopEarlgreyAlertPeripheralEdn0 = 36,
+ TopEarlgreyAlertPeripheralEdn1 = 37,
+ TopEarlgreyAlertPeripheralSramCtrlMain = 38,
+ TopEarlgreyAlertPeripheralRomCtrl = 39,
+ TopEarlgreyAlertPeripheralRvCoreIbex = 40,
+ TopEarlgreyAlertPeripheralCount
+ } alert_peripheral_e;
+
+ // Enumeration of alerts
+ typedef enum int unsigned {
+ TopEarlgreyAlertIdUart0FatalFault = 0,
+ TopEarlgreyAlertIdUart1FatalFault = 1,
+ TopEarlgreyAlertIdUart2FatalFault = 2,
+ TopEarlgreyAlertIdUart3FatalFault = 3,
+ TopEarlgreyAlertIdGpioFatalFault = 4,
+ TopEarlgreyAlertIdSpiDeviceFatalFault = 5,
+ TopEarlgreyAlertIdI2c0FatalFault = 6,
+ TopEarlgreyAlertIdI2c1FatalFault = 7,
+ TopEarlgreyAlertIdI2c2FatalFault = 8,
+ TopEarlgreyAlertIdPattgenFatalFault = 9,
+ TopEarlgreyAlertIdRvTimerFatalFault = 10,
+ TopEarlgreyAlertIdOtpCtrlFatalMacroError = 11,
+ TopEarlgreyAlertIdOtpCtrlFatalCheckError = 12,
+ TopEarlgreyAlertIdOtpCtrlFatalBusIntegError = 13,
+ TopEarlgreyAlertIdOtpCtrlFatalPrimOtpAlert = 14,
+ TopEarlgreyAlertIdOtpCtrlRecovPrimOtpAlert = 15,
+ TopEarlgreyAlertIdLcCtrlFatalProgError = 16,
+ TopEarlgreyAlertIdLcCtrlFatalStateError = 17,
+ TopEarlgreyAlertIdLcCtrlFatalBusIntegError = 18,
+ TopEarlgreyAlertIdSpiHost0FatalFault = 19,
+ TopEarlgreyAlertIdSpiHost1FatalFault = 20,
+ TopEarlgreyAlertIdUsbdevFatalFault = 21,
+ TopEarlgreyAlertIdPwrmgrAonFatalFault = 22,
+ TopEarlgreyAlertIdRstmgrAonFatalFault = 23,
+ TopEarlgreyAlertIdRstmgrAonFatalCnstyFault = 24,
+ TopEarlgreyAlertIdClkmgrAonRecovFault = 25,
+ TopEarlgreyAlertIdClkmgrAonFatalFault = 26,
+ TopEarlgreyAlertIdSysrstCtrlAonFatalFault = 27,
+ TopEarlgreyAlertIdAdcCtrlAonFatalFault = 28,
+ TopEarlgreyAlertIdPwmAonFatalFault = 29,
+ TopEarlgreyAlertIdPinmuxAonFatalFault = 30,
+ TopEarlgreyAlertIdAonTimerAonFatalFault = 31,
+ TopEarlgreyAlertIdSensorCtrlRecovAlert = 32,
+ TopEarlgreyAlertIdSensorCtrlFatalAlert = 33,
+ TopEarlgreyAlertIdSramCtrlRetAonFatalError = 34,
+ TopEarlgreyAlertIdFlashCtrlRecovErr = 35,
+ TopEarlgreyAlertIdFlashCtrlFatalStdErr = 36,
+ TopEarlgreyAlertIdFlashCtrlFatalErr = 37,
+ TopEarlgreyAlertIdFlashCtrlFatalPrimFlashAlert = 38,
+ TopEarlgreyAlertIdFlashCtrlRecovPrimFlashAlert = 39,
+ TopEarlgreyAlertIdRvDmFatalFault = 40,
+ TopEarlgreyAlertIdRvPlicFatalFault = 41,
+ TopEarlgreyAlertIdAesRecovCtrlUpdateErr = 42,
+ TopEarlgreyAlertIdAesFatalFault = 43,
+ TopEarlgreyAlertIdHmacFatalFault = 44,
+ TopEarlgreyAlertIdKmacRecovOperationErr = 45,
+ TopEarlgreyAlertIdKmacFatalFaultErr = 46,
+ TopEarlgreyAlertIdOtbnFatal = 47,
+ TopEarlgreyAlertIdOtbnRecov = 48,
+ TopEarlgreyAlertIdKeymgrRecovOperationErr = 49,
+ TopEarlgreyAlertIdKeymgrFatalFaultErr = 50,
+ TopEarlgreyAlertIdCsrngRecovAlert = 51,
+ TopEarlgreyAlertIdCsrngFatalAlert = 52,
+ TopEarlgreyAlertIdEntropySrcRecovAlert = 53,
+ TopEarlgreyAlertIdEntropySrcFatalAlert = 54,
+ TopEarlgreyAlertIdEdn0RecovAlert = 55,
+ TopEarlgreyAlertIdEdn0FatalAlert = 56,
+ TopEarlgreyAlertIdEdn1RecovAlert = 57,
+ TopEarlgreyAlertIdEdn1FatalAlert = 58,
+ TopEarlgreyAlertIdSramCtrlMainFatalError = 59,
+ TopEarlgreyAlertIdRomCtrlFatal = 60,
+ TopEarlgreyAlertIdRvCoreIbexFatalSwErr = 61,
+ TopEarlgreyAlertIdRvCoreIbexRecovSwErr = 62,
+ TopEarlgreyAlertIdRvCoreIbexFatalHwErr = 63,
+ TopEarlgreyAlertIdRvCoreIbexRecovHwErr = 64,
+ TopEarlgreyAlertIdCount
+ } alert_id_e;
+
// Enumeration of IO power domains.
// Only used in ASIC target.
typedef enum logic [2:0] {
diff --git a/util/topgen/templates/toplevel_pkg.sv.tpl b/util/topgen/templates/toplevel_pkg.sv.tpl
index a25d4fd..7a9252e 100644
--- a/util/topgen/templates/toplevel_pkg.sv.tpl
+++ b/util/topgen/templates/toplevel_pkg.sv.tpl
@@ -40,6 +40,22 @@
% endfor
+ // Enumeration of alert modules
+ typedef enum int unsigned {
+% for mod in top["alert_module"]:
+ ${lib.Name.from_snake_case("top_" + top["name"] + "_alert_peripheral_" + mod).as_camel_case()} = ${loop.index},
+% endfor
+ TopEarlgreyAlertPeripheralCount
+ } alert_peripheral_e;
+
+ // Enumeration of alerts
+ typedef enum int unsigned {
+% for alert in top["alert"]:
+ ${lib.Name.from_snake_case("top_" + top["name"] + "_alert_id_" + alert["name"]).as_camel_case()} = ${loop.index},
+% endfor
+ TopEarlgreyAlertIdCount
+ } alert_id_e;
+
// Enumeration of IO power domains.
// Only used in ASIC target.
typedef enum logic [${len(top["pinout"]["banks"]).bit_length()-1}:0] {