blob: e3251f02a5751dd85c6e5e0b66b2c6ecc55cce79 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
name: "spi_device"
import_testplans: ["hw/dv/tools/testplans/csr_testplan.hjson",
"hw/dv/tools/testplans/mem_testplan.hjson",
"hw/dv/tools/testplans/intr_test_testplan.hjson",
"hw/dv/tools/testplans/tl_device_access_types_testplan.hjson"]
entries: [
{
name: sanity
desc: '''
Use default SRAM fifo setting. Seq:
- Write a word data to TX memory and update wptr
- Send a word SPI transfer
- Read a word data from RX memory and update rptr
- Compare the data and check no pending data in SRAM FIFO
- Repeat above steps'''
milestone: V1
tests: ["spi_device_sanity"]
}
{
name: base_random_seq
desc: '''
Create 3 parallel threads
- Write random data to TX memory unless fifo is full
- Send SPI transfer unless TX is empty or RX is full
- Read RX memory unless RX is empty'''
milestone: V2
tests: ["spi_device_txrx"]
}
{
name: fifo_full
desc: '''
Increase the chance to have fifo full by following
- Reduce delay to write TX memory
- Increase delay to read RX memory'''
milestone: V2
tests: ["spi_device_fifo_full"]
}
{
name: fifo_underflow_overflow
desc: '''
Override spi_device_txrx_vseq to send SPI transfer without checking TX/RX fifo, note:
- When TX is underflow, SW shouldn't update wptr if spi isn't idle, otherwise, spi may
send mis-aligned data
- When RX is overflow, data will be lost and if SW update rptr, received data may be
mis-aligned
- Ensure underflow/overflow is triggered correctly'''
milestone: V2
tests: ["spi_device_fifo_underflow_overflow"]
}
{
name: dummy_sck_and_dummy_csb
desc: '''
Drive dummy sck without csb or drive dummy csb without sck, and test no impact on the
design'''
milestone: V2
tests: ["spi_device_dummy_item_extra_dly"]
}
{
name: extra_delay_on_spi
desc: '''
Add extra delay between spi clock edge or extra delay between 2 words data
This is to test host pause transfer for a while without turning off csb and then stream
in data again'''
milestone: V2
tests: ["spi_device_dummy_item_extra_dly"]
}
{
name: async_fifo_reset
desc: '''Reset async fifo when SPI interface is idle
TODO: fifo may be fetching data from SRAM? What is the actual usage?'''
milestone: V2
tests: ["spi_device_async_fifo_reset"]
}
{
name: interrupts
desc: '''
Test all supported interrupts:
- tx/rx lvl
- rx full
- rx error
- overflow/underflow'''
milestone: V2
tests: ["spi_device_interrupts"]
}
{
name: abort
desc: '''
TODO: Need to clarify the behavior in spec'''
milestone: V2
tests: ["spi_device_abort"]
}
{
name: byte_transfer_on_spi
desc: '''send spi transfer on byte granularity, and make sure the timer never expires'''
milestone: V2
tests: ["spi_device_byte_transfer"]
}
{
name: rx_timeout
desc: '''
- Send spi transfer on byte granularity, and timer may expires
- Only check data in sequence level when timer expires. Monitor and scoreboard don't
model the timer feature
- Note: Timeout only for RX'''
milestone: V2
tests: ["spi_device_rx_timeout"]
}
{
name: bit_transfer_on_spi
desc: '''
Send spi transfer on bit granularity
- If TX drives < 7 bits, this byte will be sent in next CSB.
- If TX drives 7 bits and set CSB to high, this byte won't be sent in next CSB'''
milestone: V2
tests: ["spi_device_bit_transfer"]
}
{
name: extreme_fifo_setting
desc: '''Set fifo size to 4 bytes(minimum), 2k-4bytes(maximum) and others'''
milestone: V2
tests: ["spi_device_extreme_fifo_size"]
}
{
name: mode
desc: '''TODO :only support fw mode now'''
milestone: V2
tests: ["spi_device_mode"]
}
{
name: mem_ecc
desc: '''
Backdoor hack memory data to test basic memory ECC behavior limitation:
- Just cover basic functionality and connectivity
- Complete verification will be done by PFV'''
milestone: V2
tests: ["spi_device_mem_ecc"]
}
{
name: perf
desc: '''Run spi_device_fifi_full_vseq with very small delays'''
milestone: V2
tests: ["spi_device_perf"]
}
]
}