blob: 12d5d2143f8f427a5f73b74072b047bf73ac62ad [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: "rv_timer"
import_testplans: ["hw/dv/tools/dvsim/testplans/csr_testplan.hjson",
"hw/dv/tools/dvsim/testplans/intr_test_testplan.hjson",
"hw/dv/tools/dvsim/testplans/stress_all_with_reset_testplan.hjson",
"hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson",
"rv_timer_sec_cm_testplan.hjson"]
testpoints: [
{
name: random
desc: '''RV_TIMER random test performs following steps for number of iterations
- Program zero to CTRL.active* Register(deactivate timer)
- Program random legal values in CFG*, TIMER_V_*, COMPARE_*, INTR_ENABLE*
- Program one to CTRL.active* (activate timer)
- Wait for number of cycles to have mTime>= mTimeCmp
- Check Interrupt state register and Interrupt signal (scoreboard logic)'''
stage: V1
tests: ["rv_timer_random"]
}
{
name: random_reset
desc: '''This test is to exercise on the fly reset(timer is active)
- Assert reset randomly in the middle of random test steps
- Scoreboard check for all register go back to reset value'''
stage: V2
tests: ["rv_timer_random_reset"]
}
{
name: disabled
desc: '''This test to verify no activity in mTime, Interrupt Status, Interrupt signal,
When all timers are deactive (ctrl.active = 0).
- Program 1 in interrupt enable and 0 in control register and random value for
rest of the registers
- Scoreboard check for no activity and no interrupt whatever is setting'''
stage: V2
tests: ["rv_timer_disabled"]
}
{
name: cfg_update_on_fly
desc: '''This test will verify update timer configuration on running timer.
- Program timer.Active to zero
- Program random values in interrrupt enable, prescaler, step, mtime and mtime cmp
- After some clocks update timer config values
- Check for interrupt as per new config set'''
stage: V2
tests: ["rv_timer_cfg_update_on_fly"]
}
{
name: no_interrupt_test
desc: '''This test will update timer value and compare value just before timer is going to
expire (multiple times) and verify no interrupt is asserted
- Program timer.Active to zero
- Program random values in interrrupt enable, prescaler, step, mtime and mtime cmp
- Update timer config values just before timer is about to expire
- Check for no interrupt set'''
stage: V2
tests: ["rv_timer_cfg_update_on_fly"]
}
{
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.'''
stage: V2
tests: ["rv_timer_stress_all"]
}
]
}