[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),