// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

{
  name: "pattgen"
  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/stress_all_with_reset_testplan.hjson",
                     "hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson"],
  testpoints: [
    {
      name: smoke
      desc: '''
            Smoke test for pattgen ip in which dut is randomly programmed
            to generate random patterns on output channels.

            Stimulus:
              - Program the configuration registers of the output channels
              - Randomly activate the output channels
              - Re-program the configuration registers of the output channels once
                completion interrupts are asserted

            Checking:
              - Check divided clock rate for the active channels
                matching with the values of pre-divider registers
              - Check generated pattern matching on the active channels
                matching with the values of pattern data registers
              - Check completion interrupts are asserted once a pattern
                is completely generated on the active channels
            '''
      milestone: V1
      tests: ["pattgen_smoke"]
    }
    {
      name: perf
      desc: '''
            Checking ip operation at min/max bandwidth

            Stimulus:
              - Program the pre-divider registers to high/low values (slow/fast data rate)
              - Program the pattern data registers, the pattern length per output, and
                repeat counter registers to high/low values
              - Start and stop channels quickly
              - Clear interrupts quickly
            Checking:
              - Ensure patterns are correctly generated
              - Ensure interrupts are robust asserted and cleared (e.g. at the high data rate)
            '''
      milestone: V2
      tests: ["pattgen_perf"]
    }
    {
      name: cnt_rollover
      desc: '''
            Checking ip operation with random counter values

            Stimulus:
              - Program the pre-divider and size registers to unconstraint random values
              - Program the clk_cnt, bit_cnt and rep_cnt to values less than but close to
                predivider and size registers, so that counting would take a reasonable
                number of clock cycles
              - include programming for corner cases
                repeat programming a random number of times
              - Start and stop channels quickly
              - Clear interrupts quickly

            Checking:
              - Include functional cover point that rollover value is reached and counter is re-enabled:
              - Ensure patterns are correctly generated
              - Ensure interrupts are robust asserted and cleared (e.g. at the high data rate)
            '''
      milestone: V2
      tests: ["cnt_rollover"]
    }
    {
      name: error
      desc: '''
            Reset then re-start the output channel on the fly.

            Stimulus:
              - Programm the configuration registers of the output channels
              - Randomly re-enable the in progress output channels
              - Re-program the configuration registers of the output channels

            Checking:
              - Ensure patterns are dropped when re-enabled
              - Ensure the output channels get back normal after re-enable
            '''
      milestone: V2
      tests: ["pattgen_error"]
    }
    {
      name: stress_all
      desc: '''
            Stress_all test is a random mix of all the test above except csr tests.
            '''
      milestone: V2
      tests: ["pattgen_stress_all"]
    }
  ]


  covergroups: [
    {
      name: pattgen_op_cg
      desc: '''
            The following coverage strategy is implemented:
            * The counters are covered at the max
              and min corner cases and for the middle values
            * Data bus has functional coverage using walking ones and zeroes
            * One bit width variables are wrapped in one cover point
              while counters and data have designated cover points
            * Channel enable signal is stand alone cover point
            '''
    }
    {
      name: roll_cg
      desc: '''
            Covers that all the counters revert to zero when they reach
            the maximum value.
            Individual initial and maximum counter values
            that will be covered include:
            - Initial and maximum values of clock divide counter
            - Initial and maximum values of length counter
            - Initial and maxim values of repetition counter
            All valid combinations of the above will also be crossed.
            '''
    }
    {
      name: ctrl_cg
      desc: '''
            Covers that all valid enable and polarity settings
            for the Pattgen control register have been tested.
            Individual enable and polarity settings that will be covered include:
            - Enable pattern generator functionality for Channel 0 (ENABLE_CH0)
            - Enable pattern generator functionality for Channel 1 (ENABLE_CH1)
            - Clock (pcl) polarity for Channel 0 (POLARITY_CH0)
            - Clock (pcl) polarity for Channel 1 (POLARITY_CH1)
            All valid combinations of the above will also be crossed.
            '''
    }
    {
      name: inter_cg
      desc: '''
            intr_cg is defined in cip_base_env_cov and 
            referenced in pattgen_scoreboard
            '''
    }
    {
      name: pattern_len_ch0_cg
      desc: '''
            Covers various Lengths of the channel0 seed pattern ranges,
            to ensure that Pattgen can operate successfully
            on different pattern lengths.
            we will cover that an acceptable distribution of lengths has been seen,
            and specifically cover some corner cases.
            '''
    }
    {
      name: pattern_len_ch1_cg
      desc: '''
            Similar to channel 0.
            '''
    }
    {
      name: pattern_reps_ch0_cg
      desc: '''
            Covers various numbers of channel repetitions of the channel0, to ensure that Pattgen
            can operate successfully on different pattern lengths.
            we will cover that an acceptable distribution of lengths has been seen,
            and specifically cover all corner cases.
            '''
    }
    {
      name: pattern_reps_ch1_cg
      desc: '''
            Similar to channel 0.
            '''
    }
    {
      name: pattern_prediv_ch0_cg
      desc: '''
            Covers various numbers of clock divide ratios of the channel0, to ensure that Pattgen
            can operate successfully on different clock divide ratios.
            we will cover that an acceptable distribution of lengths has been seen,
            and specifically cover corner cases.
            '''
    }
    {
      name: pattern_prediv_ch1_cg
      desc: '''
            Similar to channel 0.
            '''
    }
    {
      name: pattern_data_ch0_0_cg
      desc: '''
            Covers various data_0 values of the channel0 seed pattern ranges,
            to ensure that Pattgen can operate successfully on different pattern lengths.
            we will cover that an acceptable distribution of lengths has been seen,
            and specifically cover corner cases. The covergroup takes data from 
            TL_UL scoreboard input
            '''
    }
    {
      name: pattern_data_ch0_1_cg
      desc: '''
            Similar to pattern_data_ch0_0_cg, except using data_1 values
            '''
    }
    {
      name: pattern_data_ch1_0_cg
      desc: '''
            Similar to pattern_data_ch0_0_cg.
            '''
    }
    {
      name: pattern_data_ch1_1_cg
      desc: '''
            Similar to pattern_data_ch0_1_cg.
            '''
    }
    {
      name: program_while_busy_cg
      desc: '''
            Program the DUT while pattern is being produced to insure current pattern is not being corrupt.
            '''
    }

]

}
