[prim] - Add new prim_lc_dec

Signed-off-by: Jacob Levy <jacob.levy@opentitan.org>

[prim] upadte port name of prim_lc_dec

Signed-off-by: Jacob Levy <jacob.levy@opentitan.org>
diff --git a/hw/ip/prim/prim_lc_dec.core b/hw/ip/prim/prim_lc_dec.core
new file mode 100644
index 0000000..09bf95e
--- /dev/null
+++ b/hw/ip/prim/prim_lc_dec.core
@@ -0,0 +1,55 @@
+CAPI=2:
+# Copyright lowRISC contributors.
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+
+name: "lowrisc:prim:lc_dec:0.1"
+description: "Decoder for life cycle control signals."
+filesets:
+  files_rtl:
+    depend:
+      - lowrisc:prim:buf
+      - lowrisc:ip:lc_ctrl_pkg
+    files:
+      - rtl/prim_lc_dec.sv
+    file_type: systemVerilogSource
+
+  files_verilator_waiver:
+    depend:
+      # common waivers
+      - lowrisc:lint:common
+    files:
+    file_type: vlt
+
+  files_ascentlint_waiver:
+    depend:
+      # common waivers
+      - lowrisc:lint:common
+    files:
+      # - lint/prim_lc_sync.waiver
+    file_type: waiver
+
+  files_veriblelint_waiver:
+    depend:
+      # common waivers
+      - lowrisc:lint:common
+      - lowrisc:lint:comportable
+
+targets:
+  default: &default_target
+    filesets:
+      - tool_verilator   ? (files_verilator_waiver)
+      - tool_ascentlint  ? (files_ascentlint_waiver)
+      - tool_veriblelint ? (files_veriblelint_waiver)
+      - files_rtl
+
+  lint:
+    <<: *default_target
+    default_tool: verilator
+    parameters:
+      - SYNTHESIS=true
+    tools:
+      verilator:
+        mode: lint-only
+        verilator_options:
+          - "-Wall"
diff --git a/hw/ip/prim/rtl/prim_lc_dec.sv b/hw/ip/prim/rtl/prim_lc_dec.sv
new file mode 100644
index 0000000..78845ae
--- /dev/null
+++ b/hw/ip/prim/rtl/prim_lc_dec.sv
@@ -0,0 +1,28 @@
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Decoder for life cycle control signals with additional
+// input buffers.
+
+module prim_lc_dec (
+  input lc_ctrl_pkg::lc_tx_t lc_en_i,
+  output logic lc_en_dec_o
+);
+
+logic [lc_ctrl_pkg::TxWidth-1:0] lc_en;
+logic [lc_ctrl_pkg::TxWidth-1:0] lc_en_out;
+assign lc_en = lc_en_i;
+
+// The buffer cells have a don't touch constraint on them
+// such that synthesis tools won't collapse them
+for (genvar k = 0; k < lc_ctrl_pkg::TxWidth; k++) begin : gen_bits
+  prim_buf u_prim_buf (
+    .in_i ( lc_en[k] ),
+    .out_o ( lc_en_out[k] )
+  );
+end
+
+assign lc_en_dec_o = (lc_en_out == lc_ctrl_pkg::On);
+
+endmodule : prim_lc_dec