[top/lc_ctrl] connect CPU_EN and KEYMGR_EN signals
Fix #5356
Signed-off-by: Michael Schaffner <msf@opentitan.org>
diff --git a/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv b/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv
index ed8b9a9..72b8d93 100644
--- a/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv
+++ b/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv
@@ -65,7 +65,7 @@
output ibex_pkg::crash_dump_t crash_dump_o,
// CPU Control Signals
- input lc_ctrl_pkg::lc_tx_t fetch_enable_i,
+ input lc_ctrl_pkg::lc_tx_t lc_cpu_en_i,
output logic core_sleep_o
);
@@ -164,12 +164,12 @@
assign unused_alert_minor = alert_minor;
assign unused_alert_major = alert_major;
- lc_ctrl_pkg::lc_tx_t fetch_enable;
+ lc_ctrl_pkg::lc_tx_t [0:0] lc_cpu_en;
prim_lc_sync u_lc_sync (
.clk_i,
.rst_ni,
- .lc_en_i(fetch_enable_i),
- .lc_en_o(fetch_enable)
+ .lc_en_i(lc_cpu_en_i),
+ .lc_en_o(lc_cpu_en)
);
ibex_core #(
@@ -252,7 +252,7 @@
.rvfi_mem_wdata,
`endif
- .fetch_enable_i (fetch_enable == lc_ctrl_pkg::On),
+ .fetch_enable_i (lc_cpu_en[0] == lc_ctrl_pkg::On),
.alert_minor_o (alert_minor),
.alert_major_o (alert_major),
.core_sleep_o
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index 2a72ec5..01577f1 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -457,6 +457,18 @@
top_signame: rv_core_ibex_crash_dump
index: -1
}
+ {
+ struct: lc_tx_t
+ type: uni
+ name: lc_cpu_en
+ act: rcv
+ package: lc_ctrl_pkg
+ inst_name: rv_core_ibex
+ width: 1
+ default: ""
+ top_signame: lc_ctrl_lc_cpu_en
+ index: -1
+ }
]
}
]
@@ -3455,6 +3467,10 @@
default: lc_ctrl_pkg::Off
package: lc_ctrl_pkg
inst_name: lc_ctrl
+ width: 1
+ end_idx: -1
+ top_type: broadcast
+ top_signame: lc_ctrl_lc_keymgr_en
index: -1
}
{
@@ -6439,6 +6455,8 @@
package: lc_ctrl_pkg
default: lc_ctrl_pkg::On
inst_name: keymgr
+ width: 1
+ top_signame: lc_ctrl_lc_keymgr_en
index: -1
}
{
@@ -7895,7 +7913,14 @@
sram_ctrl_ret_aon.lc_hw_debug_en
pinmux_aon.lc_hw_debug_en
]
- lc_ctrl.lc_cpu_en: []
+ lc_ctrl.lc_cpu_en:
+ [
+ rv_core_ibex.lc_cpu_en
+ ]
+ lc_ctrl.lc_keymgr_en:
+ [
+ keymgr.lc_keymgr_en
+ ]
lc_ctrl.lc_escalate_en:
[
aes.lc_escalate_en
@@ -13186,6 +13211,10 @@
default: lc_ctrl_pkg::Off
package: lc_ctrl_pkg
inst_name: lc_ctrl
+ width: 1
+ end_idx: -1
+ top_type: broadcast
+ top_signame: lc_ctrl_lc_keymgr_en
index: -1
}
{
@@ -14665,6 +14694,8 @@
package: lc_ctrl_pkg
default: lc_ctrl_pkg::On
inst_name: keymgr
+ width: 1
+ top_signame: lc_ctrl_lc_keymgr_en
index: -1
}
{
@@ -15824,6 +15855,18 @@
index: -1
}
{
+ struct: lc_tx_t
+ type: uni
+ name: lc_cpu_en
+ act: rcv
+ package: lc_ctrl_pkg
+ inst_name: rv_core_ibex
+ width: 1
+ default: ""
+ top_signame: lc_ctrl_lc_cpu_en
+ index: -1
+ }
+ {
struct: edn
type: req_rsp
name: edn
@@ -16857,6 +16900,17 @@
{
package: lc_ctrl_pkg
struct: lc_tx
+ signame: lc_ctrl_lc_keymgr_en
+ width: 1
+ type: uni
+ end_idx: -1
+ act: req
+ suffix: ""
+ default: lc_ctrl_pkg::Off
+ }
+ {
+ package: lc_ctrl_pkg
+ struct: lc_tx
signame: lc_ctrl_lc_escalate_en
width: 1
type: uni
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index 9033e0d..43ec668 100755
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -195,6 +195,13 @@
act: "req",
package: "ibex_pkg",
},
+
+ { struct: "lc_tx_t",
+ type: "uni",
+ name: "lc_cpu_en",
+ act: "rcv",
+ package: "lc_ctrl_pkg",
+ },
],
}
@@ -806,8 +813,8 @@
'lc_ctrl.lc_hw_debug_en' : ['sram_ctrl_main.lc_hw_debug_en',
'sram_ctrl_ret_aon.lc_hw_debug_en',
'pinmux_aon.lc_hw_debug_en'],
- 'lc_ctrl.lc_cpu_en' : [],
- //'lc_ctrl.lc_keymgr_en' : ['keymgr.lc_keymgr_en'],
+ 'lc_ctrl.lc_cpu_en' : ['rv_core_ibex.lc_cpu_en'],
+ 'lc_ctrl.lc_keymgr_en' : ['keymgr.lc_keymgr_en'],
'lc_ctrl.lc_escalate_en' : ['aes.lc_escalate_en',
'otp_ctrl.lc_escalate_en',
'sram_ctrl_main.lc_escalate_en',
diff --git a/hw/top_earlgrey/data/top_earlgrey.sv.tpl b/hw/top_earlgrey/data/top_earlgrey.sv.tpl
index 24fcf24..52b8daf 100644
--- a/hw/top_earlgrey/data/top_earlgrey.sv.tpl
+++ b/hw/top_earlgrey/data/top_earlgrey.sv.tpl
@@ -293,8 +293,7 @@
// crash dump interface
.crash_dump_o (rv_core_ibex_crash_dump),
// CPU control signals
- // TODO #5356
- .fetch_enable_i (lc_ctrl_pkg::On),
+ .lc_cpu_en_i (lc_ctrl_lc_cpu_en),
.core_sleep_o (pwrmgr_aon_pwr_cpu.core_sleeping)
);
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 9f54d58..405f673 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -465,6 +465,7 @@
lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_nvm_debug_en;
lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_hw_debug_en;
lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_cpu_en;
+ lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_keymgr_en;
lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_escalate_en;
lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_check_byp_en;
lc_ctrl_pkg::lc_tx_t lc_ctrl_lc_clk_byp_ack;
@@ -673,8 +674,7 @@
// crash dump interface
.crash_dump_o (rv_core_ibex_crash_dump),
// CPU control signals
- // TODO #5356
- .fetch_enable_i (lc_ctrl_pkg::On),
+ .lc_cpu_en_i (lc_ctrl_lc_cpu_en),
.core_sleep_o (pwrmgr_aon_pwr_cpu.core_sleeping)
);
@@ -1463,7 +1463,7 @@
.lc_nvm_debug_en_o(lc_ctrl_lc_nvm_debug_en),
.lc_hw_debug_en_o(lc_ctrl_lc_hw_debug_en),
.lc_cpu_en_o(lc_ctrl_lc_cpu_en),
- .lc_keymgr_en_o(),
+ .lc_keymgr_en_o(lc_ctrl_lc_keymgr_en),
.lc_escalate_en_o(lc_ctrl_lc_escalate_en),
.lc_clk_byp_req_o(lc_clk_byp_req_o),
.lc_clk_byp_ack_i(lc_ctrl_lc_clk_byp_ack),
@@ -1910,7 +1910,7 @@
.otp_key_i(otp_ctrl_otp_keymgr_key),
.otp_hw_cfg_i(otp_ctrl_otp_hw_cfg),
.flash_i(flash_ctrl_keymgr),
- .lc_keymgr_en_i(lc_ctrl_pkg::On),
+ .lc_keymgr_en_i(lc_ctrl_lc_keymgr_en),
.lc_keymgr_div_i(lc_ctrl_lc_keymgr_div),
.tl_i(keymgr_tl_req),
.tl_o(keymgr_tl_rsp),