[entropy_src] Add boot phase done state

- The main state machine will now hang in a boot phase done state instead
  of moving on to the startup state.
- This now requires software intervention after the boot phase runs.
- Also cleans up DV config fields and initialization routines to better reflect
  current register names

Fixes #9853.

Signed-off-by: Mark Branstad <mark.branstad@wdc.com>
Signed-off-by: Martin Lueker-Boden <martin.lueker-boden@wdc.com>
diff --git a/hw/ip/entropy_src/data/entropy_src.hjson b/hw/ip/entropy_src/data/entropy_src.hjson
index a805cac..d9e0cbc 100644
--- a/hw/ip/entropy_src/data/entropy_src.hjson
+++ b/hw/ip/entropy_src/data/entropy_src.hjson
@@ -241,19 +241,11 @@
           resval: "false"
         },
         { bits: "15:12",
-          name: "BOOT_BYPASS_DISABLE",
+          name: "THRESHOLD_SCOPE",
           mubi: true,
           desc: '''
-                Setting this field to kMuBi4True will disable the initial generation of non-FIPS entropy.
-                '''
-          resval: false
-        },
-        { bits: "19:16",
-          name: "HEALTH_TEST_CLR",
-          mubi: true,
-          desc: '''
-                Setting this field to kMuBi4True will clear all registers related to the
-                health test operations.
+                Setting this field to kMuBi4True will enable threshold scope mode.
+                TODO(#9759): add more description.
                 '''
           resval: false
         },
@@ -1205,7 +1197,11 @@
           name: "MAIN_SM_IDLE",
           desc: "The entropy_src main state machine is in the idle state."
         }
