// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  name: "chip"

  // Replicate CSR and mem tests over TL and JTAG interfaces.
  intf: ["_tl", "_jtag"]

  // TODO: remove the common testplans if not applicable
  import_testplans: ["hw/dv/tools/dvsim/testplans/csr_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/enable_reg_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/shadow_reg_errors_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/mem_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/intr_test_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson",
                     "hw/ip/tlul/data/tlul_testplan.hjson"]

  entries: [
    //////////////////////////////////////////////////////////////////////////////////
    // IO Peripherals                                                               //
    // UART, GPIO, I2C, SPIDEV, SPIHOST, USB, PINMUX & PADCTRL, RV_DM, PATTGEN, PWM //
    //////////////////////////////////////////////////////////////////////////////////

    // UART (pre-verified IP) integration tests:
    {
      name: chip_uart_tx_rx
      desc: '''Verify transmission of data over the TX and RX port.

            SW test sends a known payload over the TX port. The testbench, at the same time
            sends a known payload over RX. On reception, both payloads are checked for integrity.
            SW validates the reception of TX watermark, RX watermark, and the TX empty interrupts.
            Choosing the max supported baud rate for the UART is sufficient.
            Verify each UART instance at the chip level independently.
            '''
      milestone: V1
      tests: ["chip_uart_tx_rx"]
    }
    {
      name: chip_uart_rx_overflow
      desc: '''Verify the RX overflow interrupt.

            The testbench sends a random payload of size greater than the RX fifo size (32). The SW
            ignores the received the data to allow the RX overflow interrupt to assert.
            Verify each UART instance at the chip level independently.
            '''
      milestone: V1
      tests: ["chip_uart_tx_rx"]
    }

    // GPIO (pre-verified IP) integration tests:
    {
      name: chip_gpio_out
      desc: '''Verify GPIO outputs.

            SW test configures the GPIO to be in the output mode. The test walks a 1 through the
            pins. The testbench checks the value for correctness.
            '''
      milestone: V1
      tests: []
    }
    {
      name: chip_gpio_in
      desc: '''Verify GPIO inputs.

            The SW test configures the GPIO to be in input mode and enables all of them to generate
            an interrupt. The testbench walks a 1 through the pins. SW test ensures that the
            interrupt corresponding to the right pin is seen.
            '''
      milestone: V1
      tests: []
    }

    // SPI_DEVICE (pre-verified IP) integration tests:
    {
      name: chip_spi_device_tx_rx
      desc: '''Verify the transmission of data on the chip's SPI device port.

            The testbench sends a known payload over the chip's SPI device input port. The SW test,
            at the same time sends a known payload out over the chip's SPI device output port. On
            reception, both payloads are checked for integrity. SW validates the reception of RX
            fifo full, RX fifo over level, TX fifo under level, RX overflow and TX underflow
            interrupts. Run with min and max SPI clk frequencies. Also, run with single, dual and
            quad SPI modes. Also, ensure that the spi_device does not recieve transactions when the
            csb is high.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_spi_device_eeprom
      desc: '''Verify the SPI device in EEPROM mode.

            SW puts the SPI device in EEPROM mode and allows a firmware image (a.k.a. a known
            payload) to be downloaded into the in-built EEPROM. SW verifies the integrity of the
            payload upon reception by reading the EEPROM. Details TBD since the feature is NA yet.
            '''
      milestone: V2
      tests: []
    }

    // SPI_HOST (pre-verified IP) integration tests:
    {
      name: chip_spi_host_tx_rx
      desc: '''Verify the transmission of data on the chip's SPI host port.

             Details TBD. Run with min and max SPI clk frequencies. Also, run with single, dual,
             and quad SPI modes.

            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_spi_pass_through
      desc: '''Verifies the pass through mode from an end-to-end perspective.

            SW configures the SPI device and host in pass through mode. The testbench sends a random
            payload over the SPI device interface and verifies its integrity on the SPI host
            interface.  Run with min and max SPI clk frequencies. Also, run with single, dual,
            and quad SPI modes. Details TBD.
      '''
      milestone: V2
      tests: []
    }

    // I2C (pre-verified IP) integration tests:
    {
      name: chip_i2c_host_tx_rx
      desc: '''Verify the transmission of data over the chip's I2C host interface.

            The SW test writes a known data over the chip's I2C host interface, which is verified by
            the testbench (which acts as the I2C device). Likewise, SW test then reads and verifies
            a known data. SW validates the reception of RX watermark, FMT overflow, RX overflow,
            NAK, FMT watermark and trans complete interrupts (the SW test / testbench work together
            to create those scenarios).
            Verify all instances of I2C in the chip independently.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_i2c_device_tx_rx
      desc: '''Verify the transmission of data over the chip's I2C device interface.

            The testbench writes a known data over the chip's I2C device interface, which is
            verified by the SW test for correctness. Testbench then reads and verifies
            a known data. SW validates the reception of TBD interrupts (the SW test / testbench
            create those scenarios).
            Verify all instances of I2C in the chip independently.
            '''
      milestone: V2
      tests: []
    }

    // USB (pre-verified IP) integration tests:
    {
      name: chip_usb_fs_se_tx_rx
      desc: '''Verify the transmission of single-ended data over the USB at full speed. As a part of
            this test, the enablement of USB pullup is also expected to be verified.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_usb_fs_df_tx_rx
      desc: '''Verify the transmission of data over the USB at full speed. As a part of this test,
            the enablement of USB pullup is also expected to be verified. In this test, the USB is
            configured in differential mode.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_usb_vbus
      desc: '''Verify that the USB device can detect the presence of VBUS from the USB host.

            TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_usb_suspend
      desc: '''Verify that the USB device can detect the presence of VBUS from the USB host.

            TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_usb_suspend
      desc: '''Same as the above, but tested with low power entry/exit.

            TBD.
            '''
      milestone: V2
      tests: []
    }

    // PINMUX (pre-verified IP) integration tests:
    {
      name: chip_pin_mux
      desc: '''Verify the MIO muxing at input and output sides.

            SW programs MIO INSEL and OUTSEL CSRs to connect and verify each muxed source. At the
            moment, GPIOs are the only mux inputs.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_pin_mio_dio_val
      desc: '''Verify the MIO output values in deep sleep state.

            SW programs the MIO OUTSEL CSRs to to ensure that in deep sleep it randomly picks
            between tie-0, tie-1 or hi-Z for all muxed outputs coming from non-AON IPs. If an AON
            peripheral output is muxed, then that peripheral's output is selected to ensure in deep
            sleep the peripheral can continue its signaling even in deep sleep. The testbench
            verifies the correctness of the reflected values once the chip goes into deep sleep.
            This is replicated for DIO pins as well.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_pin_wake
      desc: '''Verify pin wake up from deep sleep state.

            Verify one of the 8 possible MIO or DIO pad inputs (randomly configured) can cause the
            chip to wake up from sleep state. Verifying wake on posedge is sufficient for the chip
            level integration testing. Upon wake up, SW reads the wake cause CSR to verify
            correctness.
            '''
      milestone: V2
      tests: []
    }

    // PADCTRL tests:
    {
      name: chip_padctrl_attributes
      desc: '''Verify pad attribute settings for all MIO and DIO pads.
            '''
      milestone: V2
      tests: []
    }

    // RV_DM (JTAG) tests:
    {
      name: chip_rv_dm_cpu_debug_mem
      desc: '''Verify access to the debug mem from the CPU.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rv_dm_jtag_debug_mem
      desc: '''Verify access to the debug mem from the external JTAG interface.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rv_dm_cpu_debug_req
      desc: '''Verify debug request to Ibex while it is actively executing.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rv_dm_ndm_reset_req
      desc: '''Verify non-debug reset req initiated from RV_DM when the chip is awake.

            Read CSRs / mem within all IPs in the chip to ensure that they are reset to the original
            values. Read CSRs / mem in the debug domain to ensure that the values survive the reset.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_rv_dm_ndm_reset_req
      desc: '''Verify non-debug reset req initiated from RV_DM when the chip is in deep sleep.

            Read CSRs / mem within all IPs in the chip to ensure that they are reset to the original
            values. Read CSRs / mem in the debug domain to ensure that the values survive the reset.
            There are also other modules such as clk, pwr, rstmgr which survive this reset. Verify
            those as well.

            TODO: `rv_dm` currently is not on the AON domain, so this feature does not exist ATM.
            Need discussion with SW/Nuvoton.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rv_dm_jtag_tap_sel
      desc: '''Verify ability to select all available TAPs.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rv_dm_lc_disabled
      desc: '''Verify that the debug capabilities are disabled in certain life cycle stages.

            Verify that the debug mem is inaccessible from the CPU as well as external JTAG.
            Details TBD. X-ref'ed with the LC tests.
            '''
      milestone: V2
      tests: []
    }

    // PATTGEN (pre-verified IP) integration tests:
    {
      name: chip_pattgen_ios
      desc: '''Verify pattern generation to chip output pads.

            SW programs pattgen to generate distinct patterns on both groups. SW programs pinmux to
            select pattgen outputs to be routed. SW validates the reception of patt_done interrupts.
            Testbench verifies the correctness of the pattern seen on the IO pins.
            '''
      milestone: V2
      tests: []
    }

    // PWM (pre-verified IP) integration tests:
    {
      name: chip_sleep_pwm_ios_val
      desc: '''Verify PWM signaling to chip output pads during deep sleep

            PWM is in the AON domain. During deep sleep, we should be able to signal the 3 external
            LEDs that are connected to the PWM signals. Details TBD.
            '''
      milestone: V2
      tests: []
    }

    ///////////////////////////////////////////////////////////////
    // System Peripherals                                        //
    // TIMER, WDOG, PLIC, CLK/RST/PWR MGR, ALERT_HANDLER, LC_MGR //
    ///////////////////////////////////////////////////////////////

    // RV_TIMER (pre-verified IP) integration tests:
    {
      name: chip_timer
      desc: '''Verify the timeout interrupt from all timer instances.

            The SW test configures the RV_TIMER to generate interrupt after a set timeout. The SW
            test validates the received interrupt. The testbench verifies that the interrupt was
            fired only after the timeout elapsed.
            Verify all instances of the RV_Timer.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_aon_timer_wake
      desc: '''Verify the timer in the AON domain can wake up the chip from sleep.
            '''
      milestone: V2
      tests: []
    }

    // WATCHDOG (pre-verified IP) integration tests:
    {
      name: chip_wdog_bark
      desc: '''Verify the watchdog bark reception in awake state.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_wdog_bite
      desc: '''Verify the watchdog bite causing reset in awake state.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_wdog_bark_wake
      desc: '''Verify the watchdog bark wake up from sleep state.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_wdog_bite_wake
      desc: '''Verify the watchdog bite reset from sleep state.
            '''
      milestone: V2
      tests: []
    }

    // PLIC (pre-verified IP) integration tests:
    {
      name: chip_plic_all_irqs
      desc: '''Verify all interrupts from all peripherals aggregated at the PLIC.

            The automated SW test enables all interrupts at the PLIC to interrupt the core. It uses
            the `intr_test` CSR in each peripheral to mock assert an interrupt, looping through all
            available interrupts in that peripheral. The ISR verifies that the right interrupt
            occurred. This is used as a catch-all interrupt test for all peripheral integration
            testing within which functionally asserting an interrupt is hard to achieve or not of
            high value.
            '''
      milestone: V2
      tests: [""]
    }
    {
      name: chip_plic_sw_irq
      desc: '''Verify the SW interrupt to the CPU.

            Enable all peripheral interrupts at PLIC. Enable all types of interrupt at the CPU core.
            Write to the MSIP CSR to generate a SW interrupt to the CPU. Verify that the only
            interrupt that is seen is the SW interrupt.
            '''
      milestone: V2
      tests: [""]
    }
    {
      name: chip_plic_nmi_irq
      desc: '''Verify the NMI interrupt to the CPU and correctness of the cause.

            TBD if multiple NMI irqs are OR-ed into the CPU (example - NMI from alert handler and
            the watchdog bark), then map each test to this testpoint.
            '''
      milestone: V2
      tests: [""]
    }

    // CLKMGR tests:
    {
      name: chip_sw_clk_off_trans
      desc: '''Verify the ability to turn off the transactional clock via SW.

             Ensure that activity in any of the IPs running on this clock prevents the clock from
             actually being turned off. Verify that turning off this clock does not affect the other
             derived clocks.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sw_clk_off_peri
      desc: '''Verify the ability to turn off the peripheral clock via SW.

            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_clk_div
      desc: '''Verify clk division logic is working correctly.

            '''
      milestone: V2
      tests: []
    }

    // PWRMGR tests:
    {
      name: chip_pwrmgr_cold_boot
      desc: '''Verify the cold boot sequence through the wiggling of `por_rst_n`.

            This mainly ensures that both FSMs are properly reset on the POR signal. Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_sleep_all_wake_ups
      desc: '''Verify that the chip can go into normal sleep state and be woken up by ALL wake up
            sources.

            This verifies ALL wake up sources. This also verifies that the pwrmgr sequencing is
            working correctly as expected. X-ref'ed with all individual IP tests.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_sleep_all_reset_reqs
      desc: '''Verify that the chip can go into normal sleep state and be reset by ALL reset req
            sources.

            This verifies ALL reset sources. This also verifies that the pwrmgr sequencing is
            working correctly as expected. X-ref'ed with all individual IP tests.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_deep_sleep_all_wake_ups
      desc: '''Verify that the chip can go into deep sleep state and be woken up by ALL wake up
            sources.

            This verifies ALL wake up sources. This also verifies that the pwrmgr sequencing is
            working correctly as expected. X-ref'ed with all individual IP tests.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_deep_sleep_all_reset_reqs
      desc: '''Verify that the chip can go into deep sleep state and be reset up by ALL reset req
            sources.

            This verifies ALL reset sources. This also verifies that the pwrmgr sequencing is
            working correctly as expected. X-ref'ed with all individual IP tests.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_all_reset_reqs
      desc: '''Verify that the chip can be reset by ALL available reset sources.

            This verifies ALL reset sources. This also verifies that the pwrmgr sequencing is
            working correctly as expected. X-ref'ed with all individual IP tests.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_bad_main_pok
      desc: '''Verify the effect of main_pok de-assertion in the middle of low power entry / exit
            FSM transition.

            The main_pok from AST is randomly forced to flip while in the middle of a FSM
            transition. This is done on all normal / deep sleep / reset request tests.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_b2b_sleep_reset_req
      desc: '''Verify that the pwrmge sequences sleep_req and reset req coming in almost at the same
            time, one after the other.

            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_debug_sleep
      desc: '''Verify that when the chip being in "debuggable" state prevent the low power entry.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_sleep_wake_req_disabled
      desc: '''Verify that the chip cannot be woken up from sleep from a wake up source that is
            disabled.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_reset_req_disabled
      desc: '''Verify that the chip cannot be reset from a reset source that is disabled.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_sleep_reset_req_disabled
      desc: '''Verify that the chip cannot be woken up from sleep from a reset source that is
            disabled.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_sleep_disabled
      desc: '''Verify that the chip does not go to sleep on WFI when low power hint is 0.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_sleep_wake_up_fall_through
      desc: '''Verify that the chip sleep falls through when an interrupt arrives just in time
            before the pwrmgr iniitates the low power entry.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_pwrmgr_sleep_abort
      desc: '''Verify that the chip sleep transition aborts due to an active flash / lifecycle / OTP
            transaction.
            '''
      milestone: V2
      tests: []
    }


    // RSTMGR tests:

    // ALERT_HANDLER (pre-verified IP) integration tests:
    {
      name: chip_alert_handler_alerts
      desc: '''Verify all alerts coming into the alert_handler.

            X-ref'ed with all IP tests.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_alert_handler_irqs
      desc: '''Verify all classes of alert handler interrupts to the CPU.


            Program each alert to cause an interrupt in each class. SW validates the reception of
            the interrupt. X-ref'ed with all IP tests.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_alert_handler_esc_irqs
      desc: '''Verify all alert handler escalation irqs.


            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_alert_handler_entropy
      desc: '''Verify the alert handler entropy input to ensure pseudo-random ping timer.


            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_alert_handler_crashdump
      desc: '''Verify the alert handler crashdump signal.


            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_alert_handler_ping_fail
      desc: '''Verify the alert ping failure results in an escalation.


            Details TBD.
            '''
      milestone: V2
      tests: []
    }

    // LC_MANAGER (pre-verified IP) integration tests:


    ///////////////////////////////////////////////////////
    // Security Peripherals                              //
    // AES, HMAC, KMAC, CSRNG, ENTROPY_SRC, KEYMGR, OTBN //
    ///////////////////////////////////////////////////////

    // AES (pre-verified IP) integration tests:
    {
      name: chip_aes_enc
      desc: '''Verify the AES operation.

            Write a 32-byte key and a 16-byte plain text to the AES registers and trigger the AES
            computation to start. Wait for the AES operation to complete by polling the status
            register (or interrupt if available). Check the digest registers for correctness against
            the expected digest value.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_aes_shadow_reg_alert
      desc: '''Verify shadow reg alert from AES.

            Inject a storage error via backdoor to generate this alert signal while the SW is
            actively executing some piece of code. Verify alert propagation to an NMI.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_aes_idle
      desc: '''Verify AES idle signaling to clkmgr.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }

    // HMAC (pre-verified IP) integration tests:
    {
      name: chip_hmac_enc
      desc: '''Verify HMAC / SHA256 operation.

            SW test verifies SHA256 operation with a known key, plain text and digest (pick one of
            the NIST vectors). SW validates the reception of hmac done and fifo empty interrupts.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_hmac_alert
      desc: '''Verify alert from HMAC.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_hmac_idle
      desc: '''Verify HMAC idle signaling to clkmgr.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }

    // KMAC pre-verified IP) integration tests:
    {
      name: chip_kmac_enc
      desc: '''Verify the SHA3 operation.

            SW test verifies SHA3 operation with a known key, plain text and digest (pick one of
            the NIST vectors). SW validates the reception of kmac done and fifo empty interrupts.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_kmac_sram_uncorrectable_alert
      desc: '''Verify the SRAM uncorrectable alert from KMAC.

            Inject 2 bit errors within the SRAM inside KMAC via backdoor and ensure that this alert
            propagates to an NMI.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_kmac_sram_data_parity_alert
      desc: '''Verify the data parity alert from KMAC.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_kmac_keymgr_key_data
      desc: '''Verify the keymgr interface to KMAC.

            X-ref'ed with keymgr test.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_kmac_idle
      desc: '''Verify KMAC idle signaling to clkmgr.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }

    // CSRNG tests:
    {
      name: chip_csrng_cmd
      desc: '''Verify the cmd interface to CSRNG.

            Details TBD. SW test validates the reception of cmd req done interrupt.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_csrng_entropy_src
      desc: '''Verify the interface to entropy_src.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_csrng_fuse
      desc: '''Verify the fuse input to CSRNG.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }

    // ENTROPY_SRC (pre-verified IP) integration tests:
    {
      name: chip_entropy_src_ast_rng_req
      desc: '''Verify the RNG req to ast.

            Details TBD. SW test validates the reception of the entropy valid interrupt.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_entropy_src_fuse
      desc: '''Verify the fuse input entropy_src.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }

    // KEYMGR (pre-verified IP) integration tests:

    // OTBN (pre-verified IP) integration tests:
    {
      name: chip_otbn_op
      desc: '''Verify an OTBN operation.

            SW test directs the BIGNUM engine to perform an operation. The BIGNUM SW image is
            backdoor loaded into OTBN IMEM. SW validates the reception of the otbn done interrupt.
            SW also verifies the correctness of the OTBN operation using a reference model. Details
            TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_otbn_imem_uncorrectable_alert
      desc: '''Verify the imem uncorrectable alert from OTBN.

            Inject 2 bit errors within the IMEM SRAM inside OTBN via backdoor and ensure that this
            alert propagates to an NMI.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_otbn_dmem_uncorrectable_alert
      desc: '''Verify the dmem uncorrectable alert from OTBN.

            Inject 2 bit errors within the DMEM SRAM inside OTBN via backdoor and ensure that this
            alert propagates to an NMI.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_otbn_reg_uncorrectable_alert
      desc: '''Verify the reg uncorrectable alert from OTBN.

            Details TBD. Ensure that this alert propagates to an NMI.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_otbn_mem_encr
      desc: '''Verify the encryption of the mem within OTBN using the key provided by the OTP.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_otbn_idle
      desc: '''Verify OTBN idle signaling to clkmgr.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }

    ////////////////////////////////////////////////
    // Memory & Controllers                       //
    // ROM, RAM, FLASH, FLASH_CTRL, OTP, OTP_CTRL //
    ////////////////////////////////////////////////

    // ROM (pre-verified IP) integration tests:
    // TODO: Not sure if this will really be a pre-verified IP. If not, then more tests are needed
    // at the chip level.
    {
      name: chip_rom_access
      desc: '''Verify access to the rom.

            Verify that the CPU can fetch instructions from the ROM. Nothing extra needs to be done
            here - all SW tests do this anyway.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rom_security_features
      desc: '''Verify ROM security / ECC features if available.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }

    // SRAM (pre-verified IP) integration tests:
    {
      name: chip_sram_access
      desc: '''Verify access to the SRAM.

            Verify that the CPU can fetch data from the SRAM. Nothing extra needs to be done
            here - all SW tests do this anyway.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sram_scramble
      desc: '''Verify scrambling of the SRAM data.

            SW enables scrambling within the SRAM. Ensure that the data written to the SRAM is
            scrambled and likewise, when read from the SRAM is de-scrambled correctly via backdoor.
            The key and nonce for the scrambling is supplied by the OTP.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sram_ret_access
      desc: '''Verify access to the retention SRAM.

            Verify that the CPU can fetch data from the retention SRAM.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sram_ret_scramble
      desc: '''Verify scrambling of the retention SRAM data.

            SW enables scrambling within the retention SRAM. Ensure that the data written to the
            SRAM is scrambled and likewise, when read from the SRAM is de-scrambled correctly via
            backdoor. The key and nonce for the scrambling is supplied by the OTP.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_sram_ret_contents
      desc: '''Verify that the data within the retention SRAM survives low power entry-exit.

            Ensure that the data within the retention SRAM survives ALL low power entry-exit
            variations.

            TODO: how to deal with the scramble keys on low power exit?
            '''
      milestone: V2
      tests: []
    }

    // OTP (pre-verified IP) integration tests:
    // TODO: more testing needed on OTP.
    {
      name: chip_otp_init
      desc: '''Verify the OPT initialization on chip power up.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_otp_keys
      desc: '''Verify the proliferation of keys to security peripherals.

            Ensure that the correct set of keys are provided to sram, sram_ret, flash, keymgr and
            the OTBN. X-ref'ed with those individual IP tests.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_otp_lc_program
      desc: '''Verify the OTP program req from LC.

            Ensure that the correct set of keys are provided to sram, sram_ret, flash, keymgr and
            the OTBN. X-ref'ed with those individual IP tests.
            '''
      milestone: V2
      tests: []
    }

    // FLASH (pre-verified IP) integration tests:
    {
      name: chip_flash_host_access
      desc: '''Verify access to the flash mem.

            Verify that the CPU can read the flash mem contents.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_flash_ctrl_ops
      desc: '''Verify flash ctrl ops.

            Verify that the CPU can read / program and erase the flash mem. Pick an operation on
            both data and info partitions. Erase both, bank and page. SW validates the reception of
            prog empty, prog level, rd full, rd level and op done interrupts.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_flash_ctrl_scramble
      desc: '''Verify flash scrambling via the controller.

            Verify that the CPU can program and read back data via the flash ctrl with scrambling
            enabled.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_flash_scramble
      desc: '''Verify flash scrambling via the host interface.

            Verify that the CPU read data from the flash with scrambling enabled.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_flash_ast_pwr_dwn
      desc: '''Verify that power down signaling from AST to flash.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_flash_test_mode
      desc: '''Verify that flash test mode and flash volt signaling from chip IOs.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }

    //////////////////////
    // CrOS Peripherals //
    // RBOX, DCD        //
    //////////////////////

    // RBOX (pre-verified IP) integration tests:
    {
      name: chip_rbox_key_pass_through
      desc: '''Verify pass through of key in to key out.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rbox_pwrb_pass_through
      desc: '''Verify pass through of power button signal in to out.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rbox_ac_present_in
      desc: '''Verify the RBOX can detect AC present input.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rbox_batt_en_out
      desc: '''Verify the RBOX can signal battery enabled output.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rbox_ec_entering_rw_in
      desc: '''Verify the RBOX can detect EC entering RW mode input.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rbox_ec_in_rw_out
      desc: '''Verify the RBOX can signal EC in RW mode output.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_rbox_ec_reset_l_out
      desc: '''Verify the RBOX can signal EC reset output.

             Verify EC reset pulse duration. Verify open drain when not active. Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_rbox_ios_val
      desc: '''Verify the RBOX can signal EC reset output.

             Verify EC reset pulse duration. Verify open drain when not active. Details TBD.
             '''
      milestone: V2
      tests: []
    }

    // DCD (pre-verified IP) integration tests:
    {
      name: chip_sleep_dcd_ast_adc_pd
      desc: '''Verify that in deep sleep, DCD can signal the ADC within the AST to power down.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sleep_dcd_debug_cable_wake
      desc: '''Verify that the debug cable detection logic can wake up the chip from sleep.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_dcd_ast_adc
      desc: '''Verify that the DCD can use the ADC within AST to know the voltage level.

             Details TBD. SW test validates the reception of debug cable update interrupt.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_dcd_por_l
      desc: '''Verify the POR reset input to DCD.

             This sort of also tracks the testing of DCD surviving low power entry/exit.
             Details TBD.
             '''
      milestone: V2
      tests: []
    }

    ////////////////////////
    // Analog Peripherals //
    // AST, SENSOR_CTRL   //
    ////////////////////////

    // AST (pre-verified IP) integration tests:
    {
      name: chip_ast_clk_outputs
      desc: '''Verify that the AST generates the 4 clocks when requested by the clkmgr.

            Verify the clock frequencies are reasonably accurate. Verify that when the clkmgr
            deasserts the enable (on account of low power entry), the clocks are turned off. Verify
            that when turned on (low power exit), the clocks are glitch free.

            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_ast_clk_rst_inputs
      desc: '''Verify the clk and rst inputs to AST (from `clkmgr`).

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_ast_sys_clk_jitter
      desc: '''Verify that the AST sys clk jitter control.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_ast_usb_clk_calib
      desc: '''Verify the USB clk calibration signaling.

            Details TBD.
            '''
      milestone: V2
      tests: []
    }
    {
      name: chip_ast_alerts
      desc: '''Verify the alerts from AST aggregating into the sensor_ctrl.

             X-ref'ed with `chip_sensor_ctrl_ast_alerts`.
             '''
      milestone: V2
      tests: []
    }

    // SENSOR_CTRL tests:
    {
      name: chip_sensor_ctrl_ast_alerts
      desc: '''Verify the alerts from AST aggregating into the sensor_ctrl.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_sensor_ctrl_ast_status
      desc: '''Verify the io power ok status from AST.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }

    ////////////////////////////
    // System level scenarios //
    ////////////////////////////

    {
      name: chip_sw_boot
      desc: '''Verify the full flash image download with bootstrap signal set.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_secure_boot
      desc: '''Verify the secure boot flow.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_prod_os
      desc: '''Run the OpenTitan TockOS that will be deployed in production.

             Run the TockOS image in DV. The advantage of doing so is running Tock with the full
             suite of design assertions and other checks in place in the DV environment.
             '''
      milestone: V2
      tests: ["chip_opentitan_tock"]
    }
    {
      name: chip_lc_walkthrough
      desc: '''Walk through the life cycle stages reseting the chip each time.

             Verify that the features that should indeed be disabled are indeed disabled.
             '''
      milestone: V2
      tests: []
    }
    {
      name: chip_device_ownership
      desc: '''Walk through device ownership stages and flows.

             Details TBD.
             '''
      milestone: V2
      tests: []
    }
  ]
}
