1#
2# Schema to validate a YAML file describing a Zephyr test platform
3#
4# We load this with pykwalify
5# (http://pykwalify.readthedocs.io/en/unstable/validation-rules.html),
6# a YAML structure validator, to validate the YAML files that describe
7# Zephyr test platforms
8#
9# The original spec comes from Zephyr's twister script
10#
11
12schema;platform-schema:
13  type: map
14  mapping:
15    "variants":
16      type: map
17      matching-rule: "any"
18      mapping:
19        regex;(([a-zA-Z0-9_]+)):
20          include: platform-schema
21    "identifier":
22      type: str
23    "maintainers":
24      type: seq
25      seq:
26        - type: str
27    "name":
28      type: str
29    "type":
30      type: str
31      enum: ["mcu", "qemu", "sim", "unit", "native"]
32    "simulation":
33      type: seq
34      seq:
35        - type: map
36          mapping:
37            "name":
38              type: str
39              required: true
40              enum:
41                [
42                  "qemu",
43                  "simics",
44                  "xt-sim",
45                  "renode",
46                  "nsim",
47                  "mdb-nsim",
48                  "tsim",
49                  "armfvp",
50                  "native",
51                  "custom",
52                ]
53            "exec":
54              type: str
55    "arch":
56      type: str
57      enum:
58        [
59          # architectures
60          "arc",
61          "arm",
62          "arm64",
63          "mips",
64          "nios2",
65          "posix",
66          "riscv",
67          "rx",
68          "sparc",
69          "x86",
70          "xtensa",
71
72          # unit testing
73          "unit",
74        ]
75    "vendor":
76      type: str
77    "tier":
78      type: int
79    "toolchain":
80      type: seq
81      seq:
82        - type: str
83    "sysbuild":
84      type: bool
85    "env":
86      type: seq
87      seq:
88        - type: str
89    "ram":
90      type: int
91    "flash":
92      type: int
93    "twister":
94      type: bool
95    "supported":
96      type: seq
97      seq:
98        - type: str
99    "testing":
100      type: map
101      mapping:
102        "timeout_multiplier":
103          type: number
104          required: false
105        "default":
106          type: bool
107        "binaries":
108          type: seq
109          seq:
110            - type: str
111        "only_tags":
112          type: seq
113          seq:
114            - type: str
115        "ignore_tags":
116          type: seq
117          seq:
118            - type: str
119        "renode":
120          type: map
121          mapping:
122            "uart":
123              type: str
124            "resc":
125              type: str
126
127include: platform-schema
128