[chip, testplan] Update chip testplan
- This commit addresses the comments and updates from the testplan
review meeting held on 6/03/2021.
- The meeting notes are below:
https://docs.google.com/document/d/1OhPP-HjciwKpIh0wWt1xqPqPf0Y0powmmww6xekwMeE/
- Updated SPI host, I2c, pwm and pattgen sections of the testplan
Signed-off-by: Srikrishna Iyer <sriyer@google.com>
diff --git a/hw/top_earlgrey/data/chip_testplan.hjson b/hw/top_earlgrey/data/chip_testplan.hjson
index 5a0c48e..4658311 100644
--- a/hw/top_earlgrey/data/chip_testplan.hjson
+++ b/hw/top_earlgrey/data/chip_testplan.hjson
@@ -121,43 +121,63 @@
milestone: V2
tests: []
}
+ {
+ name: chip_spi_device_pass_through
+ desc: '''Verifies the pass through mode from an end-to-end perspective.
+
+ - Configure the SPI device and host in pass through mode.
+ - Send a random payload over the SPI device interface (chip IOs) from the testbench.
+ - Verify the integrity of the payload received on the SPI host interface, also at chip
+ IOs.
+ - Run with min and max SPI clk frequencies. Run with single, dual and quad SPI modes.
+ '''
+ milestone: V2
+ tests: []
+ }
+ {
+ name: chip_spi_device_pass_through_filter
+ desc: '''Verifies the command filtering mechanism in passthrough mode.
+
+ - Extend the chip_spi_device_pass_through test.
+ - Program the cmd_filter_* CSRs to filter out certain commands.
+ - Verify that only the payloads that are not filtered show up on the SPI host interface
+ at chip IOs.
+ '''
+ 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.
+ - Program the SPI host to send a known payload out of the chip on the SPI host ports.
+ - At the same time, the testbench transfers a known payload from device to host on the
+ SPI host interface.
+ - The SPI device monitor in the testbench grabs the host payload and verifies its
+ integrity.
+ - The SW verifies the device payload for integrity and services the SPI event interrupt.
+ - Run with min and max SPI clk frequencies and with single, dual and quad SPI modes.
+ Verify all SPI host instances in the chip.
'''
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.
+ - Program the I2C to be in host mode.
+ - The SW test writes a known payload over the chip's I2C host interface, which is
+ received and verified by the testbench for correctness.
+ - SW validates the reception of FMT watermark and trans complete interrupts.
+ - Verify the virtual / true open drain capability.
+
+ Verify all instances of I2C in the chip.
'''
milestone: V2
tests: []
@@ -166,11 +186,13 @@
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.
+ - Program the I2C to be in device mode.
+ - The testbench writes a known payload over the chip's I2C device interface, which is
+ received and verified by the SW test for correctness.
+ - SW validates the reception of RX watermark and trans complete interrupts.
+ - Verify the virtual / true open drain capability.
+
+ Verify all instances of I2C in the chip.
'''
milestone: V2
tests: []
@@ -278,9 +300,11 @@
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.
+ - Program the pattgen to generate a known pattern in each lane.
+ - Program the pinmux to route the chosen output to the chip IOs.
+ - Verify that the correct pattern is seen on the IOs by hooking up the pattgen monitor.
+ - Validate the reception of the done interrupt.
+ - Verify both pattgen channels independently.
'''
milestone: V2
tests: []
@@ -288,11 +312,16 @@
// PWM (pre-verified IP) integration tests:
{
- name: chip_sleep_pwm_ios_val
- desc: '''Verify PWM signaling to chip output pads during deep sleep
+ name: chip_sleep_pwm_pulses
+ 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.
+ - Program each PWM output to pulse in a known pattern.
+ - Program the pinmux to route the chosen PWM output to the chip IOs.
+ - Program the pwrmgr to go to deep sleep state, with AON timer wakeup.
+ - Initiate the sleep state by issuing a WFI.
+ - Verify that in the sleep state, the PWM signals are active and pulsing correctly, by
+ hooking up the PWM monitor.
+ - Repeat the steps for all 6 PWM signals.
'''
milestone: V2
tests: []