blob: 98093f5d65ae7de302b44a84001aa22fda65de19 [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/alert_test_testplan.hjson",
"hw/dv/tools/dvsim/testplans/intr_test_testplan.hjson",
"hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson",
"pwm_sec_cm_testplan.hjson"],
testpoints: [
{
name: smoke
desc: '''
pwm_smoke tests pulse and blink mode for a single channel
Stimulus:
- configure the envionment for one PWM channel
- program the duty cycle a and b values
- configure the ClkDiv and Resn
Checking:
- ensure pulses are generated correctly in pulse or blink mode
'''
stage: V1
tests: ["pwm_smoke"]
}
{
name: dutycycle
desc: '''
Verify different duty cycle settings in Pulse, Blink and Heart Beat mode.
'''
stage: V2
tests: ["pwm_rand_output"]
}
{
name: pulse
desc: '''
Verify the pulse mode of the PWM
by de-asserting blink_en field in the PWM_PARAM register
'''
stage: V2
tests: ["pwm_rand_output"]
}
{
name: blink
desc: '''
Verify the blink mode of the PWM
by asserting the blink_en field in the PWM_PARAM register
'''
stage: V2
tests: ["pwm_rand_output"]
}
{
name: heartbeat
desc: '''
Verify the Heart Beat mode of the PWM
by asserting the blink_en and HTBT field in the PWM_PARAM register
'''
stage: V2
tests: ["pwm_rand_output"]
}
{
name: resolution
desc: '''
Verify the PWM generates correct duty cycle for different resolution settings
'''
stage: V2
tests: ["pwm_rand_output"]
}
{
name: multi_channel
desc: '''
Verifies that PWM correctly generates pulses on multiple channels concurrently
'''
stage: V2
tests: ["pwm_rand_output"]
}
{
name: polarity
desc: '''
Verify that the polarity of the pulse can be inverted by setting the invert channel bit in the invert register
'''
stage: V2
tests: ["pwm_rand_output"]
}
{
name: phase
desc: '''
Check that the relative phase between pulses matches the setting in the phase_delay field in the PWM_PARAM register.
'''
stage: V2
tests: ["pwm_rand_output"]
}
{
name: lowpower
desc: '''
Verify the PWM can continue when the chip is in low power mode.
Stimulus:
- start PWM on one or more channels
- stop the TL UL clock
Checks:
- Ensure pulses are still generated when in LP mode
'''
stage: V2
tests: ["pwm_rand_output"]
}
{
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
'''
stage: V2
tests: ["pwm_perf"]
}
{
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
'''
stage: V2
tests: ["pwm_stress_all"]
}
]
covergroups: [
{
name: regwen_cg
desc: '''
Covers that an attempt to write wen REG enable was made and was unsuccessful
'''
}
{
name: cfg_cg
desc: '''
Covers that valid settings for the PWM.CFG register has been tested.
This includes values for:
- clk_div
- dc_resn
- cntr_en
'''
}
{
name: pwm_en_cg
desc: '''
Covers that both runs with a single PWM channel and multiple channels has been tested.
Verifies both when the channels are enabled for parallel behavior (activated at the same time)
and activated individually
'''
}
{
name: invert_cg
desc: '''
Covers that channels have been tested with different polarity
Also cover that a mix channels with invert enabled and disabled concurrently have been tested.
'''
}
{
name: pwm_param_cg
desc: '''
Covers that both pulse, blink and heart beat mode have been tested.
Also covers that.
- various phase delays have been tested
- different delays on different concurrent channels
'''
}
{
name: duty_cycle_cg
desc: '''
Covers that a good range of combinations of values for A and B have been send.
Also cover that multiple channels can run concurrently with different settings for A and B.
Cover these cases:
- A > B
- A < B
- A == B
'''
}
{
name: blink_param_cg
desc: '''
Covers that a good range of combinations of values for X and Y have been seend.
Also cover that multiple channels can run concurrently with different settings for X and Y.
'''
}
{
name: lowpower_cg
desc: '''
Covers that the DUT will continue to produce pulses with TL clock disabled (low power mode)
'''
}
{
name: clock_cg
desc: '''
Cover that a range of frequencies have been tested for the PWM clock including a clock that matches the TL clk.
'''
}
{
name: overwrite_conf_cg
desc: '''
Cover that a the PWM configuration cannot be altered while a channel is active
'''
}
]
}