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