[keymgr] Widen sw_binding and salt registers

Address #5194

Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/ip/keymgr/data/keymgr.hjson b/hw/ip/keymgr/data/keymgr.hjson
index 667c09a..ba92a2e 100644
--- a/hw/ip/keymgr/data/keymgr.hjson
+++ b/hw/ip/keymgr/data/keymgr.hjson
@@ -175,9 +175,14 @@
       randcount: "256",
       randtype:  "data",
     },
-
-    { name: "NumInReg",
-      desc: "Number of Registers for SW inputs (SW binding / keyID / Salt)",
+    { name: "NumSaltReg",
+      desc: "Number of Registers for SW inputs (Salt)",
+      type: "int",
+      default: "4",
+      local: "true"
+    },
+    { name: "NumSwBindingReg",
+      desc: "Number of Registers for SW inputs (SW binding)",
       type: "int",
       default: "4",
       local: "true"
@@ -357,7 +362,8 @@
     },
 
     // The following can potentially be replaced by a RAM if it gets too large
-    // Currently there are 32b * NumInReg * 3 bits for inputs
+    // Currently there are 32b * NumSaltReg  bits for salt inputs
+    //                     32b * NumSwBindingReg bits for software binding inputs
     //                     32b * NumOutReg * 2 (if key shares desired) for outputs
     //                     32b * NumOutReg * NumCryptos * 2 (if key shares desired) for hidden key bus
     // This totals to over 2kb of storage
@@ -394,7 +400,7 @@
 
           The software binding is locked by software and unlocked by hardware upon a successful advance operation.
         ''',
-        count: "NumInReg",
+        count: "NumSwBindingReg",
         swaccess: "rw",
         hwaccess: "hro",
         fields: [
@@ -416,7 +422,7 @@
         desc: '''
           Salt value used as part of output generation
         ''',
-        count: "NumInReg",
+        count: "NumSaltReg",
         swaccess: "rw",
         hwaccess: "hro",
         fields: [
diff --git a/hw/ip/keymgr/keymgr.core b/hw/ip/keymgr/keymgr.core
index f24c945..0d1c4cb 100644
--- a/hw/ip/keymgr/keymgr.core
+++ b/hw/ip/keymgr/keymgr.core
@@ -14,7 +14,6 @@
       - lowrisc:prim:lc_sync
       - lowrisc:ip:keymgr_pkg
     files:
-      - rtl/keymgr_reg_pkg.sv
       - rtl/keymgr_reg_top.sv
       - rtl/keymgr_sideload_key_ctrl.sv
       - rtl/keymgr_sideload_key.sv
diff --git a/hw/ip/keymgr/keymgr_pkg.core b/hw/ip/keymgr/keymgr_pkg.core
index 2a4ddef..9e02a72 100644
--- a/hw/ip/keymgr/keymgr_pkg.core
+++ b/hw/ip/keymgr/keymgr_pkg.core
@@ -13,6 +13,7 @@
       - lowrisc:ip:otp_ctrl_pkg
       - lowrisc:ip:flash_ctrl_pkg
     files:
+      - rtl/keymgr_reg_pkg.sv
       - rtl/keymgr_pkg.sv
     file_type: systemVerilogSource
 
diff --git a/hw/ip/keymgr/rtl/keymgr_pkg.sv b/hw/ip/keymgr/rtl/keymgr_pkg.sv
index 18d0d6f..7577e4a 100644
--- a/hw/ip/keymgr/rtl/keymgr_pkg.sv
+++ b/hw/ip/keymgr/rtl/keymgr_pkg.sv
@@ -11,7 +11,8 @@
   parameter int DigestWidth = 128;     // uses truncated hash
   parameter int KmacDataIfWidth = 64;  // KMAC interface data width
   parameter int KeyMgrStages = 3;      // Number of key manager stages (creator, ownerInt, owner)
-  parameter int SwBindingWidth = 128; // Size of rom_ext hash, truncated
+  parameter int SwBindingWidth = 32 * keymgr_reg_pkg::NumSwBindingReg;
+  parameter int SaltWidth = 32 * keymgr_reg_pkg::NumSaltReg;
   parameter int Shares = 2; // number of key shares
   parameter int EdnWidth = edn_pkg::ENDPOINT_BUS_WIDTH;
 
@@ -71,7 +72,7 @@
   parameter int AdvDataWidth = SwBindingWidth + 2*KeyWidth + DevIdWidth + HealthStateWidth;
   parameter int IdDataWidth = KeyWidth;
   // key version + salt + key ID + constant
-  parameter int GenDataWidth = 32 + 128 + KeyWidth*2;
+  parameter int GenDataWidth = 32 + SaltWidth + KeyWidth*2;
   parameter int StageWidth = $clog2(KeyMgrStages);
 
   // Max Payload Width to derivation function
diff --git a/hw/ip/keymgr/rtl/keymgr_reg_pkg.sv b/hw/ip/keymgr/rtl/keymgr_reg_pkg.sv
index c485ec0..f28a4bf 100644
--- a/hw/ip/keymgr/rtl/keymgr_reg_pkg.sv
+++ b/hw/ip/keymgr/rtl/keymgr_reg_pkg.sv
@@ -7,7 +7,8 @@
 package keymgr_reg_pkg;
 
   // Param list
-  parameter int NumInReg = 4;
+  parameter int NumSaltReg = 4;
+  parameter int NumSwBindingReg = 4;
   parameter int NumOutReg = 8;
   parameter int NumKeyVersion = 1;
   parameter int NumAlerts = 2;