// 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

            '''
      milestone: V1
      tests: ["pwm_smoke"]
    }
    {
      name: dutycycle
      desc: '''
            Verify different duty cycle settings in Pulse, Blink and Heart Beat mode.

            '''
      milestone: 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
            '''
      milestone: 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
            '''
      milestone: 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
            '''
        milestone: V2
        tests: ["pwm_rand_output"]
    }
   {
      name: resolution
      desc: '''
            Verify the PWM generates correct duty cycle for different resolution settings
            '''
        milestone: V2
        tests: ["pwm_rand_output"]
    }
    {
      name: multi_channel
      desc: '''
            Verifies that PWM correctly generates pulses on multiple channels concurrently
            '''
        milestone: 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
            '''
        milestone: 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.
            '''
        milestone: 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
            '''
        milestone: 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
            '''
      milestone: V2
      tests: ["pwm_stress_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
            '''
      milestone: V2
      tests: ["pwm_stress_perf"]
    }
  ]

 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
            '''
    }
  ]
}
