[otbn] Align ERR_BITS and FATAL_ALERT_CAUSE
* Have all fatal error bits present in both ERR_BITS and
FATAL_ALERT_CAUSE, in the same order.
* Shift fatal errors to bit position 16+ in ERR_BITS to give room for
expansion of software errors below that without having to redo the
stuct layout.
Fixes #8259
Signed-off-by: Philipp Wagner <phw@lowrisc.org>
diff --git a/hw/ip/otbn/data/otbn.hjson b/hw/ip/otbn/data/otbn.hjson
index 5cc42b0..40a3804 100644
--- a/hw/ip/otbn/data/otbn.hjson
+++ b/hw/ip/otbn/data/otbn.hjson
@@ -268,6 +268,7 @@
swaccess: "ro",
hwaccess: "hwo",
fields: [
+ // Software errors
{ bits: "0",
name: "bad_data_addr"
resval: 0,
@@ -293,27 +294,34 @@
resval: 0,
desc: "A `LOOP` error was observed."
}
- { bits: "5",
+
+ // Fatal errors. Keep in sync with list in FATAL_ALERT_CAUSE.
+ { bits: "16",
name: "imem_intg_violation"
resval: 0,
desc: "A `IMEM_INTG_VIOLATION` error was observed."
}
- { bits: "6",
+ { bits: "17",
name: "dmem_intg_violation"
resval: 0,
desc: "A `DMEM_INTG_VIOLATION` error was observed."
}
- { bits: "7",
+ { bits: "18",
name: "reg_intg_violation"
resval: 0,
desc: "A `REG_INTG_VIOLATION` error was observed."
}
- { bits: "8",
+ { bits: "19",
+ name: "bus_intg_violation"
+ resval: 0,
+ desc: "A `BUS_INTG_VIOLATION` error was observed."
+ }
+ { bits: "20",
name: "illegal_bus_access"
resval: 0,
desc: "An `ILLEGAL_BUS_ACCESS` error was observed."
}
- { bits: "9",
+ { bits: "21",
name: "lifecycle_escalation"
resval: 0,
desc: "A `LIFECYCLE_ESCALATION` error was observed."
@@ -346,26 +354,27 @@
swaccess: "ro",
hwaccess: "hwo",
fields: [
+ // Keep the list in sync with the fatal errors in ERR_BITS.
{ bits: "0",
- name: "bus_intg_violation",
- resval: 0,
- desc: "A `BUS_INTG_VIOLATION` error was observed."
- }
- { bits: "1",
name: "imem_intg_violation",
resval: 0,
desc: "A `IMEM_INTG_VIOLATION` error was observed."
}
- { bits: "2",
+ { bits: "1",
name: "dmem_intg_violation",
resval: 0,
desc: "A `DMEM_INTG_VIOLATION` error was observed."
}
- { bits: "3",
+ { bits: "2",
name: "reg_intg_violation",
resval: 0,
desc: "A `REG_INTG_VIOLATION` error was observed."
}
+ { bits: "3",
+ name: "bus_intg_violation",
+ resval: 0,
+ desc: "A `BUS_INTG_VIOLATION` error was observed."
+ }
{ bits: "4",
name: "illegal_bus_access"
resval: 0,
diff --git a/hw/ip/otbn/dv/otbnsim/sim/constants.py b/hw/ip/otbn/dv/otbnsim/sim/constants.py
index a232e11..e50237f 100644
--- a/hw/ip/otbn/dv/otbnsim/sim/constants.py
+++ b/hw/ip/otbn/dv/otbnsim/sim/constants.py
@@ -27,8 +27,9 @@
CALL_STACK = 1 << 2
ILLEGAL_INSN = 1 << 3
LOOP = 1 << 4
- IMEM_INTG_VIOLATION = 1 << 5
- DMEM_INTG_VIOLATION = 1 << 6
- REG_INTG_VIOLATION = 1 << 7
- ILLEGAL_BUS_ACCESS = 1 << 8
- LIFECYCLE_ESCALATION = 1 << 9
+ IMEM_INTG_VIOLATION = 1 << 16
+ DMEM_INTG_VIOLATION = 1 << 17
+ REG_INTG_VIOLATION = 1 << 18
+ BUS_INTG_VIOLATION = 1 << 19
+ ILLEGAL_BUS_ACCESS = 1 << 20
+ LIFECYCLE_ESCALATION = 1 << 21
diff --git a/hw/ip/otbn/dv/verilator/otbn_top_sim.sv b/hw/ip/otbn/dv/verilator/otbn_top_sim.sv
index ad22c80..6b0d012 100644
--- a/hw/ip/otbn/dv/verilator/otbn_top_sim.sv
+++ b/hw/ip/otbn/dv/verilator/otbn_top_sim.sv
@@ -98,6 +98,7 @@
.insn_cnt_o ( insn_cnt ),
+ .bus_intg_violation_i ( 1'b0 ),
.illegal_bus_access_i ( 1'b0 ),
.lifecycle_escalation_i ( 1'b0 )
);
diff --git a/hw/ip/otbn/rtl/otbn.sv b/hw/ip/otbn/rtl/otbn.sv
index 834f3b6..1d89cfe 100644
--- a/hw/ip/otbn/rtl/otbn.sv
+++ b/hw/ip/otbn/rtl/otbn.sv
@@ -624,6 +624,9 @@
assign hw2reg.err_bits.reg_intg_violation.de = done;
assign hw2reg.err_bits.reg_intg_violation.d = err_bits.reg_intg_violation;
+ assign hw2reg.err_bits.bus_intg_violation.de = done;
+ assign hw2reg.err_bits.bus_intg_violation.d = bus_intg_violation;
+
assign hw2reg.err_bits.illegal_bus_access.de = done;
assign hw2reg.err_bits.illegal_bus_access.d = err_bits.illegal_bus_access;
@@ -637,8 +640,6 @@
// FATAL_ALERT_CAUSE register. The .de and .d values are equal for each bit, so that it can only
// be set, not cleared.
- assign hw2reg.fatal_alert_cause.bus_intg_violation.de = bus_intg_violation;
- assign hw2reg.fatal_alert_cause.bus_intg_violation.d = bus_intg_violation;
assign hw2reg.fatal_alert_cause.imem_intg_violation.de = imem_rerror;
assign hw2reg.fatal_alert_cause.imem_intg_violation.d = imem_rerror;
assign hw2reg.fatal_alert_cause.dmem_intg_violation.de = dmem_rerror;
@@ -646,6 +647,8 @@
// TODO: Register file errors
assign hw2reg.fatal_alert_cause.reg_intg_violation.de = 0;
assign hw2reg.fatal_alert_cause.reg_intg_violation.d = 0;
+ assign hw2reg.fatal_alert_cause.bus_intg_violation.de = bus_intg_violation;
+ assign hw2reg.fatal_alert_cause.bus_intg_violation.d = bus_intg_violation;
assign hw2reg.fatal_alert_cause.illegal_bus_access.de = illegal_bus_access_d;
assign hw2reg.fatal_alert_cause.illegal_bus_access.d = illegal_bus_access_d;
assign hw2reg.fatal_alert_cause.lifecycle_escalation.de = lifecycle_escalation;
@@ -846,6 +849,7 @@
.insn_cnt_o (insn_cnt_rtl),
+ .bus_intg_violation_i (bus_intg_violation),
.illegal_bus_access_i (illegal_bus_access_q),
.lifecycle_escalation_i (lifecycle_escalation)
);
@@ -894,6 +898,7 @@
.insn_cnt_o (insn_cnt),
+ .bus_intg_violation_i (bus_intg_violation),
.illegal_bus_access_i (illegal_bus_access_q),
.lifecycle_escalation_i (lifecycle_escalation)
);
diff --git a/hw/ip/otbn/rtl/otbn_controller.sv b/hw/ip/otbn/rtl/otbn_controller.sv
index 436a039..101ccb8 100644
--- a/hw/ip/otbn/rtl/otbn_controller.sv
+++ b/hw/ip/otbn/rtl/otbn_controller.sv
@@ -125,6 +125,7 @@
input logic state_reset_i,
output logic [31:0] insn_cnt_o,
+ input logic bus_intg_violation_i,
input logic illegal_bus_access_i,
input logic lifecycle_escalation_i
);
@@ -338,9 +339,10 @@
assign err_bits_o.lifecycle_escalation = lifecycle_escalation_i;
assign err_bits_o.illegal_bus_access = illegal_bus_access_i;
+ assign err_bits_o.bus_intg_violation = bus_intg_violation_i;
assign err_bits_o.reg_intg_violation = rf_base_rd_data_err_i | rf_bignum_rd_data_err_i;
- assign err_bits_o.imem_intg_violation = insn_fetch_err_i;
assign err_bits_o.dmem_intg_violation = lsu_rdata_err_i;
+ assign err_bits_o.imem_intg_violation = insn_fetch_err_i;
assign err_bits_o.illegal_insn = illegal_insn_static | rf_indirect_err;
assign err_bits_o.bad_data_addr = dmem_addr_err;
assign err_bits_o.loop = loop_err;
diff --git a/hw/ip/otbn/rtl/otbn_core.sv b/hw/ip/otbn/rtl/otbn_core.sv
index cc47588..2aab4d7 100644
--- a/hw/ip/otbn/rtl/otbn_core.sv
+++ b/hw/ip/otbn/rtl/otbn_core.sv
@@ -68,6 +68,9 @@
output logic [31:0] insn_cnt_o,
+ // An integrity check on an incoming bus transaction failed. Results in a fatal error.
+ input logic bus_intg_violation_i,
+
// Asserted by system when bus tries to access OTBN memories whilst OTBN is active. Results in a
// fatal error.
input logic illegal_bus_access_i,
@@ -356,6 +359,7 @@
.state_reset_i (state_reset),
.insn_cnt_o (insn_cnt),
+ .bus_intg_violation_i,
.illegal_bus_access_i,
.lifecycle_escalation_i
);
diff --git a/hw/ip/otbn/rtl/otbn_pkg.sv b/hw/ip/otbn/rtl/otbn_pkg.sv
index 47f970a..ac6d303 100644
--- a/hw/ip/otbn/rtl/otbn_pkg.sv
+++ b/hw/ip/otbn/rtl/otbn_pkg.sv
@@ -72,6 +72,7 @@
typedef struct packed {
logic lifecycle_escalation;
logic illegal_bus_access;
+ logic bus_intg_violation;
logic reg_intg_violation;
logic dmem_intg_violation;
logic imem_intg_violation;
diff --git a/hw/ip/otbn/rtl/otbn_reg_pkg.sv b/hw/ip/otbn/rtl/otbn_reg_pkg.sv
index 5c9fce7..9fe76b4 100644
--- a/hw/ip/otbn/rtl/otbn_reg_pkg.sv
+++ b/hw/ip/otbn/rtl/otbn_reg_pkg.sv
@@ -94,6 +94,10 @@
struct packed {
logic d;
logic de;
+ } bus_intg_violation;
+ struct packed {
+ logic d;
+ logic de;
} illegal_bus_access;
struct packed {
logic d;
@@ -105,10 +109,6 @@
struct packed {
logic d;
logic de;
- } bus_intg_violation;
- struct packed {
- logic d;
- logic de;
} imem_intg_violation;
struct packed {
logic d;
@@ -121,6 +121,10 @@
struct packed {
logic d;
logic de;
+ } bus_intg_violation;
+ struct packed {
+ logic d;
+ logic de;
} illegal_bus_access;
struct packed {
logic d;
@@ -144,9 +148,9 @@
// HW -> register type
typedef struct packed {
- otbn_hw2reg_intr_state_reg_t intr_state; // [73:72]
- otbn_hw2reg_status_reg_t status; // [71:64]
- otbn_hw2reg_err_bits_reg_t err_bits; // [63:44]
+ otbn_hw2reg_intr_state_reg_t intr_state; // [75:74]
+ otbn_hw2reg_status_reg_t status; // [73:66]
+ otbn_hw2reg_err_bits_reg_t err_bits; // [65:44]
otbn_hw2reg_fatal_alert_cause_reg_t fatal_alert_cause; // [43:32]
otbn_hw2reg_insn_cnt_reg_t insn_cnt; // [31:0]
} otbn_hw2reg_t;
@@ -204,7 +208,7 @@
4'b 0001, // index[3] OTBN_ALERT_TEST
4'b 0001, // index[4] OTBN_CMD
4'b 0001, // index[5] OTBN_STATUS
- 4'b 0011, // index[6] OTBN_ERR_BITS
+ 4'b 0111, // index[6] OTBN_ERR_BITS
4'b 1111, // index[7] OTBN_START_ADDR
4'b 0001, // index[8] OTBN_FATAL_ALERT_CAUSE
4'b 1111 // index[9] OTBN_INSN_CNT
diff --git a/hw/ip/otbn/rtl/otbn_reg_top.sv b/hw/ip/otbn/rtl/otbn_reg_top.sv
index 09284ac..3c137e2 100644
--- a/hw/ip/otbn/rtl/otbn_reg_top.sv
+++ b/hw/ip/otbn/rtl/otbn_reg_top.sv
@@ -184,14 +184,15 @@
logic err_bits_imem_intg_violation_qs;
logic err_bits_dmem_intg_violation_qs;
logic err_bits_reg_intg_violation_qs;
+ logic err_bits_bus_intg_violation_qs;
logic err_bits_illegal_bus_access_qs;
logic err_bits_lifecycle_escalation_qs;
logic start_addr_we;
logic [31:0] start_addr_wd;
- logic fatal_alert_cause_bus_intg_violation_qs;
logic fatal_alert_cause_imem_intg_violation_qs;
logic fatal_alert_cause_dmem_intg_violation_qs;
logic fatal_alert_cause_reg_intg_violation_qs;
+ logic fatal_alert_cause_bus_intg_violation_qs;
logic fatal_alert_cause_illegal_bus_access_qs;
logic fatal_alert_cause_lifecycle_escalation_qs;
logic insn_cnt_re;
@@ -451,7 +452,7 @@
.qs (err_bits_loop_qs)
);
- // F[imem_intg_violation]: 5:5
+ // F[imem_intg_violation]: 16:16
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -476,7 +477,7 @@
.qs (err_bits_imem_intg_violation_qs)
);
- // F[dmem_intg_violation]: 6:6
+ // F[dmem_intg_violation]: 17:17
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -501,7 +502,7 @@
.qs (err_bits_dmem_intg_violation_qs)
);
- // F[reg_intg_violation]: 7:7
+ // F[reg_intg_violation]: 18:18
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -526,7 +527,32 @@
.qs (err_bits_reg_intg_violation_qs)
);
- // F[illegal_bus_access]: 8:8
+ // F[bus_intg_violation]: 19:19
+ prim_subreg #(
+ .DW (1),
+ .SwAccess(prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0)
+ ) u_err_bits_bus_intg_violation (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.err_bits.bus_intg_violation.de),
+ .d (hw2reg.err_bits.bus_intg_violation.d),
+
+ // to internal hardware
+ .qe (),
+ .q (),
+
+ // to register interface (read)
+ .qs (err_bits_bus_intg_violation_qs)
+ );
+
+ // F[illegal_bus_access]: 20:20
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -551,7 +577,7 @@
.qs (err_bits_illegal_bus_access_qs)
);
- // F[lifecycle_escalation]: 9:9
+ // F[lifecycle_escalation]: 21:21
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -604,32 +630,7 @@
// R[fatal_alert_cause]: V(False)
- // F[bus_intg_violation]: 0:0
- prim_subreg #(
- .DW (1),
- .SwAccess(prim_subreg_pkg::SwAccessRO),
- .RESVAL (1'h0)
- ) u_fatal_alert_cause_bus_intg_violation (
- .clk_i (clk_i),
- .rst_ni (rst_ni),
-
- // from register interface
- .we (1'b0),
- .wd ('0),
-
- // from internal hardware
- .de (hw2reg.fatal_alert_cause.bus_intg_violation.de),
- .d (hw2reg.fatal_alert_cause.bus_intg_violation.d),
-
- // to internal hardware
- .qe (),
- .q (),
-
- // to register interface (read)
- .qs (fatal_alert_cause_bus_intg_violation_qs)
- );
-
- // F[imem_intg_violation]: 1:1
+ // F[imem_intg_violation]: 0:0
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -654,7 +655,7 @@
.qs (fatal_alert_cause_imem_intg_violation_qs)
);
- // F[dmem_intg_violation]: 2:2
+ // F[dmem_intg_violation]: 1:1
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -679,7 +680,7 @@
.qs (fatal_alert_cause_dmem_intg_violation_qs)
);
- // F[reg_intg_violation]: 3:3
+ // F[reg_intg_violation]: 2:2
prim_subreg #(
.DW (1),
.SwAccess(prim_subreg_pkg::SwAccessRO),
@@ -704,6 +705,31 @@
.qs (fatal_alert_cause_reg_intg_violation_qs)
);
+ // F[bus_intg_violation]: 3:3
+ prim_subreg #(
+ .DW (1),
+ .SwAccess(prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0)
+ ) u_fatal_alert_cause_bus_intg_violation (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.fatal_alert_cause.bus_intg_violation.de),
+ .d (hw2reg.fatal_alert_cause.bus_intg_violation.d),
+
+ // to internal hardware
+ .qe (),
+ .q (),
+
+ // to register interface (read)
+ .qs (fatal_alert_cause_bus_intg_violation_qs)
+ );
+
// F[illegal_bus_access]: 4:4
prim_subreg #(
.DW (1),
@@ -860,11 +886,12 @@
reg_rdata_next[2] = err_bits_call_stack_qs;
reg_rdata_next[3] = err_bits_illegal_insn_qs;
reg_rdata_next[4] = err_bits_loop_qs;
- reg_rdata_next[5] = err_bits_imem_intg_violation_qs;
- reg_rdata_next[6] = err_bits_dmem_intg_violation_qs;
- reg_rdata_next[7] = err_bits_reg_intg_violation_qs;
- reg_rdata_next[8] = err_bits_illegal_bus_access_qs;
- reg_rdata_next[9] = err_bits_lifecycle_escalation_qs;
+ reg_rdata_next[16] = err_bits_imem_intg_violation_qs;
+ reg_rdata_next[17] = err_bits_dmem_intg_violation_qs;
+ reg_rdata_next[18] = err_bits_reg_intg_violation_qs;
+ reg_rdata_next[19] = err_bits_bus_intg_violation_qs;
+ reg_rdata_next[20] = err_bits_illegal_bus_access_qs;
+ reg_rdata_next[21] = err_bits_lifecycle_escalation_qs;
end
addr_hit[7]: begin
@@ -872,10 +899,10 @@
end
addr_hit[8]: begin
- reg_rdata_next[0] = fatal_alert_cause_bus_intg_violation_qs;
- reg_rdata_next[1] = fatal_alert_cause_imem_intg_violation_qs;
- reg_rdata_next[2] = fatal_alert_cause_dmem_intg_violation_qs;
- reg_rdata_next[3] = fatal_alert_cause_reg_intg_violation_qs;
+ reg_rdata_next[0] = fatal_alert_cause_imem_intg_violation_qs;
+ reg_rdata_next[1] = fatal_alert_cause_dmem_intg_violation_qs;
+ reg_rdata_next[2] = fatal_alert_cause_reg_intg_violation_qs;
+ reg_rdata_next[3] = fatal_alert_cause_bus_intg_violation_qs;
reg_rdata_next[4] = fatal_alert_cause_illegal_bus_access_qs;
reg_rdata_next[5] = fatal_alert_cause_lifecycle_escalation_qs;
end
diff --git a/sw/device/lib/dif/dif_otbn.c b/sw/device/lib/dif/dif_otbn.c
index 0188f5e..f5f3a6e 100644
--- a/sw/device/lib/dif/dif_otbn.c
+++ b/sw/device/lib/dif/dif_otbn.c
@@ -32,6 +32,9 @@
static_assert(kDifOtbnErrBitsRegIntgViolation ==
(1 << OTBN_ERR_BITS_REG_INTG_VIOLATION_BIT),
"Layout of error bits changed.");
+static_assert(kDifOtbnErrBitsBusIntgViolation ==
+ (1 << OTBN_ERR_BITS_BUS_INTG_VIOLATION_BIT),
+ "Layout of error bits changed.");
static_assert(kDifOtbnErrBitsIllegalBusAccess ==
(1 << OTBN_ERR_BITS_ILLEGAL_BUS_ACCESS_BIT),
"Layout of error bits changed.");
diff --git a/sw/device/lib/dif/dif_otbn.h b/sw/device/lib/dif/dif_otbn.h
index f67620c..1a99118 100644
--- a/sw/device/lib/dif/dif_otbn.h
+++ b/sw/device/lib/dif/dif_otbn.h
@@ -105,15 +105,17 @@
/** A LOOP error was observed. */
kDifOtbnErrBitsLoop = (1 << 4),
/** A IMEM_INTG_VIOLATION error was observed. */
- kDifOtbnErrBitsImemIntgViolation = (1 << 5),
+ kDifOtbnErrBitsImemIntgViolation = (1 << 16),
/** A DMEM_INTG_VIOLATION error was observed. */
- kDifOtbnErrBitsDmemIntgViolation = (1 << 6),
+ kDifOtbnErrBitsDmemIntgViolation = (1 << 17),
/** A REG_INTG_VIOLATION error was observed. */
- kDifOtbnErrBitsRegIntgViolation = (1 << 7),
+ kDifOtbnErrBitsRegIntgViolation = (1 << 18),
+ /** A BUS_INTG_VIOLATION error was observed. */
+ kDifOtbnErrBitsBusIntgViolation = (1 << 19),
/** An ILLEGAL_BUS_ACCESS error was observed. */
- kDifOtbnErrBitsIllegalBusAccess = (1 << 8),
+ kDifOtbnErrBitsIllegalBusAccess = (1 << 20),
/** A LIFECYCLE_ESCALATION error was observed. */
- kDifOtbnErrBitsLifecycleEscalation = (1 << 9),
+ kDifOtbnErrBitsLifecycleEscalation = (1 << 21),
} dif_otbn_err_bits_t;
/**
diff --git a/sw/device/silicon_creator/lib/drivers/otbn.c b/sw/device/silicon_creator/lib/drivers/otbn.c
index 7c9326e..46c89cb 100644
--- a/sw/device/silicon_creator/lib/drivers/otbn.c
+++ b/sw/device/silicon_creator/lib/drivers/otbn.c
@@ -30,6 +30,8 @@
OTBN_ERR_BITS_DMEM_INTG_VIOLATION_BIT);
ASSERT_ERR_BIT_MATCH(kOtbnErrBitsRegIntgViolation,
OTBN_ERR_BITS_REG_INTG_VIOLATION_BIT);
+ASSERT_ERR_BIT_MATCH(kOtbnErrBitsBusIntgViolation,
+ OTBN_ERR_BITS_BUS_INTG_VIOLATION_BIT);
ASSERT_ERR_BIT_MATCH(kOtbnErrBitsIllegalBusAccess,
OTBN_ERR_BITS_ILLEGAL_BUS_ACCESS_BIT);
ASSERT_ERR_BIT_MATCH(kOtbnErrBitsLifecycleEscalation,
diff --git a/sw/device/silicon_creator/lib/drivers/otbn.h b/sw/device/silicon_creator/lib/drivers/otbn.h
index e5067a4..4be57f0 100644
--- a/sw/device/silicon_creator/lib/drivers/otbn.h
+++ b/sw/device/silicon_creator/lib/drivers/otbn.h
@@ -81,15 +81,17 @@
/** A LOOP error was observed. */
kOtbnErrBitsLoop = (1 << 4),
/** A IMEM_INTG_VIOLATION error was observed. */
- kOtbnErrBitsImemIntgViolation = (1 << 5),
+ kOtbnErrBitsImemIntgViolation = (1 << 16),
/** A DMEM_INTG_VIOLATION error was observed. */
- kOtbnErrBitsDmemIntgViolation = (1 << 6),
+ kOtbnErrBitsDmemIntgViolation = (1 << 17),
/** A REG_INTG_VIOLATION error was observed. */
- kOtbnErrBitsRegIntgViolation = (1 << 7),
+ kOtbnErrBitsRegIntgViolation = (1 << 18),
+ /** A BUS_INTG_VIOLATION error was observed. */
+ kOtbnErrBitsBusIntgViolation = (1 << 19),
/** An ILLEGAL_BUS_ACCESS error was observed. */
- kOtbnErrBitsIllegalBusAccess = (1 << 8),
+ kOtbnErrBitsIllegalBusAccess = (1 << 20),
/** A LIFECYCLE_ESCALATION error was observed. */
- kOtbnErrBitsLifecycleEscalation = (1 << 9),
+ kOtbnErrBitsLifecycleEscalation = (1 << 21),
} otbn_err_bits_t;
/**