blob: 6c4250f41424e5bfebe41af13e899ace1e5b5e27 [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: "pwm"
import_testplans: ["hw/dv/tools/dvsim/testplans/csr_testplan.hjson",
"hw/dv/tools/dvsim/testplans/intr_test_testplan.hjson",
"hw/dv/tools/dvsim/testplans/enable_reg_testplan.hjson",
// TODO: enable for V2
//"hw/dv/tools/dvsim/testplans/stress_all_with_reset_testplan.hjson",
"hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson"],
testpoints: [
{
name: smoke
desc: '''
Smoke test accessing a major datapath within the pwm
Stimulus:
- Program pwm enable register (PWM_EN)
- Program configuration registers (CFG, INVERT)
- Disable blink and heartbeat enable registers (these mode are verified with other tests)
- Program REGEN to lock (enable) register settings and start pwm function
Checks:
- Ensure the output pulses are correctly modulated for all channels
'''
milestone: V1
tests: ["pwm_smoke"]
}
{
name: perf
desc: '''
Checking ip operation at min/max bandwidth
Stimulus:
- Program timing registers (CLK_DIV, DC_RESN) to high/low values (slow/fast data rate)
- Program other required registers for pwm operation
- Start pwm channels
Checks:
- Ensure the output pulses are correctly modulated for all channels
'''
milestone: V2
tests: ["pwm_perf"]
}
{
name: blink
desc: '''
Test the blinking mode of pwm
Stimulus:
- Program pwm enable register (PWM_EN)
- Program configuration registers (CFG, INVERT)
- Enable blink mode (BLINK_EN) and program DUTY_CYCLE register
- Program REGEN to lock (enable) register settings and start pwm function
Checks:
- Ensure the output pulses are correctly modulated for all channels
- Ensure blinking channel toggles by two duty cycle values programmed to DUTY_CYCLE register
'''
milestone: V2
tests: ["pwm_blink"]
}
{
name: heartbeat
desc: '''
Test the heartbeat mode of pwm
Stimulus:
- Program pwm enable register (PWM_EN)
- Program configuration registers (CFG, INVERT)
- Enable heartbeat mode (HTBT_EN) and programm BLINK_PARAM register
- Program REGEN to lock (enable) register settings and start pwm function
Checks:
- Ensure the output pulses are correctly modulated for all channels
- Ensure output duty cycle linearly increments and decrements between two
blink-rate values programmed to BLINK_PARAM register
'''
milestone: V2
tests: ["pwm_heartbeat"]
}
{
name: clock_domain
desc: '''
TBD -Verify the function of clock-crossing domain for pwm
Stimulus:
- TBD
Checking:
- TBD
'''
milestone: V2
tests: ["pwm_clock_domain"]
}
{
name: stress_all
desc: '''
Combine above sequences in one test then randomly select for running
Stimulus:
- Start sequences and randomly add reset between each sequence
Checking:
- All sequences should be finished and checked by the scoreboard
'''
milestone: V2
tests: ["pwm_stress_all"]
}
]
}