[pwm, dv] Add testplan for PWM
Signed-off-by: Hoang Tung <Hoang.Tung@wdc.com>
diff --git a/hw/ip/pwm/data/pwm_testplan.hjson b/hw/ip/pwm/data/pwm_testplan.hjson
new file mode 100644
index 0000000..8815880
--- /dev/null
+++ b/hw/ip/pwm/data/pwm_testplan.hjson
@@ -0,0 +1,110 @@
+// 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/stress_all_with_reset_testplan.hjson",
+ "hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson"]
+ entries: [
+ {
+ 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"]
+ }
+ ]
+}