[lc_ctrl] Regenerate state definition package

Signed-off-by: Michael Schaffner <msf@opentitan.org>
diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl_state_pkg.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl_state_pkg.sv
index c66f3c4..1e6b1db 100644
--- a/hw/ip/lc_ctrl/rtl/lc_ctrl_state_pkg.sv
+++ b/hw/ip/lc_ctrl/rtl/lc_ctrl_state_pkg.sv
@@ -10,6 +10,28 @@
 //
 package lc_ctrl_state_pkg;
 
+  import prim_util_pkg::vbits;
+
+  ///////////////////////////////
+  // General size declarations //
+  ///////////////////////////////
+
+  parameter int LcValueWidth = 16;
+
+  parameter int NumLcStateValues = 12;
+  parameter int LcStateWidth = NumLcStateValues * LcValueWidth;
+  parameter int NumLcStates = 13;
+  parameter int DecLcStateWidth = vbits(NumLcStates);
+
+  parameter int NumLcCountValues = 16;
+  parameter int LcCountWidth = NumLcCountValues * LcValueWidth;
+  parameter int NumLcCountStates = 17;
+  parameter int DecLcCountWidth = vbits(NumLcCountStates);
+
+  parameter int NumLcIdStateValues = 1;
+  parameter int LcIdStateWidth = NumLcIdStateValues * LcValueWidth;
+  parameter int NumLcIdStates = 2;
+  parameter int DecLcIdStateWidth = vbits(NumLcIdStates+1);
 
   /////////////////////////////////////////////
   // Life cycle manufacturing state encoding //
@@ -150,20 +172,99 @@
   parameter logic [15:0] F0 = 16'b1110010110111101; // ECC: 6'b111101
 
 
