[otbn] Propagate lc_escalate inside mubi escalate
Signed-off-by: Andreas Kurth <adk@lowrisc.org>
diff --git a/hw/ip/otbn/rtl/otbn.sv b/hw/ip/otbn/rtl/otbn.sv
index ff672e7..af6f26e 100644
--- a/hw/ip/otbn/rtl/otbn.sv
+++ b/hw/ip/otbn/rtl/otbn.sv
@@ -955,7 +955,6 @@
.imem_sec_wipe_urnd_key_o (imem_sec_wipe_urnd_key),
.req_sec_wipe_urnd_keys_i (req_sec_wipe_urnd_keys),
- .lc_escalate_en_i (lc_escalate_en[1]),
.escalate_en_i (core_escalate_en),
.software_errs_fatal_i (software_errs_fatal_q),
@@ -984,8 +983,9 @@
};
// An error signal going down into the core to show that it should locally escalate
- assign core_escalate_en = mubi4_bool_to_mubi(
- |{illegal_bus_access_q, otbn_scramble_state_error, bus_intg_violation}
+ assign core_escalate_en = mubi4_or_hi(
+ mubi4_bool_to_mubi(|{illegal_bus_access_q, otbn_scramble_state_error, bus_intg_violation}),
+ lc_ctrl_pkg::lc_to_mubi4(lc_escalate_en[1])
);
// We're idle if we're neither busy executing something nor locked
diff --git a/hw/ip/otbn/rtl/otbn_controller.sv b/hw/ip/otbn/rtl/otbn_controller.sv
index b7f2a29..d11cde1 100644
--- a/hw/ip/otbn/rtl/otbn_controller.sv
+++ b/hw/ip/otbn/rtl/otbn_controller.sv
@@ -24,7 +24,6 @@
input logic start_i, // start the processing at address zero
output logic locked_o, // OTBN in locked state and must be reset to perform any further actions
- input lc_ctrl_pkg::lc_tx_t lc_escalate_en_i,
input prim_mubi_pkg::mubi4_t escalate_en_i,
output controller_err_bits_t err_bits_o,
output logic recoverable_err_o,
@@ -477,7 +476,6 @@
assign fatal_err = |{fatal_software_err,
bad_internal_state_err,
reg_intg_violation_err,
- lc_escalate_en_i != lc_ctrl_pkg::Off,
mubi4_test_true_loose(escalate_en_i)};
assign recoverable_err_o = software_err & ~software_errs_fatal_i;
@@ -489,7 +487,7 @@
assign insn_executing = insn_valid_i & ~err;
`ASSERT(ErrBitSetOnErr,
- err & ~(mubi4_test_true_loose(escalate_en_i) | (lc_escalate_en_i != lc_ctrl_pkg::Off)) |=> err_bits_o)
+ err & mubi4_test_false_strict(escalate_en_i) |=> err_bits_o)
`ASSERT(ErrSetOnFatalErr, fatal_err |-> err)
`ASSERT(SoftwareErrIfNonInsnAddrSoftwareErr, non_insn_addr_software_err |-> software_err)
diff --git a/hw/ip/otbn/rtl/otbn_core.sv b/hw/ip/otbn/rtl/otbn_core.sv
index 55335b5..644e0b1 100644
--- a/hw/ip/otbn/rtl/otbn_core.sv
+++ b/hw/ip/otbn/rtl/otbn_core.sv
@@ -74,9 +74,6 @@
output logic [127:0] dmem_sec_wipe_urnd_key_o, // URND bits to give temporary dmem scramble key
output logic [127:0] imem_sec_wipe_urnd_key_o, // URND bits to give temporary imem scramble key
- // Lifecycle interface
- input lc_ctrl_pkg::lc_tx_t lc_escalate_en_i,
-
// Indicates an incoming escalation from some fatal error at the level above.
input prim_mubi_pkg::mubi4_t escalate_en_i,
@@ -328,7 +325,6 @@
.start_i (controller_start),
.locked_o,
- .lc_escalate_en_i,
.escalate_en_i(controller_escalate_en),
.err_bits_o (controller_err_bits),
.recoverable_err_o,