[lc_ctrl] Increase number of test states from 4 to 8

Signed-off-by: Michael Schaffner <msf@opentitan.org>
diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl_pkg.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl_pkg.sv
index 39a42c4..83de6c6 100644
--- a/hw/ip/lc_ctrl/rtl/lc_ctrl_pkg.sv
+++ b/hw/ip/lc_ctrl/rtl/lc_ctrl_pkg.sv
@@ -102,89 +102,77 @@
   // Manufacturing State Transition Matrix //
   ///////////////////////////////////////////
 
+  // Helper macro to assemble the token index matrix below.
+  // From TEST_UNLOCKED(N)
+  // -> SCRAP, RMA
+  // -> PROD, PROD_END, DEV
+  // -> TEST_UNLOCKED(N+1)-7
+  // -> TEST_LOCKED(N)-6
+  // -> TEST_UNLOCKED0-(N), RAW
+  `define TEST_UNLOCKED(idx)         \
+        {2{ZeroTokenIdx}},           \
+        {3{TestExitTokenIdx}},       \
+        {(7-idx){InvalidTokenIdx,    \
+                 ZeroTokenIdx}},     \
+        {(2*idx+2){InvalidTokenIdx}}
+
+  // Helper macro to assemble the token index matrix below.
+  // From TEST_LOCKED(N)
+  // -> SCRAP
+  // -> RMA
+  // -> PROD, PROD_END, DEV
+  // -> TEST_UNLOCKED(N+1)-7
+  // -> TEST_LOCKED(N)-6
+  // -> TEST_UNLOCKED0-(N), RAW
+  `define TEST_LOCKED(idx)         \
+      ZeroTokenIdx,                \
+      InvalidTokenIdx,             \
+      {3{TestExitTokenIdx}},       \
+      {(7-idx){TestUnlockTokenIdx, \
+               InvalidTokenIdx}},  \
+      {(2*idx+2){InvalidTokenIdx}}
+
   // The token index matrix below encodes 1) which transition edges are valid and 2) which token
   // to use for a given transition edge. Note that unconditional but otherwise valid transitions
   // are assigned the ZeroTokenIdx, whereas invalid transitions are assigned an InvalidTokenIdx.
   parameter token_idx_e [NumLcStates-1:0][NumLcStates-1:0] TransTokenIdxMatrix = {
     // SCRAP
-    {13{InvalidTokenIdx}}, // -> TEST_LOCKED0-2, TEST_UNLOCKED0-3, DEV, PROD, PROD_END, RMA, SCRAP
+    {21{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END, RMA, SCRAP
     // RMA
     ZeroTokenIdx,          // -> SCRAP
-    {12{InvalidTokenIdx}}, // -> TEST_LOCKED0-2, TEST_UNLOCKED0-3, DEV, PROD, PROD_END, RMA
+    {20{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END, RMA
     // PROD_END
     ZeroTokenIdx,          // -> SCRAP
-    {12{InvalidTokenIdx}}, // -> TEST_LOCKED0-2, TEST_UNLOCKED0-3, DEV, PROD, PROD_END, RMA
+    {20{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END, RMA
     // PROD
     ZeroTokenIdx,          // -> SCRAP
     RmaTokenIdx,           // -> RMA
-    {11{InvalidTokenIdx}}, // -> TEST_LOCKED0-2, TEST_UNLOCKED0-3, DEV, PROD, PROD_END
+    {19{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END
     // DEV
     ZeroTokenIdx,          // -> SCRAP
     RmaTokenIdx,           // -> RMA
-    {11{InvalidTokenIdx}}, // -> TEST_LOCKED0-2, TEST_UNLOCKED0-3, DEV, PROD, PROD_END
-    // TEST_UNLOCKED3
-    {2{ZeroTokenIdx}},     // -> SCRAP, RMA
-    {3{TestExitTokenIdx}}, // -> PROD, PROD_END, DEV
-    {8{InvalidTokenIdx}},  // -> TEST_LOCKED0-2, TEST_UNLOCKED0-3, RAW
-    // TEST_LOCKED2
-    ZeroTokenIdx,          // -> SCRAP
-    InvalidTokenIdx,       // -> RMA
-    {3{TestExitTokenIdx}}, // -> PROD, PROD_END, DEV
-    TestUnlockTokenIdx,    // -> TEST_UNLOCKED3
-    {7{InvalidTokenIdx}},  // -> TEST_LOCKED0-2, TEST_UNLOCKED0-2, RAW
-    // TEST_UNLOCKED2
-    {2{ZeroTokenIdx}},     // -> SCRAP, RMA
-    {3{TestExitTokenIdx}}, // -> PROD, PROD_END, DEV
-    InvalidTokenIdx,       // -> TEST_UNLOCKED3
-    ZeroTokenIdx,          // -> TEST_LOCKED2
-    {6{InvalidTokenIdx}},  // -> TEST_LOCKED0-1, TEST_UNLOCKED0-2, RAW
-    // TEST_LOCKED1
-    ZeroTokenIdx,          // -> SCRAP
-    InvalidTokenIdx,       // -> RMA
-    {3{TestExitTokenIdx}}, // -> PROD, PROD_END, DEV
-    TestUnlockTokenIdx,    // -> TEST_UNLOCKED3
-    InvalidTokenIdx  ,     // -> TEST_LOCKED2
-    TestUnlockTokenIdx,    // -> TEST_UNLOCKED2
-    {5{InvalidTokenIdx}},  // -> TEST_LOCKED0-1, TEST_UNLOCKED0-1, RAW
-    // TEST_UNLOCKED1
-    {2{ZeroTokenIdx}},     // -> SCRAP, RMA
-    {3{TestExitTokenIdx}}, // -> PROD, PROD_END, DEV
-    InvalidTokenIdx,       // -> TEST_UNLOCKED3
-    ZeroTokenIdx,          // -> TEST_LOCKED2
-    InvalidTokenIdx,       // -> TEST_UNLOCKED2
-    ZeroTokenIdx,          // -> TEST_LOCKED1
-    {4{InvalidTokenIdx}},  // -> TEST_LOCKED0, TEST_UNLOCKED0-1, RAW
-    // TEST_LOCKED0
-    ZeroTokenIdx,          // -> SCRAP
-    InvalidTokenIdx,       // -> RMA
-    {3{TestExitTokenIdx}}, // -> PROD, PROD_END, DEV
-    TestUnlockTokenIdx,    // -> TEST_UNLOCKED3
-    InvalidTokenIdx,       // -> TEST_LOCKED2
-    TestUnlockTokenIdx,    // -> TEST_UNLOCKED2
-    InvalidTokenIdx,       // -> TEST_LOCKED1
-    TestUnlockTokenIdx,    // -> TEST_UNLOCKED1
-    {3{InvalidTokenIdx}},  // -> TEST_LOCKED0, TEST_UNLOCKED0, RAW
-    // TEST_UNLOCKED0
-    {2{ZeroTokenIdx}},     // -> SCRAP, RMA
-    {3{TestExitTokenIdx}}, // -> PROD, PROD_END, DEV
-    InvalidTokenIdx,       // -> TEST_UNLOCKED3
-    ZeroTokenIdx,          // -> TEST_LOCKED2
-    InvalidTokenIdx,       // -> TEST_UNLOCKED2
-    ZeroTokenIdx,          // -> TEST_LOCKED1
-    InvalidTokenIdx,       // -> TEST_UNLOCKED1
-    ZeroTokenIdx,          // -> TEST_LOCKED0
-    {2{InvalidTokenIdx}},  // -> TEST_UNLOCKED0, RAW
+    {19{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END
+    // TEST_UNLOCKED0-7, TEST_LOCKED0-6
+    `TEST_UNLOCKED(7),
+    `TEST_LOCKED(6),
+    `TEST_UNLOCKED(6),
+    `TEST_LOCKED(5),
+    `TEST_UNLOCKED(5),
+    `TEST_LOCKED(4),
+    `TEST_UNLOCKED(4),
+    `TEST_LOCKED(3),
+    `TEST_UNLOCKED(3),
+    `TEST_LOCKED(2),
+    `TEST_UNLOCKED(2),
+    `TEST_LOCKED(1),
+    `TEST_UNLOCKED(1),
+    `TEST_LOCKED(0),
+    `TEST_UNLOCKED(0),
     // RAW
     ZeroTokenIdx,          // -> SCRAP
     {4{InvalidTokenIdx}},  // -> RMA, PROD, PROD_END, DEV
-    RawUnlockTokenIdx,     // -> TEST_UNLOCKED3
-    InvalidTokenIdx,       // -> TEST_LOCKED2
-    RawUnlockTokenIdx,     // -> TEST_UNLOCKED2
-    InvalidTokenIdx,       // -> TEST_LOCKED1
-    RawUnlockTokenIdx,     // -> TEST_UNLOCKED1
-    InvalidTokenIdx,       // -> TEST_LOCKED0
-    RawUnlockTokenIdx,     // -> TEST_UNLOCKED0
-    InvalidTokenIdx        // -> RAW
+    {8{RawUnlockTokenIdx,  // -> TEST_UNLOCKED0-7
+       InvalidTokenIdx}}   // -> RAW, TEST_LOCKED0-6
   };
 
 endpackage : lc_ctrl_pkg