+  parameter logic [15:0] ZRO = 16'h0;
+
+  ////////////////////////
+  // Derived enum types //
+  ////////////////////////
+
+  typedef enum logic [LcStateWidth-1:0] {
+    LcStRaw           = {ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO},
+    LcStTestUnlocked0 = {A11, A10,  A9,  A8,  A7,  A6,  A5,  A4,  A3,  A2,  A1,  B0},
+    LcStTestLocked0   = {A11, A10,  A9,  A8,  A7,  A6,  A5,  A4,  A3,  A2,  B1,  B0},
+    LcStTestUnlocked1 = {A11, A10,  A9,  A8,  A7,  A6,  A5,  A4,  A3,  B2,  B1,  B0},
+    LcStTestLocked1   = {A11, A10,  A9,  A8,  A7,  A6,  A5,  A4,  B3,  B2,  B1,  B0},
+    LcStTestUnlocked2 = {A11, A10,  A9,  A8,  A7,  A6,  A5,  B4,  B3,  B2,  B1,  B0},
+    LcStTestLocked2   = {A11, A10,  A9,  A8,  A7,  A6,  B5,  B4,  B3,  B2,  B1,  B0},
+    LcStTestUnlocked3 = {A11, A10,  A9,  A8,  A7,  B6,  B5,  B4,  B3,  B2,  B1,  B0},
+    LcStDev           = {A11, A10,  A9,  A8,  B7,  B6,  B5,  B4,  B3,  B2,  B1,  B0},
+    LcStProd          = {A11, A10,  A9,  B8,  A7,  B6,  B5,  B4,  B3,  B2,  B1,  B0},
+    LcStProdEnd       = {A11, A10,  B9,  A8,  A7,  B6,  B5,  B4,  B3,  B2,  B1,  B0},
+    LcStRma           = {B11, B10,  A9,  B8,  B7,  B6,  B5,  B4,  B3,  B2,  B1,  B0},
+    LcStScrap         = {B11, B10,  B9,  B8,  B7,  B6,  B5,  B4,  B3,  B2,  B1,  B0}
+  } lc_state_e;
+
+  typedef enum logic [LcIdStateWidth-1:0] {
+    LcIdBlank        = { E0},
+    LcIdPersonalized = { F0}
+  } lc_id_state_e;
+
+  typedef enum logic [LcCountWidth-1:0] {
+    LcCntRaw = {ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO},
+    LcCnt1   = {C15, C14, C13, C12, C11, C10,  C9,  C8,  C7,  C6,  C5,  C4,  C3,  C2,  C1,  D0},
+    LcCnt2   = {C15, C14, C13, C12, C11, C10,  C9,  C8,  C7,  C6,  C5,  C4,  C3,  C2,  D1,  D0},
+    LcCnt3   = {C15, C14, C13, C12, C11, C10,  C9,  C8,  C7,  C6,  C5,  C4,  C3,  D2,  D1,  D0},
+    LcCnt4   = {C15, C14, C13, C12, C11, C10,  C9,  C8,  C7,  C6,  C5,  C4,  D3,  D2,  D1,  D0},
+    LcCnt5   = {C15, C14, C13, C12, C11, C10,  C9,  C8,  C7,  C6,  C5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt6   = {C15, C14, C13, C12, C11, C10,  C9,  C8,  C7,  C6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt7   = {C15, C14, C13, C12, C11, C10,  C9,  C8,  C7,  D6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt8   = {C15, C14, C13, C12, C11, C10,  C9,  C8,  D7,  D6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt9   = {C15, C14, C13, C12, C11, C10,  C9,  D8,  D7,  D6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt10  = {C15, C14, C13, C12, C11, C10,  D9,  D8,  D7,  D6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt11  = {C15, C14, C13, C12, C11, D10,  D9,  D8,  D7,  D6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt12  = {C15, C14, C13, C12, D11, D10,  D9,  D8,  D7,  D6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt13  = {C15, C14, C13, D12, D11, D10,  D9,  D8,  D7,  D6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt14  = {C15, C14, D13, D12, D11, D10,  D9,  D8,  D7,  D6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt15  = {C15, D14, D13, D12, D11, D10,  D9,  D8,  D7,  D6,  D5,  D4,  D3,  D2,  D1,  D0},
+    LcCnt16  = {D15, D14, D13, D12, D11, D10,  D9,  D8,  D7,  D6,  D5,  D4,  D3,  D2,  D1,  D0}
+  } lc_cnt_e;
+
+  // Decoded life cycle state, used to interface with CSRs and TAP.
+  typedef enum logic [DecLcStateWidth-1:0] {
+    DecLcStRaw,
+    DecLcStTestUnlocked0,
+    DecLcStTestLocked0,
+    DecLcStTestUnlocked1,
+    DecLcStTestLocked1,
+    DecLcStTestUnlocked2,
+    DecLcStTestLocked2,
+    DecLcStTestUnlocked3,
+    DecLcStDev,
+    DecLcStProd,
+    DecLcStProdEnd,
+    DecLcStRma,
+    DecLcStScrap,
+    DecLcStPostTrans,
+    DecLcStEscalate,
+    DecLcStInvalid
+  } dec_lc_state_e;
+
+  typedef enum logic [DecLcIdStateWidth-1:0] {
+    DecLcIdBlank,
+    DecLcIdPersonalized,
+    DecLcIdInvalid
+  } dec_lc_id_state_e;
+
+  typedef logic [DecLcCountWidth-1:0] dec_lc_cnt_t;
+
+
   ///////////////////////////////////////////
   // Hashed RAW unlock and all-zero tokens //
   ///////////////////////////////////////////
 
-  parameter logic [127:0] AllZeroToken = {
+  parameter int LcTokenWidth = 128;
+  typedef logic [LcTokenWidth-1:0] lc_token_t;
+
+  parameter lc_token_t AllZeroToken = {
     128'h0
   };
-  parameter logic [127:0] RndCnstRawUnlockToken = {
+  parameter lc_token_t RndCnstRawUnlockToken = {
     128'h1C8BE2FF12790AE2E6D6A68151CBD084
   };
-  parameter logic [127:0] AllZeroTokenHashed = {
+  parameter lc_token_t AllZeroTokenHashed = {
     128'h0
   };
-  parameter logic [127:0] RndCnstRawUnlockTokenHashed = {
+  parameter lc_token_t RndCnstRawUnlockTokenHashed = {
     128'h1C8BE2FF12790AE2E6D6A68151CBD084
   };