[dv/otp_ctrl] Update testplan for V2 review

This PR updates the otp_ctrl's testplan for V2 review.

Signed-off-by: Cindy Chen <chencindy@opentitan.org>
diff --git a/hw/ip/otp_ctrl/data/otp_ctrl_testplan.hjson b/hw/ip/otp_ctrl/data/otp_ctrl_testplan.hjson
index deb3f86..7cc0f10 100644
--- a/hw/ip/otp_ctrl/data/otp_ctrl_testplan.hjson
+++ b/hw/ip/otp_ctrl/data/otp_ctrl_testplan.hjson
@@ -16,16 +16,16 @@
             Wake_up test walks through otp_ctrl's power-on initialization, read, program, and
             digest functionalities.
 
-            - Drive pwrmgr's request pin to trigger OTP initialization after reset, check status
+            - drive pwrmgr's request pin to trigger OTP initialization after reset, check status
               after OTP initialization
-            - Write all-ones to a random address within OTP partition 0, wait until this operation
+            - write all-ones to a random address within OTP partition 0, wait until this operation
               completes
-            - Read out the random selected write address, check if the readout value is all-ones
-            - Trigger a digest calculation for a Software partition, check if the OtpError
+            - read out the random selected write address, check if the readout value is all-ones
+            - trigger a digest calculation for a Software partition, check if the OtpError
               interrupt is set
-            - Trigger a digest calculation for a non-software partition, expect operation completes
+            - trigger a digest calculation for a non-software partition, expect operation completes
               without the OtpError interrupt
-            - Read out secrets through the hardware interfaces
+            - read out secrets through the hardware interfaces
             '''
       milestone: V1
       tests: ["otp_ctrl_wake_up"]
@@ -33,18 +33,19 @@
     {
       name: smoke
       desc: '''
-            Otp_ctrl smoke test to provision and lock partitions.
+            OTP_CTRL smoke test provisions and locks partitions.
 
-            - Drive pwrmgr's request pin to trigger OTP initialization after reset, check status
+            - drive pwrmgr's request pin to trigger OTP initialization after reset, check status
               after OTP initialization
-            - Read out keys from key_manager, flash, SRAM, OTBN
-            - Write random values to random addresses within each OTP partition
-            - Read out the random selected write addresses, check if the readout values are expected
-            - During read and write operations, check if direct_access_regwen is correctly set by HW
-            - Perform a system-level reset and check corresponding CSRs are set correctly
-            - Lock all partitions except life_cycle by triggering digest calculations
-            - Read back and verify the digest
-            - Perform a system-level reset to verify the corresponding CSRs exposing the digests
+            - randomly read out keys pertaining to `key_manager`, `flash`, `sram`, `otbn`
+            - randomly issue LC program request
+            - write random values to random addresses within each OTP partition
+            - read out the random selected write addresses, check if the readout values are expected
+            - during read and write operations, check if direct_access_regwen is correctly set by HW
+            - perform a system-level reset and check corresponding CSRs are set correctly
+            - lock all partitions except life_cycle by triggering digest calculations
+            - read back and verify the digest
+            - perform a system-level reset to verify the corresponding CSRs exposing the digests
               have been populated
             '''
       milestone: V1
@@ -60,52 +61,63 @@
       tests: ["otp_ctrl_partition_walk"]
     }
     {
-      name: partition_check
-      desc: '''
-            Randomly program partition check related registers including: `check_timeout`,
-            `integrity_check_period`, `consistency_check_period`, and `check_trigger`.
-            Then backdoor write OTP_macro to create parity, digest, and OTP memory errors
-
-            - Check if the corresponding alerts are triggered
-            - Check if the error_code register is set correctly
-            Note that due to limited simulation time, for background checks, this test only write
-            random value that is less than 'd20 to the check period.
-            '''
-      milestone: V2
-      tests: ["otp_ctrl_check_fail", "otp_ctrl_background_chks"]
-    }
-    {
       name: init_fail
       desc: '''
-            This test is based on OTP_CTRL smoke test and creats OTP_CTRL's initialization failure:
-            - Write and read OTP memory via DAI interface
-            - Randomly issue DAI digest command to lock HW partitions
-            - Keep writing to OTP memory via DAI interface
-            - If digests are not locked, backdoor inject ECC correctable or uncorrectable errors
-            - Issue reset and power initialization
+            Based on OTP_CTRL smoke test, this test creates OTP_CTRL's initialization failure:
+            - write and read OTP memory via DAI interface
+            - randomly issue DAI digest command to lock HW partitions
+            - keep writing to OTP memory via DAI interface without asserting reset
+            - if digests are not locked, backdoor inject ECC correctable or uncorrectable errors
+            - issue reset and power initialization
+            - if the injected errors are all correctable errors, disable the `lc_bypass_chk_en`
+              after LC program request to create an LC partition check failure
 
-            If fatal alert is triggered, this test will check:
-            - Otp_initialization failure triggers fatal alert
-            - Status register reflects the correct error
-            - Otp_ctrl's power init output stays 0
+            If fatal error is triggered, this test will check:
+            - OTP initialization failure triggers fatal alert
+            - `status`, `intr_state`, `err_code` CSRs reflect correct fatal error
 