-        { bits: "31:24",
+        { bits: "17",
+          name: "MAIN_SM_BOOT_DONE",
+          desc: "The entropy_src main state machine is in the boot phase done state."
+        }
+        { bits: "28:20",
           name: "MAIN_SM_STATE",
           desc: "This is the state of the entropy_src main state machine."
         }
@@ -1242,17 +1238,9 @@
                 '''
         }
         { bits: "3",
-          name: "BOOT_BYPASS_DISABLE_FIELD_ALERT",
+          name: "THRESHOLD_SCOPE_FIELD_ALERT",
           desc: '''
-                This bit is set when the BOOT_BYPASS_DISABLE field in the !!CONF register is set to
-                a value other than 0x5 or 0xA.
-                Writing a zero resets this status bit.
-                '''
-        }
-        { bits: "4",
-          name: "HEALTH_TEST_CLR_FIELD_ALERT",
-          desc: '''
-                This bit is set when the HEALTH_TEST_CLR field in the !!CONF register is set to
+                This bit is set when the THRESHOLD_SCOPE field in the !!CONF register is set to
                 a value other than 0x5 or 0xA.
                 Writing a zero resets this status bit.
                 '''
diff --git a/hw/ip/entropy_src/doc/es_main_sm.svg b/hw/ip/entropy_src/doc/es_main_sm.svg
index e08f32b..4cd9a05 100644
--- a/hw/ip/entropy_src/doc/es_main_sm.svg
+++ b/hw/ip/entropy_src/doc/es_main_sm.svg
@@ -26,12 +26,12 @@
 		.st11 {fill:#000000;font-family:Arial;font-size:0.833336em}

 		.st12 {fill:#000000;font-family:Arial;font-size:1.5em}

 		.st13 {fill:#000000;font-family:Calibri;font-size:0.916672em}

-		.st14 {marker-end:url(#mrkr5-75);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}

+		.st14 {marker-end:url(#mrkr5-71);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}

 		.st15 {fill:#ffffff;stroke:#3c63ac;stroke-width:0.75}

 		.st16 {fill:none;stroke:#3c63ac;stroke-width:0.75}

 		.st17 {fill:#f4b183;stroke:#000000;stroke-width:1}

 		.st18 {marker-end:url(#mrkr5-27);stroke:#000000;stroke-width:1}

-		.st19 {marker-end:url(#mrkr5-335);stroke:#000000;stroke-width:0.75}

+		.st19 {marker-end:url(#mrkr5-321);stroke:#000000;stroke-width:0.75}

 		.st20 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.22935779816514}

 		.st21 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}

 	]]>

@@ -49,11 +49,11 @@
 				markerUnits="strokeWidth" overflow="visible">

 			<use xlink:href="#lend5" transform="scale(-3.52,-3.52) "/>

 		</marker>

-		<marker id="mrkr5-75" class="st8" v:arrowType="5" v:arrowSize="2" v:setback="6.16" refX="-6.16" orient="auto"

+		<marker id="mrkr5-71" class="st8" v:arrowType="5" v:arrowSize="2" v:setback="6.16" refX="-6.16" orient="auto"

 				markerUnits="strokeWidth" overflow="visible">

 			<use xlink:href="#lend5" transform="scale(-3.52,-3.52) "/>

 		</marker>

-		<marker id="mrkr5-335" class="st20" v:arrowType="5" v:arrowSize="2" v:setback="7.15" refX="-7.15" orient="auto"

+		<marker id="mrkr5-321" class="st20" v:arrowType="5" v:arrowSize="2" v:setback="7.15" refX="-7.15" orient="auto"

 				markerUnits="strokeWidth" overflow="visible">

 			<use xlink:href="#lend5" transform="scale(-4.36,-4.36) "/>

 		</marker>

@@ -117,14 +117,14 @@
 			<title>Sheet.1297</title>

 			<path d="M0 581.18 A119.88 94.8803 -141.64 0 0 148.87 585.85 L149.1 585.58" class="st9"/>

 		</g>

-		<g id="shape1314-28" v:mID="1314" v:groupContext="shape" transform="translate(270,-463.646)">

+		<g id="shape1314-28" v:mID="1314" v:groupContext="shape" transform="translate(265.5,-453.484)">

 			<title>Sheet.1314</title>

-			<desc>Boot enabled</desc>

+			<desc>FIPS_ENABLE Off</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

-			<v:textRect cx="27" cy="596.323" width="54" height="31.3545"/>

-			<rect x="0" y="580.646" width="54" height="31.3545" class="st10"/>

-			<text x="16.71" y="593.32" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Boot <tspan x="9.2"

-						dy="1.2em" class="st4">enabled</tspan></text>		</g>

+			<v:textRect cx="40.5" cy="588.484" width="81" height="47.0317"/>

+			<rect x="0" y="564.968" width="81" height="47.0317" class="st10"/>

+			<text x="6.87" y="585.48" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>FIPS_ENABLE <tspan

+						x="33.83" dy="1.2em" class="st4">Off</tspan></text>		</g>

 		<g id="shape1326-32" v:mID="1326" v:groupContext="shape" transform="translate(162,-523.573)">

 			<title>Sheet.1326</title>

 			<desc>Entropy_Src Main State Machine</desc>

@@ -141,19 +141,11 @@
 			<rect x="0" y="580.646" width="112.5" height="31.3545" class="st10"/>

 			<text x="4.28" y="587.32" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Note: If entropy_src not <tspan

 						x="15.94" dy="1.2em" class="st4">enabled, all states </tspan><tspan x="28.46" dy="1.2em" class="st4">return to idle</tspan></text>		</g>

-		<g id="shape1328-41" v:mID="1328" v:groupContext="shape" transform="translate(410.286,-439.574)">

-			<title>Sheet.1328</title>

-			<desc>Boot not enabled</desc>

-			<v:textBlock v:margins="rect(4,4,4,4)"/>

-			<v:textRect cx="27" cy="596.323" width="54" height="31.3545"/>

-			<rect x="0" y="580.646" width="54" height="31.3545" class="st10"/>

-			<text x="8.37" y="593.32" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Boot not <tspan

-						x="9.2" dy="1.2em" class="st4">enabled</tspan></text>		</g>

-		<g id="shape1331-45" v:mID="1331" v:groupContext="shape" transform="translate(-140.336,266.828) rotate(-71.4985)">

+		<g id="shape1331-41" v:mID="1331" v:groupContext="shape" transform="translate(-140.336,266.828) rotate(-71.4985)">

 			<title>Sheet.1331</title>

 			<path d="M3.99 588.75 L4.24 589.02 A146.215 83.5612 -20.72 0 0 184.35 584.55" class="st7"/>

 		</g>

-		<g id="shape1338-50" v:mID="1338" v:groupContext="shape" transform="translate(549.938,-469.831)">

+		<g id="shape1338-46" v:mID="1338" v:groupContext="shape" transform="translate(549.938,-469.831)">

 			<title>Circle.1338</title>

 			<desc>Startup Start</desc>

 			<v:userDefs>

@@ -164,7 +156,7 @@
 			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st5"/>

 			<text x="8.94" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Startup<v:newlineChar/><tspan

 						x="14.72" dy="1.2em" class="st4">Start</tspan></text>		</g>

-		<g id="shape1339-54" v:mID="1339" v:groupContext="shape" transform="translate(549.938,-391.869)">

+		<g id="shape1339-50" v:mID="1339" v:groupContext="shape" transform="translate(549.938,-391.869)">

 			<title>Circle.1339</title>

 			<desc>Startup Phase1</desc>

 			<v:userDefs>

@@ -175,7 +167,7 @@
 			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st5"/>

 			<text x="8.94" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Startup<v:newlineChar/><tspan

 						x="9.44" dy="1.2em" class="st4">Phase1</tspan></text>		</g>

-		<g id="shape1340-58" v:mID="1340" v:groupContext="shape" transform="translate(655.332,-391.869)">

+		<g id="shape1340-54" v:mID="1340" v:groupContext="shape" transform="translate(655.332,-391.869)">

 			<title>Circle.1340</title>

 			<desc>Startup Fail1</desc>

 			<v:userDefs>

@@ -186,7 +178,7 @@
 			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st5"/>

 			<text x="8.94" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Startup<v:newlineChar/><tspan

 						x="15.01" dy="1.2em" class="st4">Fail1</tspan></text>		</g>

-		<g id="shape1341-62" v:mID="1341" v:groupContext="shape" transform="translate(549.938,-313.908)">

+		<g id="shape1341-58" v:mID="1341" v:groupContext="shape" transform="translate(549.938,-313.908)">

 			<title>Circle.1341</title>

 			<desc>Startup Pass1</desc>

 			<v:userDefs>

@@ -197,7 +189,7 @@
 			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st5"/>

 			<text x="8.94" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Startup<v:newlineChar/><tspan

 						x="12.92" dy="1.2em" class="st4">Pass1</tspan></text>		</g>

-		<g id="shape1342-66" v:mID="1342" v:groupContext="shape" transform="translate(549.938,-235.946)">

+		<g id="shape1342-62" v:mID="1342" v:groupContext="shape" transform="translate(549.938,-235.946)">

 			<title>Circle.1342</title>

 			<desc>Sha3 Process</desc>

 			<v:userDefs>

@@ -208,23 +200,23 @@
 			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st5"/>

 			<text x="14.64" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Sha3<v:newlineChar/><tspan

 						x="8.46" dy="1.2em" class="st4">Process</tspan></text>		</g>

-		<g id="shape1354-70" v:mID="1354" v:groupContext="shape" transform="translate(1187.42,142.169) rotate(90)">

+		<g id="shape1354-66" v:mID="1354" v:groupContext="shape" transform="translate(1187.42,142.169) rotate(90)">

 			<title>Sheet.1354</title>

 			<path d="M0 612 L20.84 612" class="st14"/>

 		</g>

-		<g id="shape1355-76" v:mID="1355" v:groupContext="shape" transform="translate(1187.42,220.131) rotate(90)">

+		<g id="shape1355-72" v:mID="1355" v:groupContext="shape" transform="translate(1187.42,220.131) rotate(90)">

 			<title>Sheet.1355</title>

 			<path d="M0 612 L20.84 612" class="st14"/>

 		</g>

-		<g id="shape1358-81" v:mID="1358" v:groupContext="shape" transform="translate(1088.55,652.296) rotate(135.918)">

+		<g id="shape1358-77" v:mID="1358" v:groupContext="shape" transform="translate(1088.55,652.296) rotate(135.918)">

 			<title>Sheet.1358</title>

 			<path d="M0 612 A61.8934 59.9416 44.08 0 1 81.53 607.93 L81.81 608.17" class="st9"/>

 		</g>

-		<g id="shape1359-86" v:mID="1359" v:groupContext="shape" transform="translate(223.4,-167.969) rotate(-38.8995)">

+		<g id="shape1359-82" v:mID="1359" v:groupContext="shape" transform="translate(223.4,-167.969) rotate(-38.8995)">

 			<title>Sheet.1359</title>

 			<path d="M-0 589.27 A87.3742 70.5008 -141.1 0 0 108.15 593.85 L108.39 593.58" class="st9"/>

 		</g>

-		<g id="shape1361-91" v:mID="1361" v:groupContext="shape" transform="translate(655.332,-235.946)">

+		<g id="shape1361-87" v:mID="1361" v:groupContext="shape" transform="translate(655.332,-235.946)">

 			<title>Circle.1361</title>

 			<desc>Cont. Start</desc>

 			<v:userDefs>

@@ -235,13 +227,13 @@
 			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st6"/>

 			<text x="13.53" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Cont.<v:newlineChar/><tspan

 						x="14.72" dy="1.2em" class="st4">Start</tspan></text>		</g>

-		<g id="shape1362-95" v:mID="1362" v:groupContext="shape" transform="translate(600.899,-261.427)">

+		<g id="shape1362-91" v:mID="1362" v:groupContext="shape" transform="translate(600.899,-261.427)">

 			<title>Sheet.1362</title>

 			<path d="M0 612 L48.27 612" class="st14"/>

 		</g>

-		<g id="group1369-100" transform="translate(474.077,-28.5392)" v:mID="1369" v:groupContext="group">

+		<g id="group1369-96" transform="translate(474.077,-28.5392)" v:mID="1369" v:groupContext="group">

 			<title>Sheet.1369</title>

-			<g id="shape1343-101" v:mID="1343" v:groupContext="shape" transform="translate(45,-71.8487)">

+			<g id="shape1343-97" v:mID="1343" v:groupContext="shape" transform="translate(45,-71.8487)">

 				<title>Circle.1343</title>

 				<desc>Cont. Start</desc>

 				<v:userDefs>

@@ -252,7 +244,7 @@
 				<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st6"/>

 				<text x="13.53" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Cont.<v:newlineChar/><tspan

 							x="14.72" dy="1.2em" class="st4">Start</tspan></text>			</g>

-			<g id="shape1344-105" v:mID="1344" v:groupContext="shape">

+			<g id="shape1344-101" v:mID="1344" v:groupContext="shape">

 				<title>Circle.1344</title>

 				<desc>Cont. Run</desc>

 				<v:userDefs>

@@ -263,7 +255,7 @@
 				<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st6"/>

 				<text x="13.53" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Cont.<v:newlineChar/><tspan

 							x="16.72" dy="1.2em" class="st4">Run</tspan></text>			</g>

-			<g id="shape1345-109" v:mID="1345" v:groupContext="shape" transform="translate(77.9616,0)">

+			<g id="shape1345-105" v:mID="1345" v:groupContext="shape" transform="translate(77.9616,0)">

 				<title>Circle.1345</title>

 				<desc>Sha3 Process</desc>

 				<v:userDefs>

@@ -274,20 +266,20 @@
 				<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st6"/>

 				<text x="14.64" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Sha3<v:newlineChar/><tspan

 							x="8.46" dy="1.2em" class="st4">Process</tspan></text>			</g>

-			<g id="shape1350-113" v:mID="1350" v:groupContext="shape" transform="translate(561.313,860.604) rotate(122.798)">

+			<g id="shape1350-109" v:mID="1350" v:groupContext="shape" transform="translate(561.313,860.604) rotate(122.798)">

 				<title>Sheet.1350</title>

 				<path d="M0 605.36 A29.6043 19.0775 -32.8 0 0 29.83 608.34 L30.14 608.16" class="st9"/>

 			</g>

-			<g id="shape1352-118" v:mID="1352" v:groupContext="shape" transform="translate(43.5008,-7.46078)">

+			<g id="shape1352-114" v:mID="1352" v:groupContext="shape" transform="translate(43.5008,-7.46078)">

 				<title>Sheet.1352</title>

 				<path d="M0 612 L35.76 612" class="st14"/>

 			</g>

-			<g id="shape1353-123" v:mID="1353" v:groupContext="shape" transform="translate(-433.114,843.846) rotate(-117.793)">

+			<g id="shape1353-119" v:mID="1353" v:groupContext="shape" transform="translate(-433.114,843.846) rotate(-117.793)">

 				<title>Sheet.1353</title>

 				<path d="M0 606.52 A28.3479 14.9416 -152.21 0 0 27.42 610.6 L27.69 610.36" class="st9"/>

 			</g>

 		</g>

-		<g id="shape1371-128" v:mID="1371" v:groupContext="shape" transform="translate(58.2205,-420.694)">

+		<g id="shape1371-124" v:mID="1371" v:groupContext="shape" transform="translate(58.2205,-420.694)">

 			<title>Circle.1343</title>

 			<desc>Boot Start</desc>

 			<v:userDefs>

@@ -298,7 +290,7 @@
 			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st3"/>

 			<text x="14.85" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Boot<v:newlineChar/><tspan

 						x="14.72" dy="1.2em" class="st4">Start</tspan></text>		</g>

-		<g id="shape1372-132" v:mID="1372" v:groupContext="shape" transform="translate(13.2205,-348.846)">

+		<g id="shape1372-128" v:mID="1372" v:groupContext="shape" transform="translate(13.2205,-348.846)">

 			<title>Circle.1344</title>

 			<desc>Boot Run</desc>

 			<v:userDefs>

@@ -309,83 +301,83 @@
 			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st3"/>

 			<text x="14.85" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Boot<v:newlineChar/><tspan

 						x="16.72" dy="1.2em" class="st4">Run</tspan></text>		</g>

-		<g id="shape1374-136" v:mID="1374" v:groupContext="shape" transform="translate(574.533,511.759) rotate(122.798)">

+		<g id="shape1374-132" v:mID="1374" v:groupContext="shape" transform="translate(574.533,511.759) rotate(122.798)">

 			<title>Sheet.1374</title>

 			<path d="M0 605.36 A29.6043 19.0775 -32.8 0 0 29.83 608.34 L30.14 608.16" class="st9"/>

 		</g>

-		<g id="shape1375-141" v:mID="1375" v:groupContext="shape" transform="translate(64.1821,-295.481)">

+		<g id="shape1375-137" v:mID="1375" v:groupContext="shape" transform="translate(64.1821,-295.481)">

 			<title>Sheet.1375</title>

 			<path d="M0 612 L17.92 612" class="st14"/>

 		</g>

-		<g id="shape1376-146" v:mID="1376" v:groupContext="shape" transform="translate(-439.518,-118.156) rotate(-55.5629)">

+		<g id="shape1376-142" v:mID="1376" v:groupContext="shape" transform="translate(-439.518,-118.156) rotate(-55.5629)">

 			<title>Sheet.1376</title>

 			<path d="M-0 606.52 A34.6254 15.5193 -160.33 0 0 35.74 610.24 L36.03 610.02" class="st9"/>

 		</g>

-		<g id="shape1377-151" v:mID="1377" v:groupContext="shape" transform="translate(67.5859,-382.291)">

+		<g id="shape1377-147" v:mID="1377" v:groupContext="shape" transform="translate(67.5859,-382.291)">

 			<title>Sheet.1377</title>

 			<desc>Fail</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="8.06" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Fail</text>		</g>

-		<g id="shape1378-154" v:mID="1378" v:groupContext="shape" transform="translate(88.2589,-270)">

+		<g id="shape1378-150" v:mID="1378" v:groupContext="shape" transform="translate(88.2589,-270)">

 			<title>Circle.1378</title>

-			<desc>Startup Start</desc>

+			<desc>Boot Done</desc>

 			<v:userDefs>

 				<v:ud v:nameU="visVersion" v:val="VT0(15):26"/>

 			</v:userDefs>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="25.4808" cy="586.519" width="44.6" height="38.2212"/>

-			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st5"/>

-			<text x="8.94" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Startup<v:newlineChar/><tspan

-						x="14.72" dy="1.2em" class="st4">Start</tspan></text>		</g>

-		<g id="shape1381-158" v:mID="1381" v:groupContext="shape" transform="translate(650.701,263.154) rotate(90)">

+			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st3"/>

+			<text x="14.85" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Boot<v:newlineChar/><tspan

+						x="13.57" dy="1.2em" class="st4">Done</tspan></text>		</g>

+		<g id="shape1381-154" v:mID="1381" v:groupContext="shape" transform="translate(650.701,263.154) rotate(90)">

 			<title>Sheet.1381</title>

 			<path d="M0 612 L21.72 612" class="st14"/>

 		</g>

-		<g id="shape1382-163" v:mID="1382" v:groupContext="shape" transform="translate(39.7692,-324)">

+		<g id="shape1382-159" v:mID="1382" v:groupContext="shape" transform="translate(39.7692,-324)">

 			<title>Sheet.1382</title>

 			<desc>Pass</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="5" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Pass</text>		</g>

-		<g id="shape1383-166" v:mID="1383" v:groupContext="shape" transform="translate(607.5,-417.442)">

+		<g id="shape1383-162" v:mID="1383" v:groupContext="shape" transform="translate(607.5,-417.442)">

 			<title>Sheet.1383</title>

 			<desc>Fail</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="8.06" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Fail</text>		</g>

-		<g id="shape1385-169" v:mID="1385" v:groupContext="shape" transform="translate(656.25,-331.531)">

+		<g id="shape1385-165" v:mID="1385" v:groupContext="shape" transform="translate(656.25,-331.531)">

 			<title>Sheet.1385</title>

 			<desc>Fail</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="8.06" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Fail</text>		</g>

-		<g id="shape1386-172" v:mID="1386" v:groupContext="shape" transform="translate(618.385,-360.369)">

+		<g id="shape1386-168" v:mID="1386" v:groupContext="shape" transform="translate(618.385,-360.369)">

 			<title>Sheet.1386</title>

 			<desc>Pass</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="5" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Pass</text>		</g>

-		<g id="shape1387-175" v:mID="1387" v:groupContext="shape" transform="translate(541.885,-372.442)">

+		<g id="shape1387-171" v:mID="1387" v:groupContext="shape" transform="translate(541.885,-372.442)">

 			<title>Sheet.1387</title>

 			<desc>Pass</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="5" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Pass</text>		</g>

-		<g id="shape1388-178" v:mID="1388" v:groupContext="shape" transform="translate(540,-295.942)">

+		<g id="shape1388-174" v:mID="1388" v:groupContext="shape" transform="translate(540,-295.942)">

 			<title>Sheet.1388</title>

 			<desc>Pass</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="5" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Pass</text>		</g>

-		<g id="shape1389-181" v:mID="1389" v:groupContext="shape" transform="translate(655.332,-462.258)">

+		<g id="shape1389-177" v:mID="1389" v:groupContext="shape" transform="translate(655.332,-462.258)">

 			<title>Sheet.1389</title>

 			<desc>If 2 fails,then Alert</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -393,15 +385,15 @@
 			<rect x="0" y="579.13" width="87" height="32.8696" class="st10"/>

 			<text x="15.15" y="592.57" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>If 2 fails,then <tspan

 						x="33.22" dy="1.2em" class="st4">Alert</tspan></text>		</g>

-		<g id="shape1390-185" v:mID="1390" v:groupContext="shape" transform="translate(405.686,-377.502) rotate(-26.715)">

+		<g id="shape1390-181" v:mID="1390" v:groupContext="shape" transform="translate(405.686,-377.502) rotate(-26.715)">

 			<title>Sheet.1390</title>

 			<path d="M-0 612 A41.8029 21.0384 26.72 0 1 41.2 609.44 L41.52 609.59" class="st9"/>

 		</g>

-		<g id="shape1391-190" v:mID="1391" v:groupContext="shape" transform="translate(-55.2291,865.192) rotate(-120.131)">

+		<g id="shape1391-186" v:mID="1391" v:groupContext="shape" transform="translate(-55.2291,865.192) rotate(-120.131)">

 			<title>Sheet.1391</title>

 			<path d="M-0 612 A46.5192 27 30.13 0 1 48.34 609.12 L48.66 609.28" class="st9"/>

 		</g>

-		<g id="shape1393-195" v:mID="1393" v:groupContext="shape" transform="translate(404.441,-93.0384)">

+		<g id="shape1393-191" v:mID="1393" v:groupContext="shape" transform="translate(404.441,-93.0384)">

 			<title>Sheet.1393</title>

 			<desc>If consecutive fail cnt &#62; thresh, then Alert</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -409,7 +401,7 @@
 			<rect x="0" y="561.038" width="99.5591" height="50.9616" class="st10"/>

 			<text x="11.43" y="577.52" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>If consecutive fail <tspan

 						x="11" dy="1.2em" class="st4">cnt &#62; thresh, then </tspan><tspan x="39.5" dy="1.2em" class="st4">Alert</tspan></text>		</g>

-		<g id="shape1396-200" v:mID="1396" v:groupContext="shape" transform="translate(18,-486)">

+		<g id="shape1396-196" v:mID="1396" v:groupContext="shape" transform="translate(18,-486)">

 			<title>Sheet.1396</title>

 			<desc>Boot Entropy Sub-State Machine (non-FIPS entropy)</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -417,7 +409,7 @@
 			<rect x="0" y="561.038" width="99.5591" height="50.9616" class="st15"/>

 			<text x="20.87" y="577.52" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Boot Entropy<v:newlineChar/><tspan

 						x="5.87" dy="1.2em" class="st4"> </tspan>Sub-State Machine <tspan x="7.26" dy="1.2em" class="st4">(non</tspan>-FIPS entropy)</text>		</g>

-		<g id="shape1398-205" v:mID="1398" v:groupContext="shape" transform="translate(572.336,-541.184)">

+		<g id="shape1398-201" v:mID="1398" v:groupContext="shape" transform="translate(572.336,-541.184)">

 			<title>Sheet.1398</title>

 			<desc>Startup Health Test Sub-State Machine</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -425,11 +417,7 @@
 			<rect x="0" y="579.13" width="99.5591" height="32.8696" class="st16"/>

 			<text x="6.7" y="592.57" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Startup Health Test <tspan

 						x="7.25" dy="1.2em" class="st4">Sub</tspan>-State Machine</text>		</g>

-		<g id="shape1400-209" v:mID="1400" v:groupContext="shape" transform="translate(408.087,843.467) rotate(-178.035)">

-			<title>Sheet.1400</title>

-			<path d="M5.68 611 L6.03 611.07 A153 5.25 -1.97 0 0 153.09 609.83" class="st7"/>

-		</g>

-		<g id="shape1402-214" v:mID="1402" v:groupContext="shape" transform="translate(474.077,-165.104)">

+		<g id="shape1402-205" v:mID="1402" v:groupContext="shape" transform="translate(474.077,-165.104)">

 			<title>Sheet.1402</title>

 			<desc>Continuous Health Test Sub-State Machine</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -437,11 +425,11 @@
 			<rect x="0" y="579.13" width="128.923" height="32.8696" class="st16"/>

 			<text x="12.21" y="592.57" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Continuous Health Test <tspan

 						x="21.94" dy="1.2em" class="st4">Sub</tspan>-State Machine</text>		</g>

-		<g id="shape1403-218" v:mID="1403" v:groupContext="shape" transform="translate(1187.42,298.092) rotate(90)">

+		<g id="shape1403-209" v:mID="1403" v:groupContext="shape" transform="translate(1187.42,298.092) rotate(90)">

 			<title>Sheet.1403</title>

 			<path d="M0 612 L20.84 612" class="st14"/>

 		</g>

-		<g id="shape1411-223" v:mID="1411" v:groupContext="shape" transform="translate(39.6614,-175.801)">

+		<g id="shape1411-214" v:mID="1411" v:groupContext="shape" transform="translate(39.6614,-175.801)">

 			<title>Sheet.1411</title>

 			<desc>If sw directed, then leave Alert state</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -449,11 +437,11 @@
 			<rect x="0" y="579.13" width="99.5591" height="32.8696" class="st10"/>

 			<text x="7.81" y="592.57" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>If sw directed, then <tspan

 						x="13.93" dy="1.2em" class="st4">leave Alert state</tspan></text>		</g>

-		<g id="shape1412-227" v:mID="1412" v:groupContext="shape" transform="translate(-178.092,137.547) rotate(-63.6879)">

+		<g id="shape1412-218" v:mID="1412" v:groupContext="shape" transform="translate(-178.092,137.547) rotate(-63.6879)">

 			<title>Sheet.1412</title>

 			<path d="M-0 612 A120.502 86.245 158.81 0 1 156.26 607.74 L156.52 607.99" class="st9"/>

 		</g>

-		<g id="shape1413-232" v:mID="1413" v:groupContext="shape" transform="translate(327,-265.5)">

+		<g id="shape1413-223" v:mID="1413" v:groupContext="shape" transform="translate(327,-265.5)">

 			<title>Sheet.1413</title>

 			<desc>SW directed</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -461,7 +449,7 @@
 			<rect x="0" y="580.646" width="54" height="31.3545" class="st10"/>

 			<text x="18.95" y="593.32" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>SW <tspan x="9.21"

 						dy="1.2em" class="st4">directed</tspan></text>		</g>

-		<g id="shape1414-236" v:mID="1414" v:groupContext="shape" transform="translate(423,-245.75)">

+		<g id="shape1414-227" v:mID="1414" v:groupContext="shape" transform="translate(423,-245.75)">

 			<title>Sheet.1414</title>

 			<desc>Startup Passes</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -469,27 +457,23 @@
 			<rect x="0" y="580.646" width="54" height="31.3545" class="st10"/>

 			<text x="10.88" y="593.32" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Startup<v:newlineChar/><tspan

 						x="10.6" dy="1.2em" class="st4">Passes</tspan></text>		</g>

-		<g id="shape1422-240" v:mID="1422" v:groupContext="shape" transform="translate(303.024,-249.919) rotate(16.3322)">

-			<title>Sheet.1422</title>

-			<path d="M0 609.03 A25.4608 7.46078 -16.33 0 0 20.56 610.55 L20.91 610.46" class="st9"/>

-		</g>

-		<g id="shape1423-245" v:mID="1423" v:groupContext="shape" transform="translate(884.148,-235.013) rotate(16.8946)">

+		<g id="shape1423-231" v:mID="1423" v:groupContext="shape" transform="translate(884.148,-235.013) rotate(16.8946)">

 			<title>Sheet.1423</title>

 			<path d="M0 612 A29.8221 9.05759 163.11 0 1 25.9 608.8 L26.21 608.99" class="st9"/>

 		</g>

-		<g id="shape1427-250" v:mID="1427" v:groupContext="shape" transform="translate(781.546,678.343) rotate(165.392)">

+		<g id="shape1427-236" v:mID="1427" v:groupContext="shape" transform="translate(781.546,678.343) rotate(165.392)">

 			<title>Sheet.1427</title>

 			<path d="M-0 608.38 A34.6771 9.03756 -165.39 0 0 30.54 611.52 L30.85 611.33" class="st9"/>

 		</g>

-		<g id="shape1435-255" v:mID="1435" v:groupContext="shape" transform="translate(737.251,-107.133) rotate(22.7)">

+		<g id="shape1435-241" v:mID="1435" v:groupContext="shape" transform="translate(737.251,-107.133) rotate(22.7)">

 			<title>Sheet.1435</title>

 			<path d="M-0 612 A25.4608 10.6504 157.3 0 1 22.57 608.45 L22.86 608.65" class="st9"/>

 		</g>

-		<g id="shape1436-260" v:mID="1436" v:groupContext="shape" transform="translate(411.526,-326.485) rotate(38.9495)">

+		<g id="shape1436-246" v:mID="1436" v:groupContext="shape" transform="translate(411.526,-326.485) rotate(38.9495)">

 			<title>Sheet.1436</title>

 			<path d="M-0 604.97 A27 21.8248 -38.95 0 0 29.59 608.38 L29.89 608.18" class="st9"/>

 		</g>

-		<g id="shape1437-265" v:mID="1437" v:groupContext="shape" transform="translate(301.5,-56.3228)">

+		<g id="shape1437-251" v:mID="1437" v:groupContext="shape" transform="translate(301.5,-56.3228)">

 			<title>Sheet.1437</title>

 			<desc>Always Testing</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -497,11 +481,11 @@
 			<rect x="0" y="580.646" width="54" height="31.3545" class="st10"/>

 			<text x="11.16" y="593.32" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Always<v:newlineChar/><tspan

 						x="10.6" dy="1.2em" class="st4">Testing</tspan></text>		</g>

-		<g id="shape1440-269" v:mID="1440" v:groupContext="shape" transform="translate(600.899,-417.35)">

+		<g id="shape1440-255" v:mID="1440" v:groupContext="shape" transform="translate(600.899,-417.35)">

 			<title>Sheet.1440</title>

 			<path d="M0 612 L48.27 612" class="st14"/>

 		</g>

-		<g id="shape1441-274" v:mID="1441" v:groupContext="shape" transform="translate(189,-174)">

+		<g id="shape1441-260" v:mID="1441" v:groupContext="shape" transform="translate(189,-174)">

 			<title>Circle.1441</title>

 			<desc>Alert State</desc>

 			<v:userDefs>

@@ -512,24 +496,24 @@
 			<path d="M0 568.5 A43.5 43.5 0 1 1 87 568.5 A43.5 43.5 0 0 1 0 568.5 Z" class="st17"/>

 			<text x="32.56" y="565.2" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Alert<v:newlineChar/><tspan

 						x="31.92" dy="1.2em" class="st4">State</tspan></text>		</g>

-		<g id="shape1444-278" v:mID="1444" v:groupContext="shape" transform="translate(844.5,272.249) rotate(90)">

+		<g id="shape1444-264" v:mID="1444" v:groupContext="shape" transform="translate(844.5,272.249) rotate(90)">

 			<title>Sheet.1444</title>

 			<path d="M0 612 L72.59 612" class="st14"/>

 		</g>

-		<g id="shape1448-283" v:mID="1448" v:groupContext="shape" transform="translate(-60.2072,-173.068) rotate(-30.436)">

+		<g id="shape1448-269" v:mID="1448" v:groupContext="shape" transform="translate(-60.2072,-173.068) rotate(-30.436)">

 			<title>Sheet.1448</title>

 			<path d="M3.53 607.39 L3.74 607.11 A172.174 116.04 32.04 0 1 210.49 612" class="st7"/>

 		</g>

-		<g id="shape1449-288" v:mID="1449" v:groupContext="shape" transform="translate(104.608,975.397) rotate(-156.997)">

+		<g id="shape1449-274" v:mID="1449" v:groupContext="shape" transform="translate(104.608,975.397) rotate(-156.997)">

 			<title>Sheet.1449</title>

 			<path d="M0 601.68 A63.7368 27.0591 -23 0 0 63.52 603.97 L63.86 603.84" class="st9"/>

 		</g>

-		<g id="shape1455-293" v:mID="1455" v:groupContext="shape" transform="translate(306,-90)">

+		<g id="shape1455-279" v:mID="1455" v:groupContext="shape" transform="translate(306,-90)">

 			<title>Sheet.1455</title>

 			<path d="M64.5 585.82 A28.5 26.1777 0 0 1 36 612 A36 27 0 0 1 0 585 A21.7116 34.8418 0 0 1 15.7 551.52 L16.05 551.44"

 					class="st18"/>

 		</g>

-		<g id="shape1543-298" v:mID="1543" v:groupContext="shape" transform="translate(168,-112.646)">

+		<g id="shape1543-284" v:mID="1543" v:groupContext="shape" transform="translate(168,-112.646)">

 			<title>Sheet.1543</title>

 			<desc>If alert fail, then hang</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -537,16 +521,16 @@
 			<rect x="0" y="580.646" width="64.5" height="31.3545" class="st10"/>

 			<text x="9.19" y="593.32" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>If alert fail, <tspan

 						x="10.01" dy="1.2em" class="st4">then hang</tspan></text>		</g>

-		<g id="shape1544-302" v:mID="1544" v:groupContext="shape" transform="translate(168,-146.829)">

+		<g id="shape1544-288" v:mID="1544" v:groupContext="shape" transform="translate(168,-146.829)">

 			<title>Sheet.1544</title>

 			<path d="M64.5 585.82 A28.5 26.1777 0 0 1 36 612 A36 27 0 0 1 0 585 A21.7116 34.8418 0 0 1 15.7 551.52 L16.05 551.44"

 					class="st18"/>

 		</g>

-		<g id="shape1546-307" v:mID="1546" v:groupContext="shape" transform="translate(-104.382,-159.731) rotate(-22.1134)">

+		<g id="shape1546-293" v:mID="1546" v:groupContext="shape" transform="translate(-104.382,-159.731) rotate(-22.1134)">

 			<title>Sheet.1546</title>

 			<path d="M5.5 610.17 L5.85 610.06 A70.0475 6.25972 5.09 0 1 70.41 612" class="st7"/>

 		</g>

-		<g id="shape1548-312" v:mID="1548" v:groupContext="shape" transform="translate(104.231,-420.694)">

+		<g id="shape1548-298" v:mID="1548" v:groupContext="shape" transform="translate(104.231,-420.694)">

 			<title>Sheet.1548</title>

 			<desc>If consecutive fail cnt &#62; thresh, then Alert</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

@@ -554,28 +538,28 @@
 			<rect x="0" y="561.038" width="99.5591" height="50.9616" class="st10"/>

 			<text x="11.43" y="577.52" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>If consecutive fail <tspan

 						x="11" dy="1.2em" class="st4">cnt &#62; thresh, then </tspan><tspan x="39.5" dy="1.2em" class="st4">Alert</tspan></text>		</g>

-		<g id="shape1549-317" v:mID="1549" v:groupContext="shape" transform="translate(197.269,-301.534)">

+		<g id="shape1549-303" v:mID="1549" v:groupContext="shape" transform="translate(197.269,-301.534)">

 			<title>Sheet.1549</title>

 			<desc>Alert</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="5.83" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Alert</text>		</g>

-		<g id="shape1550-320" v:mID="1550" v:groupContext="shape" transform="translate(310.885,-322.536)">

+		<g id="shape1550-306" v:mID="1550" v:groupContext="shape" transform="translate(310.885,-322.536)">

 			<title>Sheet.1550</title>

 			<desc>Alert</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="5.83" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Alert</text>		</g>

-		<g id="shape1551-323" v:mID="1551" v:groupContext="shape" transform="translate(298.135,-216.411)">

+		<g id="shape1551-309" v:mID="1551" v:groupContext="shape" transform="translate(298.135,-216.411)">

 			<title>Sheet.1551</title>

 			<desc>Alert</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

 			<v:textRect cx="16.1154" cy="602.286" width="32.24" height="19.4272"/>

 			<rect x="0" y="592.573" width="32.2308" height="19.4272" class="st10"/>

 			<text x="5.83" y="605.29" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Alert</text>		</g>

-		<g id="shape1552-326" v:mID="1552" v:groupContext="shape" transform="translate(13.2205,-270)">

+		<g id="shape1552-312" v:mID="1552" v:groupContext="shape" transform="translate(13.2205,-270)">

 			<title>Circle.1552</title>

 			<desc>Post Test</desc>

 			<v:userDefs>

@@ -586,29 +570,41 @@
 			<path d="M0 586.52 A25.4808 25.4808 0 0 1 50.96 586.52 A25.4808 25.4808 0 1 1 0 586.52 Z" class="st3"/>

 			<text x="15.75" y="583.22" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Post <tspan

 						x="16.07" dy="1.2em" class="st4">Test </tspan> </text>		</g>

-		<g id="shape1554-330" v:mID="1554" v:groupContext="shape" transform="translate(64.1821,-369)">

+		<g id="shape1554-316" v:mID="1554" v:groupContext="shape" transform="translate(64.1821,-369)">

 			<title>Sheet.1554</title>

 			<path d="M0 606.67 A25.8179 5.32648 -180 0 0 25.82 612 A63 58.5 -180 0 0 88.52 559.21 L88.54 558.86" class="st19"/>

 		</g>

-		<g id="shape1555-336" v:mID="1555" v:groupContext="shape" transform="translate(310.5,-384.823)">

+		<g id="shape1555-322" v:mID="1555" v:groupContext="shape" transform="translate(256.22,-405)">

 			<title>Sheet.1555</title>

-			<desc>Boot Passes</desc>

+			<desc>Boot Passes &#38; MODULE_ENABLE Off</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

-			<v:textRect cx="27" cy="596.323" width="54" height="31.3545"/>

-			<rect x="0" y="580.646" width="54" height="31.3545" class="st10"/>

-			<text x="16.71" y="593.32" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Boot<v:newlineChar/><tspan

-						x="10.6" dy="1.2em" class="st4">Passes</tspan></text>		</g>

-		<g id="shape1556-340" v:mID="1556" v:groupContext="shape" transform="translate(-489.533,358.676) rotate(-96.3972)">

+			<v:textRect cx="49.7795" cy="586.519" width="99.56" height="50.9616"/>

+			<rect x="0" y="561.038" width="99.5591" height="50.9616" class="st10"/>

+			<text x="16.98" y="577.52" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Boot Passes &#38;<v:newlineChar/><tspan

+						x="5.88" dy="1.2em" class="st4">MODULE_ENABLE </tspan><tspan x="43.11" dy="1.2em" class="st4">Off</tspan></text>		</g>

+		<g id="shape1556-327" v:mID="1556" v:groupContext="shape" transform="translate(-489.533,358.676) rotate(-96.3972)">

 			<title>Sheet.1556</title>

 			<path d="M-0 607.05 A107.194 12.0184 -173.6 0 0 102.51 610.1 L102.82 609.92" class="st9"/>

 		</g>

-		<g id="shape1557-345" v:mID="1557" v:groupContext="shape" transform="translate(108,-318.038)">

+		<g id="shape1557-332" v:mID="1557" v:groupContext="shape" transform="translate(101.25,-306)">

 			<title>Sheet.1557</title>

-			<desc>Always in boot-only mode</desc>

+			<desc>MODULE_ENABLE Off</desc>

 			<v:textBlock v:margins="rect(4,4,4,4)"/>

-			<v:textRect cx="32.25" cy="586.519" width="64.51" height="50.9616"/>

-			<rect x="0" y="561.038" width="64.5" height="50.9616" class="st10"/>

-			<text x="11.13" y="577.52" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Always in <tspan

-						x="11.68" dy="1.2em" class="st4">boot</tspan>-only <tspan x="19.74" dy="1.2em" class="st4">mode</tspan></text>		</g>

+			<v:textRect cx="57.375" cy="586.519" width="114.75" height="50.9616"/>

+			<rect x="0" y="561.038" width="114.75" height="50.9616" class="st10"/>

+			<text x="13.47" y="583.52" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>MODULE_ENABLE<v:newlineChar/><tspan

+						x="49.32" dy="1.2em" class="st4"> </tspan>Off</text>		</g>

+		<g id="shape1564-336" v:mID="1564" v:groupContext="shape" transform="translate(-197.058,-89.1753) rotate(-52.8565)">

+			<title>Sheet.1564</title>

+			<path d="M0 577.48 A148.971 100.388 -34.14 0 0 174.27 580.85 L174.58 580.65" class="st9"/>

+		</g>

+		<g id="shape1565-341" v:mID="1565" v:groupContext="shape" transform="translate(400.5,-431.735)">

+			<title>Sheet.1565</title>

+			<desc>FIPS_ENABLE On</desc>

+			<v:textBlock v:margins="rect(4,4,4,4)"/>

+			<v:textRect cx="40.5" cy="588.484" width="81" height="47.0317"/>

+			<rect x="0" y="564.968" width="81" height="47.0317" class="st10"/>

+			<text x="6.87" y="585.48" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>FIPS_ENABLE <tspan

+						x="33.83" dy="1.2em" class="st4">On</tspan></text>		</g>

 	</g>

 </svg>

diff --git a/hw/ip/entropy_src/doc/es_main_sm.vsdx b/hw/ip/entropy_src/doc/es_main_sm.vsdx
index 16b2c6e..6a212c7 100644
--- a/hw/ip/entropy_src/doc/es_main_sm.vsdx
+++ b/hw/ip/entropy_src/doc/es_main_sm.vsdx
Binary files differ
diff --git a/hw/ip/entropy_src/dv/env/entropy_src_env_cfg.sv b/hw/ip/entropy_src/dv/env/entropy_src_env_cfg.sv
index 4e97aef..03b5e0b 100644
--- a/hw/ip/entropy_src/dv/env/entropy_src_env_cfg.sv
+++ b/hw/ip/entropy_src/dv/env/entropy_src_env_cfg.sv
@@ -41,11 +41,13 @@
   // Knobs & Weights //
   /////////////////////
 
-  uint          enable_pct, route_software_pct, regwen_pct, fw_read_pct, fw_over_pct,
-                otp_en_es_fw_read_pct, otp_en_es_fw_over_pct, entropy_data_reg_enable_pct,
-                rng_bit_enable_pct, do_check_ht_diag_pct, type_bypass_pct, boot_bypass_disable_pct;
 
-
+  // Knobs & Weights
+  uint          module_enable_pct, fips_enable_pct, route_software_pct,
+                sw_regupd_pct, me_regwen_pct, fw_read_pct, fw_over_pct,
+                otp_en_es_fw_read_pct, otp_en_es_fw_over_pct,
+                type_bypass_pct, entropy_data_reg_enable_pct,
+                rng_bit_enable_pct, do_check_ht_diag_pct;
 
   // Health test knobs:
   real adaptp_sigma_max, adaptp_sigma_min;
@@ -56,12 +58,11 @@
   // Randomized fields //
   ///////////////////////
 
-  rand bit         regwen;
+  rand bit         sw_regupd, me_regwen;
   rand bit [1:0]   rng_bit_sel;
 
-  rand prim_mubi_pkg::mubi4_t   enable, route_software, type_bypass,
-                                boot_bypass_disable, entropy_data_reg_enable,
-                                rng_bit_enable;
+  rand prim_mubi_pkg::mubi4_t   module_enable, fips_enable, route_software, type_bypass,
+                                entropy_data_reg_enable, rng_bit_enable;
 
 
   rand int                      observe_fifo_thresh;
@@ -95,9 +96,13 @@
   // Constraints //
   /////////////////
 
-  constraint regwen_c {regwen dist {
-      1 :/ regwen_pct,
-      0 :/ (100 - regwen_pct) };}
+  constraint sw_regupd_c {sw_regupd dist {
+      1 :/ sw_regupd_pct,
+      0 :/ (100 - sw_regupd_pct) };}
+
+  constraint me_regwen_c {me_regwen dist {
+      1 :/ me_regwen_pct,
+      0 :/ (100 - me_regwen_pct) };}
 
   constraint otp_en_es_fw_read_c {otp_en_es_fw_read dist {
       prim_mubi_pkg::MuBi8True  :/ otp_en_es_fw_read_pct,
@@ -115,9 +120,13 @@
       prim_mubi_pkg::MuBi4True  :/ fw_over_pct,
       prim_mubi_pkg::MuBi4False :/ (100 - fw_over_pct) };}
 
-  constraint enable_c {enable dist {
-      prim_mubi_pkg::MuBi4True  :/ enable_pct,
-      prim_mubi_pkg::MuBi4False :/ 100 - enable_pct };}
+  constraint module_enable_c {module_enable dist {
+      prim_mubi_pkg::MuBi4True  :/ module_enable_pct,
+      prim_mubi_pkg::MuBi4False :/ 100 - module_enable_pct };}
+
+  constraint fips_enable_c {fips_enable dist {
+      prim_mubi_pkg::MuBi4True  :/ fips_enable_pct,
+      prim_mubi_pkg::MuBi4False :/ 100 - fips_enable_pct };}
 
   constraint route_c {route_software dist {
       prim_mubi_pkg::MuBi4True  :/ route_software_pct,
@@ -127,10 +136,6 @@
       prim_mubi_pkg::MuBi4True  :/ type_bypass_pct,
       prim_mubi_pkg::MuBi4False :/ (100 - type_bypass_pct) };}
 
-  constraint boot_bypass_disable_c {boot_bypass_disable dist {
-      prim_mubi_pkg::MuBi4True  :/ boot_bypass_disable_pct,
-      prim_mubi_pkg::MuBi4False :/ (100 - boot_bypass_disable_pct)};}
-
   constraint entropy_data_reg_enable_c {entropy_data_reg_enable dist {
       prim_mubi_pkg::MuBi4True  :/ entropy_data_reg_enable_pct,
       prim_mubi_pkg::MuBi4False :/ (100 - entropy_data_reg_enable_pct)};}
@@ -179,16 +184,16 @@
              otp_en_es_fw_read.name()),
         $sformatf("\n\t |***** otp_en_es_fw_over           : %12s *****| \t",
                   otp_en_es_fw_over.name()),
-        $sformatf("\n\t |***** enable                      : %12s *****| \t",
-                 enable.name()),
+        $sformatf("\n\t |***** module_enable               : %12s *****| \t",
+                 module_enable.name()),
+        $sformatf("\n\t |***** fips_enable                 : %12s *****| \t",
+                 fips_enable.name()),
         $sformatf("\n\t |***** route_software              : %12s *****| \t",
                   route_software.name()),
         $sformatf("\n\t |***** type_bypass                 : %12s *****| \t",
                    type_bypass.name()),
         $sformatf("\n\t |***** entropy_data_reg_enable     : %12s *****| \t",
                   entropy_data_reg_enable.name()),
-        $sformatf("\n\t |***** boot_bypass_disable         : %12s *****| \t",
-                  boot_bypass_disable.name()),
         $sformatf("\n\t |***** rng_bit_enable              : %12s *****| \t",
                   rng_bit_enable.name()),
         $sformatf("\n\t |***** rng_bit_sel                 : %12d *****| \t",
@@ -229,16 +234,16 @@
                   fw_read_pct),
         $sformatf("\n\t |***** fw_over_pct                 : %12d *****| \t",
                   fw_over_pct),
-        $sformatf("\n\t |***** enable_pct                  : %12d *****| \t",
-                  enable_pct),
+        $sformatf("\n\t |***** module_enable_pct           : %12d *****| \t",
+                  module_enable_pct),
+        $sformatf("\n\t |***** fips_enable_pct             : %12d *****| \t",
+                  fips_enable_pct),
         $sformatf("\n\t |***** route_software_pct          : %12d *****| \t",
                   route_software_pct),
         $sformatf("\n\t |***** type_bypass_pct             : %12d *****| \t",
                   type_bypass_pct),
         $sformatf("\n\t |***** entropy_data_reg_enable_pct : %12d *****| \t",
                   entropy_data_reg_enable_pct),
-        $sformatf("\n\t |***** boot_bypass_disable_pct     : %12d *****| \t",
-                  boot_bypass_disable_pct),
         $sformatf("\n\t |***** rng_bit_enable_pct          : %12d *****| \t",
                   rng_bit_enable_pct),
         $sformatf("\n\t |***** adaptp_sigma range          : (%04.2f, %04.2f) *****| \t",
diff --git a/hw/ip/entropy_src/dv/env/entropy_src_env_pkg.sv b/hw/ip/entropy_src/dv/env/entropy_src_env_pkg.sv
index 748034d..785d0f7 100644
--- a/hw/ip/entropy_src/dv/env/entropy_src_env_pkg.sv
+++ b/hw/ip/entropy_src/dv/env/entropy_src_env_pkg.sv
@@ -34,7 +34,7 @@
     NumEntropySrcIntr = 4
   } entropy_src_intr_e;
 
-  typedef enum { BOOT, STARTUP, CONTINUOUS } entropy_phase_e;
+  typedef enum { BOOT, STARTUP, CONTINUOUS, HALTED } entropy_phase_e;
   typedef bit [RNG_BUS_WIDTH-1:0] rng_val_t;
   typedef rng_val_t queue_of_rng_val_t[$];
 
@@ -51,18 +51,13 @@
   // satisfy both the startup and (optional) boot phases.
   //
   function automatic entropy_phase_e convert_seed_idx_to_phase(int seed_idx,
-                                                               bit conditioning_bypass,
-                                                               bit boot_disable);
+                                                               bit fips_enable);
 
-    if (conditioning_bypass) begin
-      return BOOT;
-    end else if (!boot_disable) begin
+    if (!fips_enable) begin
       if (seed_idx == 0) begin
         return BOOT;
-      end else if (seed_idx == 1) begin
-        return STARTUP;
       end else begin
-        return CONTINUOUS;
+        return HALTED;
       end
     end else begin
       if (seed_idx == 0) begin
@@ -82,14 +77,13 @@
   //
   // The window size also dictates the ammount of data needed to create a single seed.
   //
-  function automatic int rng_window_size(int seed_idx, bit bypass,
-                                         bit boot_disable, int fips_window_size);
+  function automatic int rng_window_size(int seed_idx, bit fips_enable, int fips_window_size);
     entropy_phase_e phase;
 
     // Counts the number of seeds that have been successfully generated
     // in any post-boot phase.
 
-    phase = convert_seed_idx_to_phase(seed_idx, bypass, boot_disable);
+    phase = convert_seed_idx_to_phase(seed_idx, fips_enable);
 
     return (phase == BOOT) ? entropy_src_pkg::CSRNG_BUS_WIDTH : fips_window_size;
 
diff --git a/hw/ip/entropy_src/dv/env/entropy_src_scoreboard.sv b/hw/ip/entropy_src/dv/env/entropy_src_scoreboard.sv
index d01f6c5..4d85cb0 100644
--- a/hw/ip/entropy_src/dv/env/entropy_src_scoreboard.sv
+++ b/hw/ip/entropy_src/dv/env/entropy_src_scoreboard.sv
@@ -740,7 +740,9 @@
       end
       "intr_test": begin
       end
-      "regwen_me": begin
+      "me_regwen": begin
+      end
+      "sw_regupd": begin
       end
       "regwen": begin
       end
@@ -882,8 +884,7 @@
     int                              pass_cnt;
 
     dut_phase = convert_seed_idx_to_phase(seed_idx,
-                                          cfg.type_bypass == prim_mubi_pkg::MuBi4True,
-                                          cfg.boot_bypass_disable == prim_mubi_pkg::MuBi4True);
+                                          cfg.fips_enable == prim_mubi_pkg::MuBi4True);
 
     sample_rng_frames = sample.size();
 
@@ -1017,8 +1018,7 @@
       `uvm_info(`gfn, $sformatf("SEED_IDX: %01d", seed_idx), UVM_FULL)
 
       dut_fsm_phase = convert_seed_idx_to_phase(seed_idx,
-          cfg.type_bypass == prim_mubi_pkg::MuBi4True,
-          cfg.boot_bypass_disable == prim_mubi_pkg::MuBi4True);
+                                                cfg.fips_enable == prim_mubi_pkg::MuBi4True);
 
       case (dut_fsm_phase)
         BOOT: begin
@@ -1033,6 +1033,10 @@
           pass_requirement = 1;
           ht_fips_mode     = 1;
         end
+        HALTED: begin
+          // exit this task.
+          return;
+        end
         default: begin
           `uvm_fatal(`gfn, "Invalid predicted dut state (bug in environment)")
         end
@@ -1040,8 +1044,7 @@
 
       `uvm_info(`gfn, $sformatf("phase: %s\n", dut_fsm_phase.name), UVM_HIGH)
 
-      window_size = rng_window_size(seed_idx, cfg.type_bypass == prim_mubi_pkg::MuBi4True,
-                                    cfg.boot_bypass_disable == prim_mubi_pkg::MuBi4True,
+      window_size = rng_window_size(seed_idx, cfg.fips_enable == prim_mubi_pkg::MuBi4True,
                                     cfg.fips_window_size);
 
       `uvm_info(`gfn, $sformatf("window_size: %08d\n", window_size), UVM_HIGH)
diff --git a/hw/ip/entropy_src/dv/env/seq_lib/entropy_src_base_vseq.sv b/hw/ip/entropy_src/dv/env/seq_lib/entropy_src_base_vseq.sv
index addf334..c8bc13f 100644
--- a/hw/ip/entropy_src/dv/env/seq_lib/entropy_src_base_vseq.sv
+++ b/hw/ip/entropy_src/dv/env/seq_lib/entropy_src_base_vseq.sv
@@ -106,6 +106,7 @@
     csr_update(.csr(ral.entropy_control));
 
     // Thresholds managed in derived vseq classes
+    // TODO: Study how this interacts with sw_regupd/regwen
 
     // FW_OV registers
     ral.fw_ov_control.fw_ov_mode.set(cfg.fw_read_enable);
@@ -116,27 +117,29 @@
     csr_update(ral.observe_fifo_thresh);
 
     // Enables (should be done last)
-    ral.conf.fips_enable.set(cfg.enable);
-
+    ral.conf.fips_enable.set(cfg.fips_enable);
     ral.conf.entropy_data_reg_enable.set(cfg.entropy_data_reg_enable);
-    ral.conf.boot_bypass_disable.set(cfg.boot_bypass_disable);
     ral.conf.rng_bit_enable.set(cfg.rng_bit_enable);
     ral.conf.rng_bit_sel.set(cfg.rng_bit_sel);
     csr_update(.csr(ral.conf));
 
+    // Register write enable lock is on be default
+    // Setting this to zero will lock future writes
+    // TODO Do we need to check main_sm_idle before writing DUT registers?
+    csr_wr(.ptr(ral.sw_regupd), .value(cfg.sw_regupd));
 
-    ral.module_enable.set(cfg.enable); // TODO: Change config here?
+    // Module_enables (should be done last)
+    ral.module_enable.set(cfg.module_enable); // TODO: Change config here?
     csr_update(.csr(ral.module_enable));
 
+    ral.me_regwen.set(cfg.me_regwen);
+    csr_update(.csr(ral.me_regwen));
+
     if (do_interrupt) begin
       ral.intr_enable.set(en_intr);
       csr_update(ral.intr_enable);
     end
 
-    // Register write enable lock is on be default
-    // Setting this to zero will lock future writes
-    // TODO Do we need to check main_sm_idle before writing DUT registers?
-    csr_wr(.ptr(ral.regwen), .value(cfg.regwen));
 
   endtask
 
diff --git a/hw/ip/entropy_src/dv/tests/entropy_src_base_test.sv b/hw/ip/entropy_src/dv/tests/entropy_src_base_test.sv
index 0bc0e27..cf70ed2 100644
--- a/hw/ip/entropy_src/dv/tests/entropy_src_base_test.sv
+++ b/hw/ip/entropy_src/dv/tests/entropy_src_base_test.sv
@@ -31,8 +31,8 @@
     cfg.seed_cnt               = 1;
     cfg.otp_en_es_fw_read_pct  = 100;
     cfg.otp_en_es_fw_over_pct  = 100;
-    cfg.regwen_pct             = 100;
-    cfg.enable_pct             = 100;
+    cfg.me_regwen_pct          = 100;
+    cfg.module_enable_pct      = 100;
     cfg.type_bypass_pct        = 100;
   endfunction
 
diff --git a/hw/ip/entropy_src/dv/tests/entropy_src_rng_test.sv b/hw/ip/entropy_src/dv/tests/entropy_src_rng_test.sv
index df2792f..976f824 100644
--- a/hw/ip/entropy_src/dv/tests/entropy_src_rng_test.sv
+++ b/hw/ip/entropy_src/dv/tests/entropy_src_rng_test.sv
@@ -30,7 +30,8 @@
 
     // Allow for software reads, but let the vseq body do the enabling
     cfg.route_software_pct          = 0;
-    cfg.enable_pct                  = 0;
+    cfg.module_enable_pct           = 0;
+    cfg.fips_enable_pct             = 100;
 
     `DV_CHECK_RANDOMIZE_FATAL(cfg)
     `uvm_info(`gfn, $sformatf("%s", cfg.convert2string()), UVM_LOW)
diff --git a/hw/ip/entropy_src/rtl/entropy_src_core.sv b/hw/ip/entropy_src/rtl/entropy_src_core.sv
index 5bb085a..b2c9420 100644
--- a/hw/ip/entropy_src/rtl/entropy_src_core.sv
+++ b/hw/ip/entropy_src/rtl/entropy_src_core.sv
@@ -85,7 +85,6 @@
   logic       fw_ov_fifo_rd_pulse;
   logic       fw_ov_fifo_wr_pulse;
   logic       es_enable_pfa;
-  logic       es_enable_early;
 
   logic       fips_enable_pfe;
   logic       fips_enable_pfa;
@@ -140,6 +139,7 @@
   logic                   any_fail_pulse;
   logic                   main_stage_push;
   logic                   bypass_stage_pop;
+  logic                   boot_phase_done;
   logic [HalfRegWidth-1:0] any_fail_count;
   logic                    any_fails_cntr_err;
   logic                    alert_threshold_fail;
@@ -155,8 +155,6 @@
   logic                     extht_active;
   logic                     alert_cntrs_clr;
   logic                     health_test_clr;
-  logic                     health_test_clr_pfe;
-  logic                     health_test_clr_pfa;
   logic                     health_test_done_pulse;
   logic [RngBusWidth-1:0]   health_test_esbus;
   logic                     health_test_esbus_vld;
@@ -167,11 +165,11 @@
   logic                     es_route_to_sw;
   logic                     es_bypass_to_sw;
   logic                     es_bypass_mode;
-  logic                     rst_bypass_mode;
   logic                     rst_alert_cntr;
-  logic                     boot_bypass_disable;
-  logic                     boot_bypass_disable_pfe;
-  logic                     boot_bypass_disable_pfa;
+  logic                     threshold_scope;
+  logic                     unused_threshold_scope;
+  logic                     threshold_scope_pfe;
+  logic                     threshold_scope_pfa;
   logic                     fips_compliance;
 
   logic [HalfRegWidth-1:0] health_test_fips_window;
@@ -374,7 +372,7 @@
   logic                     es_bus_cmp_alert;
   logic                     es_thresh_cfg_alert;
   logic                     es_main_sm_idle;
-  logic [7:0]               es_main_sm_state;
+  logic [8:0]               es_main_sm_state;
   logic                     fifo_write_err_sum;
   logic                     fifo_read_err_sum;
   logic                     fifo_status_err_sum;
@@ -417,7 +415,6 @@
   logic                    unused_sha3_state;
   logic                    unused_entropy_data;
   logic                    unused_fw_ov_rd_data;
-  logic                    unused_health_test_clr_pfe;
 
   prim_mubi_pkg::mubi8_t en_entropy_src_fw_read;
   prim_mubi_pkg::mubi8_t en_entropy_src_fw_over;
@@ -427,7 +424,6 @@
   logic [RngBusWidth-1:0] ht_esbus_dly_q, ht_esbus_dly_d;
   logic        ht_esbus_vld_dly_q, ht_esbus_vld_dly_d;
   logic        ht_esbus_vld_dly2_q, ht_esbus_vld_dly2_d;
-  logic        boot_bypass_q, boot_bypass_d;
   logic        ht_failed_q, ht_failed_d;
   logic        ht_done_pulse_q, ht_done_pulse_d;
   logic                    sha3_msg_rdy_q, sha3_msg_rdy_d;
@@ -438,7 +434,6 @@
 
   always_ff @(posedge clk_i or negedge rst_ni)
     if (!rst_ni) begin
-      boot_bypass_q         <= 1'b1;
       ht_failed_q           <= '0;
       ht_done_pulse_q       <= '0;
       ht_esbus_dly_q        <= '0;
@@ -450,7 +445,6 @@
       es_rdata_capt_q       <= '0;
       es_rdata_capt_vld_q   <= '0;
     end else begin
-      boot_bypass_q         <= boot_bypass_d;
       ht_failed_q           <= ht_failed_d;
       ht_done_pulse_q       <= ht_done_pulse_d;
       ht_esbus_dly_q        <= ht_esbus_dly_d;
@@ -468,13 +462,13 @@
   import prim_mubi_pkg::mubi4_test_false_loose;
   import prim_mubi_pkg::mubi4_test_invalid;
 
-  mubi4_t [4:0] mubi_module_en_fanout;
+  mubi4_t [3:0] mubi_module_en_fanout;
 
   //--------------------------------------------
   // register lock gating
   //--------------------------------------------
 
-  assign es_hw_regwen = reg2hw.sw_regupd.q && mubi4_test_false_loose(mubi_module_en_fanout[4]);
+  assign es_hw_regwen = reg2hw.sw_regupd.q && mubi4_test_false_loose(mubi_module_en_fanout[3]);
   assign hw2reg.regwen.de = 1'b1;
   assign hw2reg.regwen.d = es_hw_regwen;
 
@@ -492,7 +486,7 @@
   assign hw2reg.recov_alert_sts.module_enable_field_alert.d  = es_enable_pfa;
 
   prim_mubi4_sync #(
-    .NumCopies(5),
+    .NumCopies(4),
     .AsyncOn(0)
   ) u_prim_mubi4_sync_entropy_module_en (
     .clk_i,
@@ -552,7 +546,6 @@
     .mubi_o(mubi_entropy_reg_en_fanout)
   );
 
-  assign es_enable_early = mubi4_test_true_strict(mubi_module_en_fanout[2]);
   assign observe_fifo_thresh = reg2hw.observe_fifo_thresh.q;
 
   // SEC_CM: CONFIG.MUBI
@@ -796,6 +789,7 @@
 
   // state machine status
   assign hw2reg.debug_status.main_sm_idle.d = es_main_sm_idle;
+  assign hw2reg.debug_status.main_sm_boot_done.d = boot_phase_done;
   assign hw2reg.debug_status.main_sm_state.d = es_main_sm_state;
 
   //--------------------------------------------
@@ -908,16 +902,7 @@
   assign markov_active = es_enable_q_fo[22];
   assign extht_active = es_enable_q_fo[23];
 
-  // TODO: Remove health_test_clr bit
-  // SEC_CM: CONFIG.MUBI
-  mubi4_t mubi_ht_clr;
-  assign mubi_ht_clr = mubi4_t'(reg2hw.conf.health_test_clr.q);
-  assign health_test_clr_pfe = mubi4_test_true_strict(mubi_ht_clr);
-  assign health_test_clr_pfa = mubi4_test_invalid(mubi_ht_clr);
-  assign hw2reg.recov_alert_sts.health_test_clr_field_alert.de = health_test_clr_pfa;
-  assign hw2reg.recov_alert_sts.health_test_clr_field_alert.d  = health_test_clr_pfa;
-
-  assign health_test_clr = mubi4_test_true_strict(mubi_module_en_fanout[3]) && !es_enable_q_fo[24];
+  assign health_test_clr = mubi4_test_true_strict(mubi_module_en_fanout[2]) && !es_enable_q_fo[24];
 
   assign health_test_fips_window = reg2hw.health_test_windows.fips_window.q;
   assign health_test_bypass_window = reg2hw.health_test_windows.bypass_window.q;
@@ -1306,26 +1291,21 @@
     .mubi_o(mubi_es_type_fanout)
   );
 
-  // TODO: Remove boot_bypass_disable Issue #9853
+  // TODO(#9759): add more description.
   // SEC_CM: CONFIG.MUBI
-  mubi4_t mubi_boot_byp_dis;
-  assign mubi_boot_byp_dis = mubi4_t'(reg2hw.conf.boot_bypass_disable.q);
-  assign boot_bypass_disable_pfe = mubi4_test_true_strict(mubi_boot_byp_dis);
-  assign boot_bypass_disable_pfa = mubi4_test_invalid(mubi_boot_byp_dis);
-  assign hw2reg.recov_alert_sts.boot_bypass_disable_field_alert.de = boot_bypass_disable_pfa;
-  assign hw2reg.recov_alert_sts.boot_bypass_disable_field_alert.d  = boot_bypass_disable_pfa;
+  mubi4_t mubi_thresh_scope;
+  assign mubi_thresh_scope = mubi4_t'(reg2hw.conf.threshold_scope.q);
+  assign threshold_scope_pfe = mubi4_test_true_strict(mubi_thresh_scope);
+  assign threshold_scope_pfa = mubi4_test_invalid(mubi_thresh_scope);
+  assign hw2reg.recov_alert_sts.threshold_scope_field_alert.de = threshold_scope_pfa;
+  assign hw2reg.recov_alert_sts.threshold_scope_field_alert.d  = threshold_scope_pfa;
+  assign unused_threshold_scope = threshold_scope;
 
   assign es_route_to_sw = es_route_pfe;
   assign es_bypass_to_sw = es_type_pfe;
-  assign boot_bypass_disable = boot_bypass_disable_pfe;
+  assign threshold_scope = threshold_scope_pfe;
 
-  assign boot_bypass_d =
-         (!es_enable_early) ? 1'b1 :  // special case for reset
-         boot_bypass_disable ? 1'b0 :
-         rst_bypass_mode ? 1'b0 :
-         boot_bypass_q;
-
-  assign es_bypass_mode = boot_bypass_q || es_bypass_to_sw;
+  assign es_bypass_mode = (!fips_enable_pfe) || es_bypass_to_sw;
 
   // send off to AST RNG for possibly faster entropy generation
   assign rng_fips_o = es_bypass_mode;
@@ -1940,8 +1920,7 @@
          es_enable_pfa ||
          fips_enable_pfa ||
          entropy_data_reg_en_pfa ||
-         boot_bypass_disable_pfa ||
-         health_test_clr_pfa ||
+         threshold_scope_pfa ||
          rng_bit_enable_pfa ||
          fw_ov_mode_pfa ||
          fw_ov_entropy_insert_pfa ||
@@ -2321,12 +2300,12 @@
     .sfifo_esfinal_full_i (sfifo_esfinal_full),
     .rst_alert_cntr_o     (rst_alert_cntr),
     .bypass_mode_i        (es_bypass_mode),
-    .rst_bypass_mode_o    (rst_bypass_mode),
     .main_stage_rdy_i     (pfifo_cond_not_empty),
     .bypass_stage_rdy_i   (pfifo_bypass_not_empty),
     .sha3_state_vld_i     (sha3_state_vld),
     .main_stage_push_o    (main_stage_push),
     .bypass_stage_pop_o   (bypass_stage_pop),
+    .boot_phase_done_o    (boot_phase_done),
     .sha3_start_o         (sha3_start),
     .sha3_process_o       (sha3_process),
     .sha3_done_o          (sha3_done),
@@ -2385,15 +2364,7 @@
   assign es_hw_if_req = entropy_src_hw_if_i.es_req;
   assign entropy_src_hw_if_o.es_ack = es_hw_if_ack;
   assign entropy_src_hw_if_o.es_bits = esfinal_data;
-  // TODO: The following is a placeholder for the final implementation
-  // for blocking non-FIPS data.  Please see PR #9949 & Issue 9853
-  // for details.
-  //
-  // For now data is simply masked if fips_enable is not set
-  // but this does not prevent previously queued seeds from
-  // exiting once FIPS_ENABLE is asserted.
-  assign entropy_src_hw_if_o.es_fips = esfinal_fips_flag
-                                       && fips_enable_pfe; // TODO: Fix fips_enable_pfe
+  assign entropy_src_hw_if_o.es_fips = esfinal_fips_flag;
 
   // SEC_CM: ACK_SM.FSM.SPARSE
   entropy_src_ack_sm u_entropy_src_ack_sm (
@@ -2484,7 +2455,6 @@
   assign unused_sha3_state = (|sha3_state[0][sha3_pkg::StateW-1:SeedLen]);
   assign unused_entropy_data = (|reg2hw.entropy_data.q);
   assign unused_fw_ov_rd_data = (|reg2hw.fw_ov_rd_data.q);
-  assign unused_health_test_clr_pfe = health_test_clr_pfe;
 
 
 endmodule
diff --git a/hw/ip/entropy_src/rtl/entropy_src_main_sm.sv b/hw/ip/entropy_src/rtl/entropy_src_main_sm.sv
index 77f03f9..7090966 100644
--- a/hw/ip/entropy_src/rtl/entropy_src_main_sm.sv
+++ b/hw/ip/entropy_src/rtl/entropy_src_main_sm.sv
@@ -7,7 +7,7 @@
 //   determines when new entropy is ready to be forwarded
 
 module entropy_src_main_sm #(
-  localparam int StateWidth = 8
+  localparam int StateWidth = 9
 ) (
   input logic                   clk_i,
   input logic                   rst_ni,
@@ -19,12 +19,12 @@
   input logic                   sfifo_esfinal_full_i,
   output logic                  rst_alert_cntr_o,
   input logic                   bypass_mode_i,
-  output logic                  rst_bypass_mode_o,
   input logic                   main_stage_rdy_i,
   input logic                   bypass_stage_rdy_i,
   input logic                   sha3_state_vld_i,
   output logic                  main_stage_push_o,
   output logic                  bypass_stage_pop_o,
+  output logic                  boot_phase_done_o,
   output logic                  sha3_start_o,
   output logic                  sha3_process_o,
   output logic                  sha3_done_o,
@@ -38,46 +38,48 @@
 );
 
 // Encoding generated with:
-// $ ./util/design/sparse-fsm-encode.py -d 3 -m 18 -n 8 \
-//      -s 281987796 --language=sv
+// $ ./util/design/sparse-fsm-encode.py -d 3 -m 19 -n 9 \
+//      -s 1097041703 --language=sv
 //
 // Hamming distance histogram:
 //
 //  0: --
 //  1: --
 //  2: --
-//  3: |||||||||||||||| (31.37%)
-//  4: |||||||||||||||||||| (37.91%)
-//  5: |||||||| (15.69%)
-//  6: |||| (9.15%)
-//  7: ||| (5.88%)
-//  8: --
+//  3: |||||||||||||| (19.88%)
+//  4: |||||||||||||||||||| (27.49%)
+//  5: |||||||||||||||||| (25.73%)
+//  6: |||||||||||| (17.54%)
+//  7: ||||| (7.02%)
+//  8: | (2.34%)
+//  9: --
 //
 // Minimum Hamming distance: 3
-// Maximum Hamming distance: 7
+// Maximum Hamming distance: 8
 // Minimum Hamming weight: 2
 // Maximum Hamming weight: 7
 //
 
   typedef enum logic [StateWidth-1:0] {
-    Idle              = 8'b10001000, // idle
-    BootHTRunning     = 8'b11101100, // boot mode, wait for health test done pulse
-    BootPostHTChk     = 8'b01000001, // boot mode, wait for post health test packer not empty state
-    StartupHTStart    = 8'b00100110, // startup mode, pulse the sha3 start input
-    StartupPhase1     = 8'b11110110, // startup mode, look for first test pass/fail
-    StartupPass1      = 8'b01110000, // startup mode, look for first test pass/fail, done if pass
-    StartupFail1      = 8'b00101101, // startup mode, look for second fail, alert if fail
-    ContHTStart       = 8'b01101010, // continuous test mode, pulse the sha3 start input
-    ContHTRunning     = 8'b11111001, // continuous test mode, wait for health test done pulse
-    Sha3MsgDone       = 8'b10010011, // sha3 mode, all input messages added, ready to process
-    Sha3Prep          = 8'b00001011, // sha3 mode, request csrng arb to reduce power
-    Sha3Process       = 8'b01111111, // sha3 mode, pulse the sha3 process input
-    Sha3Valid         = 8'b00010101, // sha3 mode, wait for sha3 valid indication
-    Sha3Done          = 8'b10111010, // sha3 mode, capture sha3 result, pulse done input
-    Sha3Quiesce       = 8'b00011110, // sha3 mode, goto alert state or continuous check mode
-    AlertState        = 8'b11000010, // if some alert condition occurs, pulse an alert indication
-    AlertHang         = 8'b10100001, // after pulsing alert signal, hang here until sw handles
-    Error             = 8'b11001111  // illegal state reached and hang
+    Idle              = 9'b001011110, // idle
+    BootHTRunning     = 9'b010101111, // boot mode, wait for health test done pulse
+    BootPostHTChk     = 9'b011001101, // boot mode, wait for post health test packer not empty state
+    BootPhaseDone     = 9'b101011000, // boot mode, stay here until master enable is off
+    StartupHTStart    = 9'b000111011, // startup mode, pulse the sha3 start input
+    StartupPhase1     = 9'b010111000, // startup mode, look for first test pass/fail
+    StartupPass1      = 9'b000010101, // startup mode, look for first test pass/fail, done if pass
+    StartupFail1      = 9'b001100100, // startup mode, look for second fail, alert if fail
+    ContHTStart       = 9'b111010011, // continuous test mode, pulse the sha3 start input
+    ContHTRunning     = 9'b100101000, // continuous test mode, wait for health test done pulse
+    Sha3MsgDone       = 9'b000100001, // sha3 mode, all input messages added, ready to process
+    Sha3Prep          = 9'b011100010, // sha3 mode, request csrng arb to reduce power
+    Sha3Process       = 9'b101001111, // sha3 mode, pulse the sha3 process input
+    Sha3Valid         = 9'b110111110, // sha3 mode, wait for sha3 valid indication
+    Sha3Done          = 9'b011010000, // sha3 mode, capture sha3 result, pulse done input
+    Sha3Quiesce       = 9'b110010100, // sha3 mode, goto alert state or continuous check mode
+    AlertState        = 9'b110100011, // if some alert condition occurs, pulse an alert indication
+    AlertHang         = 9'b100010010, // after pulsing alert signal, hang here until sw handles
+    Error             = 9'b100100110  // illegal state reached and hang
   } state_e;
 
   state_e state_d, state_q;
@@ -103,10 +105,10 @@
 
   always_comb begin
     state_d = state_q;
-    rst_bypass_mode_o = 1'b0;
     rst_alert_cntr_o = 1'b0;
     main_stage_push_o = 1'b0;
     bypass_stage_pop_o = 1'b0;
+    boot_phase_done_o = 1'b0;
     sha3_start_o = 1'b0;
     sha3_process_o = 1'b0;
     sha3_done_o = 1'b0;
@@ -152,18 +154,21 @@
           if (!bypass_stage_rdy_i) begin
           end else begin
             rst_alert_cntr_o = 1'b1;
-            rst_bypass_mode_o = 1'b1;
             bypass_stage_pop_o = 1'b1;
             main_stage_push_o = 1'b1;
-            state_d = StartupHTStart;
+            state_d = BootPhaseDone;
           end
         end
       end
+      BootPhaseDone: begin
+        boot_phase_done_o = 1'b1;
+        if (!enable_i) begin
+          state_d = Idle;
+        end
+      end
       StartupHTStart: begin
         if (!enable_i || sfifo_esfinal_full_i) begin
           state_d = Idle;
-        end else if (bypass_mode_i) begin
-          state_d = BootHTRunning;
         end else begin
           sha3_start_o = 1'b1;
           state_d = StartupPhase1;
diff --git a/hw/ip/entropy_src/rtl/entropy_src_reg_pkg.sv b/hw/ip/entropy_src/rtl/entropy_src_reg_pkg.sv
index cffe8f0..51a4925 100644
--- a/hw/ip/entropy_src/rtl/entropy_src_reg_pkg.sv
+++ b/hw/ip/entropy_src/rtl/entropy_src_reg_pkg.sv
@@ -93,10 +93,7 @@
     } entropy_data_reg_enable;
     struct packed {
       logic [3:0]  q;
-    } boot_bypass_disable;
-    struct packed {
-      logic [3:0]  q;
-    } health_test_clr;
+    } threshold_scope;
     struct packed {
       logic [3:0]  q;
     } rng_bit_enable;
@@ -554,7 +551,10 @@
       logic        d;
     } main_sm_idle;
     struct packed {
-      logic [7:0]  d;
+      logic        d;
+    } main_sm_boot_done;
+    struct packed {
+      logic [8:0]  d;
     } main_sm_state;
   } entropy_src_hw2reg_debug_status_reg_t;
 
@@ -574,11 +574,7 @@
     struct packed {
       logic        d;
       logic        de;
-    } boot_bypass_disable_field_alert;
-    struct packed {
-      logic        d;
-      logic        de;
-    } health_test_clr_field_alert;
+    } threshold_scope_field_alert;
     struct packed {
       logic        d;
       logic        de;
@@ -654,13 +650,13 @@
 
   // Register -> HW type
   typedef struct packed {
-    entropy_src_reg2hw_intr_state_reg_t intr_state; // [544:541]
-    entropy_src_reg2hw_intr_enable_reg_t intr_enable; // [540:537]
-    entropy_src_reg2hw_intr_test_reg_t intr_test; // [536:529]
-    entropy_src_reg2hw_alert_test_reg_t alert_test; // [528:525]
-    entropy_src_reg2hw_sw_regupd_reg_t sw_regupd; // [524:524]
-    entropy_src_reg2hw_module_enable_reg_t module_enable; // [523:520]
-    entropy_src_reg2hw_conf_reg_t conf; // [519:498]
+    entropy_src_reg2hw_intr_state_reg_t intr_state; // [540:537]
+    entropy_src_reg2hw_intr_enable_reg_t intr_enable; // [536:533]
+    entropy_src_reg2hw_intr_test_reg_t intr_test; // [532:525]
+    entropy_src_reg2hw_alert_test_reg_t alert_test; // [524:521]
+    entropy_src_reg2hw_sw_regupd_reg_t sw_regupd; // [520:520]
+    entropy_src_reg2hw_module_enable_reg_t module_enable; // [519:516]
+    entropy_src_reg2hw_conf_reg_t conf; // [515:498]
     entropy_src_reg2hw_entropy_control_reg_t entropy_control; // [497:490]
     entropy_src_reg2hw_entropy_data_reg_t entropy_data; // [489:457]
     entropy_src_reg2hw_health_test_windows_reg_t health_test_windows; // [456:425]
@@ -717,8 +713,8 @@
     entropy_src_hw2reg_alert_fail_counts_reg_t alert_fail_counts; // [130:103]
     entropy_src_hw2reg_extht_fail_counts_reg_t extht_fail_counts; // [102:95]
     entropy_src_hw2reg_fw_ov_rd_data_reg_t fw_ov_rd_data; // [94:63]
-    entropy_src_hw2reg_debug_status_reg_t debug_status; // [62:44]
-    entropy_src_hw2reg_recov_alert_sts_reg_t recov_alert_sts; // [43:18]
+    entropy_src_hw2reg_debug_status_reg_t debug_status; // [62:42]
+    entropy_src_hw2reg_recov_alert_sts_reg_t recov_alert_sts; // [41:18]
     entropy_src_hw2reg_err_code_reg_t err_code; // [17:0]
   } entropy_src_hw2reg_t;
 
@@ -842,7 +838,7 @@
   parameter logic [7:0] ENTROPY_SRC_EXTHT_FAIL_COUNTS_RESVAL = 8'h 0;
   parameter logic [31:0] ENTROPY_SRC_FW_OV_RD_DATA_RESVAL = 32'h 0;
   parameter logic [31:0] ENTROPY_SRC_FW_OV_WR_DATA_RESVAL = 32'h 0;
-  parameter logic [31:0] ENTROPY_SRC_DEBUG_STATUS_RESVAL = 32'h 0;
+  parameter logic [28:0] ENTROPY_SRC_DEBUG_STATUS_RESVAL = 29'h 0;
 
   // Register index
   typedef enum int {
diff --git a/hw/ip/entropy_src/rtl/entropy_src_reg_top.sv b/hw/ip/entropy_src/rtl/entropy_src_reg_top.sv
index 461d170..d0cb6e1 100644
--- a/hw/ip/entropy_src/rtl/entropy_src_reg_top.sv
+++ b/hw/ip/entropy_src/rtl/entropy_src_reg_top.sv
@@ -152,10 +152,8 @@
   logic [3:0] conf_fips_enable_wd;
   logic [3:0] conf_entropy_data_reg_enable_qs;
   logic [3:0] conf_entropy_data_reg_enable_wd;
-  logic [3:0] conf_boot_bypass_disable_qs;
-  logic [3:0] conf_boot_bypass_disable_wd;
-  logic [3:0] conf_health_test_clr_qs;
-  logic [3:0] conf_health_test_clr_wd;
+  logic [3:0] conf_threshold_scope_qs;
+  logic [3:0] conf_threshold_scope_wd;
   logic [3:0] conf_rng_bit_enable_qs;
   logic [3:0] conf_rng_bit_enable_wd;
   logic [1:0] conf_rng_bit_sel_qs;
@@ -309,7 +307,8 @@
   logic debug_status_sha3_absorbed_qs;
   logic debug_status_sha3_err_qs;
   logic debug_status_main_sm_idle_qs;
-  logic [7:0] debug_status_main_sm_state_qs;
+  logic debug_status_main_sm_boot_done_qs;
+  logic [8:0] debug_status_main_sm_state_qs;
   logic recov_alert_sts_we;
   logic recov_alert_sts_fips_enable_field_alert_qs;
   logic recov_alert_sts_fips_enable_field_alert_wd;
@@ -317,10 +316,8 @@
   logic recov_alert_sts_entropy_data_reg_en_field_alert_wd;
   logic recov_alert_sts_module_enable_field_alert_qs;
   logic recov_alert_sts_module_enable_field_alert_wd;
-  logic recov_alert_sts_boot_bypass_disable_field_alert_qs;
-  logic recov_alert_sts_boot_bypass_disable_field_alert_wd;
-  logic recov_alert_sts_health_test_clr_field_alert_qs;
-  logic recov_alert_sts_health_test_clr_field_alert_wd;
+  logic recov_alert_sts_threshold_scope_field_alert_qs;
+  logic recov_alert_sts_threshold_scope_field_alert_wd;
   logic recov_alert_sts_rng_bit_enable_field_alert_qs;
   logic recov_alert_sts_rng_bit_enable_field_alert_wd;
   logic recov_alert_sts_fw_ov_mode_field_alert_qs;
@@ -812,18 +809,18 @@
     .qs     (conf_entropy_data_reg_enable_qs)
   );
 
-  //   F[boot_bypass_disable]: 15:12
+  //   F[threshold_scope]: 15:12
   prim_subreg #(
     .DW      (4),
     .SwAccess(prim_subreg_pkg::SwAccessRW),
     .RESVAL  (4'h5)
-  ) u_conf_boot_bypass_disable (
+  ) u_conf_threshold_scope (
     .clk_i   (clk_i),
     .rst_ni  (rst_ni),
 
     // from register interface
     .we     (conf_we & regwen_qs),
-    .wd     (conf_boot_bypass_disable_wd),
+    .wd     (conf_threshold_scope_wd),
 
     // from internal hardware
     .de     (1'b0),
@@ -831,35 +828,10 @@
 
     // to internal hardware
     .qe     (),
-    .q      (reg2hw.conf.boot_bypass_disable.q),
+    .q      (reg2hw.conf.threshold_scope.q),
 
     // to register interface (read)
-    .qs     (conf_boot_bypass_disable_qs)
-  );
-
-  //   F[health_test_clr]: 19:16
-  prim_subreg #(
-    .DW      (4),
-    .SwAccess(prim_subreg_pkg::SwAccessRW),
-    .RESVAL  (4'h5)
-  ) u_conf_health_test_clr (
-    .clk_i   (clk_i),
-    .rst_ni  (rst_ni),
-
-    // from register interface
-    .we     (conf_we & regwen_qs),
-    .wd     (conf_health_test_clr_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.conf.health_test_clr.q),
-
-    // to register interface (read)
-    .qs     (conf_health_test_clr_qs)
+    .qs     (conf_threshold_scope_qs)
   );
 
   //   F[rng_bit_enable]: 23:20
@@ -2111,9 +2083,23 @@
     .qs     (debug_status_main_sm_idle_qs)
   );
 
-  //   F[main_sm_state]: 31:24
+  //   F[main_sm_boot_done]: 17:17
   prim_subreg_ext #(
-    .DW    (8)
+    .DW    (1)
+  ) u_debug_status_main_sm_boot_done (
+    .re     (debug_status_re),
+    .we     (1'b0),
+    .wd     ('0),
+    .d      (hw2reg.debug_status.main_sm_boot_done.d),
+    .qre    (),
+    .qe     (),
+    .q      (),
+    .qs     (debug_status_main_sm_boot_done_qs)
+  );
+
+  //   F[main_sm_state]: 28:20
+  prim_subreg_ext #(
+    .DW    (9)
   ) u_debug_status_main_sm_state (
     .re     (debug_status_re),
     .we     (1'b0),
@@ -2202,54 +2188,29 @@
     .qs     (recov_alert_sts_module_enable_field_alert_qs)
   );
 
-  //   F[boot_bypass_disable_field_alert]: 3:3
+  //   F[threshold_scope_field_alert]: 3:3
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessW0C),
     .RESVAL  (1'h0)
-  ) u_recov_alert_sts_boot_bypass_disable_field_alert (
+  ) u_recov_alert_sts_threshold_scope_field_alert (
     .clk_i   (clk_i),
     .rst_ni  (rst_ni),
 
     // from register interface
     .we     (recov_alert_sts_we),
-    .wd     (recov_alert_sts_boot_bypass_disable_field_alert_wd),
+    .wd     (recov_alert_sts_threshold_scope_field_alert_wd),
 
     // from internal hardware
-    .de     (hw2reg.recov_alert_sts.boot_bypass_disable_field_alert.de),
-    .d      (hw2reg.recov_alert_sts.boot_bypass_disable_field_alert.d),
+    .de     (hw2reg.recov_alert_sts.threshold_scope_field_alert.de),
+    .d      (hw2reg.recov_alert_sts.threshold_scope_field_alert.d),
 
     // to internal hardware
     .qe     (),
     .q      (),
 
     // to register interface (read)
-    .qs     (recov_alert_sts_boot_bypass_disable_field_alert_qs)
-  );
-
-  //   F[health_test_clr_field_alert]: 4:4
-  prim_subreg #(
-    .DW      (1),
-    .SwAccess(prim_subreg_pkg::SwAccessW0C),
-    .RESVAL  (1'h0)
-  ) u_recov_alert_sts_health_test_clr_field_alert (
-    .clk_i   (clk_i),
-    .rst_ni  (rst_ni),
-
-    // from register interface
-    .we     (recov_alert_sts_we),
-    .wd     (recov_alert_sts_health_test_clr_field_alert_wd),
-
-    // from internal hardware
-    .de     (hw2reg.recov_alert_sts.health_test_clr_field_alert.de),
-    .d      (hw2reg.recov_alert_sts.health_test_clr_field_alert.d),
-
-    // to internal hardware
-    .qe     (),
-    .q      (),
-
-    // to register interface (read)
-    .qs     (recov_alert_sts_health_test_clr_field_alert_qs)
+    .qs     (recov_alert_sts_threshold_scope_field_alert_qs)
   );
 
   //   F[rng_bit_enable_field_alert]: 5:5
@@ -2869,9 +2830,7 @@
 
   assign conf_entropy_data_reg_enable_wd = reg_wdata[7:4];
 
-  assign conf_boot_bypass_disable_wd = reg_wdata[15:12];
-
-  assign conf_health_test_clr_wd = reg_wdata[19:16];
+  assign conf_threshold_scope_wd = reg_wdata[15:12];
 
   assign conf_rng_bit_enable_wd = reg_wdata[23:20];
 
@@ -2988,9 +2947,7 @@
 
   assign recov_alert_sts_module_enable_field_alert_wd = reg_wdata[2];
 
-  assign recov_alert_sts_boot_bypass_disable_field_alert_wd = reg_wdata[3];
-
-  assign recov_alert_sts_health_test_clr_field_alert_wd = reg_wdata[4];
+  assign recov_alert_sts_threshold_scope_field_alert_wd = reg_wdata[3];
 
   assign recov_alert_sts_rng_bit_enable_field_alert_wd = reg_wdata[5];
 
@@ -3066,8 +3023,7 @@
       addr_hit[9]: begin
         reg_rdata_next[3:0] = conf_fips_enable_qs;
         reg_rdata_next[7:4] = conf_entropy_data_reg_enable_qs;
-        reg_rdata_next[15:12] = conf_boot_bypass_disable_qs;
-        reg_rdata_next[19:16] = conf_health_test_clr_qs;
+        reg_rdata_next[15:12] = conf_threshold_scope_qs;
         reg_rdata_next[23:20] = conf_rng_bit_enable_qs;
         reg_rdata_next[25:24] = conf_rng_bit_sel_qs;
       end
@@ -3261,15 +3217,15 @@
         reg_rdata_next[8] = debug_status_sha3_absorbed_qs;
         reg_rdata_next[9] = debug_status_sha3_err_qs;
         reg_rdata_next[16] = debug_status_main_sm_idle_qs;
-        reg_rdata_next[31:24] = debug_status_main_sm_state_qs;
+        reg_rdata_next[17] = debug_status_main_sm_boot_done_qs;
+        reg_rdata_next[28:20] = debug_status_main_sm_state_qs;
       end
 
       addr_hit[49]: begin
         reg_rdata_next[0] = recov_alert_sts_fips_enable_field_alert_qs;
         reg_rdata_next[1] = recov_alert_sts_entropy_data_reg_en_field_alert_qs;
         reg_rdata_next[2] = recov_alert_sts_module_enable_field_alert_qs;
-        reg_rdata_next[3] = recov_alert_sts_boot_bypass_disable_field_alert_qs;
-        reg_rdata_next[4] = recov_alert_sts_health_test_clr_field_alert_qs;
+        reg_rdata_next[3] = recov_alert_sts_threshold_scope_field_alert_qs;
         reg_rdata_next[5] = recov_alert_sts_rng_bit_enable_field_alert_qs;
         reg_rdata_next[8] = recov_alert_sts_fw_ov_mode_field_alert_qs;
         reg_rdata_next[9] = recov_alert_sts_fw_ov_entropy_insert_field_alert_qs;
diff --git a/hw/top_englishbreakfast/util/sw_sources.patch b/hw/top_englishbreakfast/util/sw_sources.patch
index 2a93e3f..33232e0 100644
--- a/hw/top_englishbreakfast/util/sw_sources.patch
+++ b/hw/top_englishbreakfast/util/sw_sources.patch
@@ -63,7 +63,7 @@
 -.L_ast_init_skip:
 -  // Enable entropy complex - this is not the full enable
 -  li   a0, TOP_EARLGREY_ENTROPY_SRC_BASE_ADDR
--  li   t0, 0x55505a
+-  li   t0, 0x555055
 -  sw   t0, ENTROPY_SRC_CONF_REG_OFFSET(a0)
 -
 -  li   a0, TOP_EARLGREY_ENTROPY_SRC_BASE_ADDR
diff --git a/sw/device/lib/dif/dif_entropy_src.c b/sw/device/lib/dif/dif_entropy_src.c
index 0e2489c..3604f90 100644
--- a/sw/device/lib/dif/dif_entropy_src.c
+++ b/sw/device/lib/dif/dif_entropy_src.c
@@ -21,13 +21,7 @@
                                 const dif_entropy_src_config_t *config) {
   // TODO: Make this configurable at the API level.
   uint32_t reg = bitfield_field32_write(
-      0, ENTROPY_SRC_CONF_BOOT_BYPASS_DISABLE_FIELD, kMultiBitBool4False);
-
-  uint32_t health_clr_sel = config->reset_health_test_registers
-                                ? kMultiBitBool4True
-                                : kMultiBitBool4False;
-  reg = bitfield_field32_write(reg, ENTROPY_SRC_CONF_HEALTH_TEST_CLR_FIELD,
-                               health_clr_sel);
+      0, ENTROPY_SRC_CONF_THRESHOLD_SCOPE_FIELD, kMultiBitBool4False);
 
   reg = bitfield_field32_write(
       reg, ENTROPY_SRC_CONF_ENTROPY_DATA_REG_ENABLE_FIELD,
diff --git a/sw/device/lib/dif/dif_entropy_src_unittest.cc b/sw/device/lib/dif/dif_entropy_src_unittest.cc
index 14da700..1fd2947 100644
--- a/sw/device/lib/dif/dif_entropy_src_unittest.cc
+++ b/sw/device/lib/dif/dif_entropy_src_unittest.cc
@@ -109,17 +109,12 @@
   uint32_t enable = test_param.expected_mode != kDifEntropySrcModeDisabled
                         ? kMultiBitBool4True
                         : kMultiBitBool4False;
-
-  uint32_t reset_ht = test_param.reset_health_test_registers
-                          ? kMultiBitBool4True
-                          : kMultiBitBool4False;
   EXPECT_WRITE32(
       ENTROPY_SRC_CONF_REG_OFFSET,
       {
           {ENTROPY_SRC_CONF_RNG_BIT_SEL_OFFSET, test_param.expected_rng_sel},
           {ENTROPY_SRC_CONF_RNG_BIT_ENABLE_OFFSET, rng_bit_enable},
-          {ENTROPY_SRC_CONF_HEALTH_TEST_CLR_OFFSET, reset_ht},
-          {ENTROPY_SRC_CONF_BOOT_BYPASS_DISABLE_OFFSET, kMultiBitBool4False},
+          {ENTROPY_SRC_CONF_THRESHOLD_SCOPE_OFFSET, kMultiBitBool4False},
           {ENTROPY_SRC_CONF_ENTROPY_DATA_REG_ENABLE_OFFSET, route_to_fw},
           {ENTROPY_SRC_CONF_FIPS_ENABLE_OFFSET, enable},
       });
diff --git a/sw/device/lib/testing/test_rom/test_rom_start.S b/sw/device/lib/testing/test_rom/test_rom_start.S
index ab2fb7b..00bc722 100644
--- a/sw/device/lib/testing/test_rom/test_rom_start.S
+++ b/sw/device/lib/testing/test_rom/test_rom_start.S
@@ -164,7 +164,7 @@
 .L_ast_init_skip:
   // Enable entropy complex - this is not the full enable
   li   a0, TOP_EARLGREY_ENTROPY_SRC_BASE_ADDR
-  li   t0, 0x55505a
+  li   t0, 0x555055
   sw   t0, ENTROPY_SRC_CONF_REG_OFFSET(a0)
 
   li   a0, TOP_EARLGREY_ENTROPY_SRC_BASE_ADDR
diff --git a/sw/device/silicon_creator/mask_rom/mask_rom_start.S b/sw/device/silicon_creator/mask_rom/mask_rom_start.S
index fa4c552..02fcc02 100644
--- a/sw/device/silicon_creator/mask_rom/mask_rom_start.S
+++ b/sw/device/silicon_creator/mask_rom/mask_rom_start.S
@@ -202,8 +202,7 @@
   // to prevent the release of FIPS entropy until all the thresholds are set
   li t0, (0x5 << ENTROPY_SRC_CONF_FIPS_ENABLE_OFFSET) | \
          (0x5 << ENTROPY_SRC_CONF_ENTROPY_DATA_REG_ENABLE_OFFSET) | \
-         (0x5 << ENTROPY_SRC_CONF_BOOT_BYPASS_DISABLE_OFFSET) | \
-         (0x5 << ENTROPY_SRC_CONF_HEALTH_TEST_CLR_OFFSET) | \
+         (0x5 << ENTROPY_SRC_CONF_THRESHOLD_SCOPE_OFFSET) | \
          (0x5 << ENTROPY_SRC_CONF_RNG_BIT_ENABLE_OFFSET)
   sw t0, ENTROPY_SRC_CONF_REG_OFFSET(a0)
 
diff --git a/sw/device/tests/entropy_src_smoketest.c b/sw/device/tests/entropy_src_smoketest.c
index 19aec03..0cedc1d 100644
--- a/sw/device/tests/entropy_src_smoketest.c
+++ b/sw/device/tests/entropy_src_smoketest.c
@@ -22,8 +22,8 @@
 // Issue #10092 has been opened to discuss this.
 
 const uint32_t kExpectedEntropyData[] = {
-    0xdaf90306, 0x466d674,  0x9691df54, 0xd2e3c93f, 0xdcbc993e, 0x64bfd173,
-    0xaba04e99, 0xf8ae1105, 0xd01dc17a, 0x608c5480, 0x373c5dcc, 0xc4e6cd55};
+    0x38a9e15d, 0xc615d072, 0x15f21dc9, 0x38f06e56, 0x790a2a87, 0x8bff3d11,
+    0xd56913da, 0x75dc72c3, 0xee2d38a2, 0xabfddaec, 0x3837e88b, 0x29cf1c12};
 
 bool test_main() {
   dif_entropy_src_t entropy_src;