// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  // 'name' is mandatory field
  name: "foo"
  intf: ["tl", "jtag"]

  // 'import_testplans' is a list of imported common testplans
  // paths are relative to repository top
  // all key_value pairs in this file other than 'import_testplans' and 'entries'
  // can be used for wildcard substitutions in imported testplans
  import_testplans: ["util/dvsim/examples/testplanner/common_testplan.hjson"]
  testpoints: [
    {
      // name of the testplan entry - should be unique
      name: smoke
      desc: '''FOO smoke test. Describe this test in sufficient detail. You can split
            the description on multiple lines like this (with 3 single-inverted commas.
            Note that the subsequent lines are indented right below where the inverted
            commas start.'''
      // milestone for which this test is targeted for - V1, V2 or V3
      milestone: V1
      // tests of actual written tests that maps to this entry
      tests: ["{name}_smoke"]
    }
    {
      name: feature1
      desc: "A single line description with single double-inverted commas."
      milestone: V2
      // testplan entry with no tests added
      tests: ["{name}_{intf}_feature1"]
    }
    {
      name: feature2
      desc: '''**Goal**: How-to description

            **Stimulus**: If possible, in the description indicate a brief one-liner
            goal on the first line. Then, describe the stimulus and check procedures like
            this.

            **Check**: This style is not mandatory, but highly recommended. Also note that
            the description supports Markdown formatting. Add things:
            - like bullets
            - something in **bold** and in *italic*
              - A sub-bullet item\
                Continue describing above bullet on a new line.

            Start a new paragraph with two newlines.
            '''
      milestone: V2
      // testplan entry with multiple tests added
      tests: ["foo_feature2_type1",
              "foo_feature2_type2",
              "foo_feature2_type3"]
    }
  ]

  covergroups: [
    {
      name: foo_cg
      desc: '''
            '''
    }
  ]
}