-            If OTP init finished without fatal alert, this test will check:
-            - OTP init finishes with power init output goes to 1
-            - Status and interrupt registers reflect the correct ecc correctable error
+            If OTP initialization finished without any fatal error, this test will check:
+            - OTP initialization finishes with power init output goes to 1
+            - `status`, `intr_state`, `err_code` CSRs reflect ECC correctable error
             '''
       milestone: V2
       tests: ["otp_ctrl_init_fail"]
     }
     {
+      name: partition_check
+      desc: '''
+            Randomly program the partition check related CSRs including:
+            - `check_timeout`
+            - `integrity_check_period`
+            - `consistency_check_period`
+            - `check_trigger`
+
+            Create a failure scenario by randomly picking one of these three methods:
+            - inject ECC errors into the OTP macro via backdoor
+            - set the `check_timeout` CSR with a very small value
+            - write to a random OTP partition after digest is issued but before reset is asserted
+
+            **Checks**:
+            - the corresponding alerts are triggered
+            - the error_code register is set correctly
+            Note that due to limited simulation time, for background checks, this test only write
+            random value that is less than 20 to the check period.
+            '''
+      milestone: V2
+      tests: ["otp_ctrl_check_fail", "otp_ctrl_background_chks"]
+    }
+    {
       name: regwen_during_otp_init
       desc: '''
-            DIRECT_ACCESS_REGWEN is RO reg and it gates bunch of write access of other registers,
-            which isn't tested in common CSR tests. HW will set this register to 0 when OTP_CTRL's
-            DAI interface is busy.
+            The `direct_access_regwen` is a RO register which controls the write-enable of other
+            reigsters. It is not verified by the common CSR tests. HW sets it to 0 when the DAI
+            interface is busy.
 
             Stimulus and checks:
-            - Random read DIRECT_ACCESS_REGWEN and ensure the value is set to 0 during OTP init.
-            - Test accessing registers gated by DIRECT_ACCESS_REGWEN is ignored during OTP init.
+            - randomly read `direct_access_regwen` and verify that it returns 0 during OTP
+              initialization
+            - verify that the writes to the registers controlled by it do not go through during OTP
+              initialization
             '''
       milestone: V2
       tests: ["otp_ctrl_regwen"]
@@ -123,9 +135,9 @@
     {
       name: interface_key_check
       desc: '''
-            OTP_CTRL will generate keys to flash, sram, and OTBN upon their requests.
+            OTP_CTRL will generate keys to `flash`, `sram`, and `otbn` upon their requests.
             Based on the DAI access sequence, this test will run key requests sequence in
-            parallel, and check if generated keys are correct.
+            parallel, and check if correct keys are generated.
             '''
       milestone: V2
       tests: ["otp_ctrl_parallel_key_req"]
@@ -133,63 +145,59 @@
     {
       name: lc_interactions
       desc: '''
-            This test check otp and life_cycle interactions. Based on the DAI access sequence,
-            this test will run the following sequences in parallel:
+            Verify the procotols between OTP_CTRL and LC_CTRL. Based on the DAI access sequence,
+            run the following sequences in parallel:
 
-            - State transitions via the programming interface
-            - Token hashing
-            - Trigger escalation_en
+            - request a LC state transition via the programming interface
+            - enable the `lc_escalation_en` signal
+
+            **Checks**:
+            - if the LC program request has `AccessError`, check the LC program response sets
+              the `error` bit to 1
+            - if `lc_escalation_en` is enabled, verify that alert is triggered and OTP_CTRL entered
+              terminal state
             '''
       milestone: V2
       tests: ["otp_ctrl_parallel_lc_req", "otp_ctrl_parallel_lc_esc"]
     }
     { name: otp_dai_errors
       desc: '''
-            This test will randomly run the following OTP errors:
-            - DAI interface write non-blank OTP address
-            - DAI interface access LC partition
-            - DAI interface write HW digests
+            Based on the otp_dai_lock test, this test will randomly run the following OTP errors:
+            - DAI interface writes non-blank OTP address
+            - DAI interface accesses LC partition
+            - DAI interface writes HW digests
+            - DAI interface writes non-empty memory
 
-            The test will check:
-            - The value of err_code and status registers
+            **Checks**:
+            - `err_code` and `status` CSRs
+            - `otp_error` interrupt
             '''
       milestone: V2
       tests: ["otp_ctrl_dai_errs"]
     }
     { name: otp_macro_errors
       desc: '''
-            This test will randomly run the following OTP errors:
+            Randomly run the following OTP errors:
             - MacroError
             - MacroEccCorrError
             - MacroEccUncorrError
 
-            The test will check:
-            - The value of err_code and status registers
-            - If error is unrecoverable, ensure that OTP entered terminal state
+            **Checks**:
+            - `err_code` and `status` CSRs
+            - `otp_error` interrupt
+            - if the error is unrecoverable, verify that alert is triggered and OTP_CTRL entered
+              terminal state
             '''
       milestone: V2
       tests: ["otp_ctrl_macro_errs", "otp_ctrl_macro_invalid_cmd"]
     }
     {
-      name: otp_ctrl_errors
-      desc: '''
-            This test will randomly run the following OTP errors:
-            - CheckFailError
-            - FsmStateError
-
-            The test will check:
-            - The value of err_code and status registers
-            - If error is unrecoverable, ensure that OTP entered terminal state
-            '''
-      milestone: V2
-      tests: ["otp_ctrl_parallel_lc_esc", "otp_ctrl_check_fail"]
-    }
-    {
       name: test_access
       desc: '''
             This test checks if the test access to OTP macro is connected correctly.
 
-            - Read out from the test access window and ensure no error occurs
+            **Stimulus and Checks**:
+            - read out from the test access window and ensure no error occurs
             '''
       milestone: V2
       tests: ["otp_ctrl_test_access"]
@@ -197,8 +205,8 @@
     {
       name: stress_all
       desc: '''
-            - Combine above sequences in one test to run sequentially, except csr sequence
-            - Randomly add reset between each sequence
+            - combine above sequences in one test to run sequentially, except csr sequence
+            - randomly add reset between each sequence
             '''
       milestone: V2
       tests: ["otp_ctrl_stress_all"]