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