blob: 7a0c05cb2b3ea28784d9791a55189078530e1cf3 [file] [log] [blame]
{
name: "uart"
import_testplans: ["hw/dv/tools/testplans/csr_testplan.hjson",
"hw/dv/tools/testplans/intr_test_testplan.hjson",
"hw/dv/tools/testplans/tl_device_access_types_testplan.hjson"]
entries: [
{
name: sanity
desc: '''Basic UART sanity test with few bytes transmitted and received asynchronously
and in parallel with scoreboard checks. Randomize UART baud rate and other
parameters such as TL agent delays.'''
milestone: v1
tests: ["uart_sanity"]
}
{
name: parity
desc: "Send / receive bytes with parity and odd parity enabled randomly."
milestone: v2
tests: []
}
{
name: parity_error
desc: '''Enable parity and randomly set even/odd parity. Inject parity error randomly
on data sent from rx and ensure the interrupt is raised.Send / receive bytes
with parity and odd parity enabled randomly.'''
milestone: v2
tests: []
}
{
name: tx_watermark
desc: '''Program random tx fifo watermark level and keep pushing data out by writing to
wdata. As the number of pending data entries in the tx fifo reaches the programmed
watermark level, ensure that the tx watermark interrupt is asserted. Read the fifo
status to cross-check. Ensure interrupt stays asserted until cleared.'''
milestone: v2
tests: []
}
{
name: rx_watermark
desc: '''Program random rx watermark level. Keep sending data over rx and read rdata
register in parallel with randomized delays large enough to reach a point where
the number of pending data items in rx fifo reaches the watermark level. When
that happens, check that the interrupt is asserted.'''
milestone: v2
tests: []
}
{
name: tx_reset
desc: '''Fill up the tx fifo with data to be sent out. After a random number (less than
filled fifo size) of bytes shows up on tx, reset the fifo and ensure that the
remaining data bytes do not show up.'''
milestone: v2
tests: []
}
{
name: rx_reset
desc: '''Fill up the rx fifo by sending data bytes in over rx. After a random number
(less than filled fifo size) of bytes sent over rx, reset the fifo and ensure
that reads to rdata register yield 0s.'''
milestone: v2
tests: []
}
{
name: tx_overflow
desc: '''Keep writing over 32 bytes of data into wdata register and ensure excess data
bytes are dropped and overflow interrupt is asserted.'''
milestone: v2
tests: []
}
{
name: rx_overflow
desc: '''Keep sending over 32 bytes of data over rx and ensure excess data bytes are
dropped.'''
milestone: v2
tests: []
}
{
name: tx_rx_fifo_full
desc: "Send over 32 bytes of data but stop when fifo is full"
milestone: v2
tests: []
}
{
name: frame_err
desc: '''Inject frame error in parity and non-parity cases by not setting stop bit = 1.
Ensure the interrupt gets asserted.'''
milestone: v2
tests: []
}
{
name: rx_break_err
desc: '''Program random number of break detection characters. Create a frame error
scenario and send random number of 0 bytes. If that random number exceeds the
programmed break characters, ensure that the break_err interrupt is asserted.'''
milestone: v2
tests: []
}
{
name: rx_timeout
desc: '''Program timeout_ctrl register to randomize the timeout. Send random number of
data over rx and read fewer data than sent and let the DUT sit idle or the
programmed timeout duration. Ensure timeout interrupt fires.'''
milestone: v2
tests: []
}
{
name: stress
desc: '''Do combinations of multiple of above scenarios to get multiple interrupts
asserted at the same time. Scoreboard should be robust enough to deal with all
scenarios.'''
milestone: v2
tests: []
}
{
name: perf
desc: '''Run (perhaps the stress test) with highest supported baud rate.
- Core freq: 24mhz, 25mhz, 48mhz, 50mhz, 100mhz
- Baud rate: 9600, 115200, 230400, 1Mbps(1048576), 2Mbps(2097152)'''
milestone: v2
tests: []
}
{
name: sys_loopback
desc: '''Drive uart TX and data will be loopbacked through RX. After loopback is done,
RDATA will be equal to WDATA'''
milestone: v2
tests: []
}
{
name: line_loopback
desc: "Line loopback test"
milestone: v2
tests: []
}
{
name: rx_noise_filter
desc: "16x fast clk to check it, need to be 3 clk same value"
milestone: v2
tests: []
}
{
name: tx_overide
desc: "Enable override control and use register programming to drive uart output directly"
milestone: v2
tests: []
}
{
name: rx_oversample
desc: "read RX oversampled value and check use 16x faster than baud clk to sample it"
milestone: v2
tests: []
}
]
}