blob: 2bbe4ec97c64534c268b61847784cee53ec8c573 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified">
<!-- Root element: attn_node -->
<xsd:element name="attn_node">
<xsd:complexType>
<xsd:sequence>
<!-- Note that local_fir will eventually generate register,
capture_group, and rule, which is why those are optional in
the schema, but are still required in the binary files. -->
<xsd:element name="local_fir" type="local_fir" minOccurs="0"
maxOccurs="255"/>
<xsd:element name="register" type="register" minOccurs="0"
maxOccurs="255"/>
<xsd:element name="capture_group" type="capture_group" minOccurs="0"
maxOccurs="255"/>
<xsd:element name="rule" type="rule" minOccurs="0" maxOccurs="255"/>
<xsd:element name="bit" type="bit" minOccurs="0" maxOccurs="255"/>
</xsd:sequence>
<xsd:attribute name="name" type="name_type" use="required"/>
<xsd:attribute name="model_ec" type="model_ec_type" use="required"/>
<xsd:attribute name="reg_type" type="reg_type_enum" use="required"/>
</xsd:complexType>
</xsd:element>
<!-- Element: chip/register -->
<xsd:complexType name="register">
<xsd:sequence>
<xsd:element name="instance" type="instance" minOccurs="1"
maxOccurs="255"/>
</xsd:sequence>
<xsd:attribute name="name" type="name_type" use="required"/>
<xsd:attribute name="access" type="access_enum" use="optional"/>
</xsd:complexType>
<!-- Element: chip/register/instance -->
<!-- Element: chip/local_fir/instance -->
<xsd:complexType name="instance">
<xsd:attribute name="reg_inst" type="inst_type" use="required"/>
<xsd:attribute name="addr" type="addr_type" use="required"/>
</xsd:complexType>
<!-- Element: chip/capture_group -->
<xsd:complexType name="capture_group">
<xsd:sequence>
<xsd:element name="capture_register" type="capture_register"
minOccurs="1" maxOccurs="255"/>
</xsd:sequence>
<xsd:attribute name="node_inst" type="int_range" use="required"/>
</xsd:complexType>
<!-- Element: chip/capture_group/capture_register -->
<xsd:complexType name="capture_register">
<xsd:attribute name="reg_name" type="name_type" use="required"/>
<xsd:attribute name="reg_inst" type="int_range" use="required"/>
</xsd:complexType>
<!-- Element: chip/rule -->
<xsd:complexType name="rule">
<xsd:sequence>
<xsd:element name="expr" type="expr" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="attn_type" type="attn_type_enum" use="required"/>
<xsd:attribute name="node_inst" type="int_range" use="required"/>
</xsd:complexType>
<!-- Element: chip/rule/expr -->
<!-- Element: chip/rule/expr/expr... -->
<xsd:complexType name="expr">
<xsd:sequence>
<xsd:element name="expr" type="expr" minOccurs="0" maxOccurs="255"/>
</xsd:sequence>
<xsd:attribute name="type" type="expr_type_enum" use="required"/>
<xsd:attribute name="value1" use="optional"/>
<xsd:attribute name="value2" use="optional"/>
</xsd:complexType>
<!-- Element: chip/bit -->
<xsd:complexType name="bit">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="pos" type="int_range" use="required"/>
<xsd:attribute name="child_node" type="name_type" use="optional"/>
<xsd:attribute name="node_inst" type="int_range" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<!-- Element: chip/local_fir -->
<xsd:complexType name="local_fir">
<xsd:sequence>
<xsd:element name="instance" type="instance" minOccurs="1"
maxOccurs="255"/>
<xsd:element name="action" type="action" minOccurs="1"
maxOccurs="255"/>
</xsd:sequence>
<xsd:attribute name="name" type="name_type" use="required"/>
<xsd:attribute name="config" type="local_fir_config_enum" use="required"/>
</xsd:complexType>
<!-- Element: chip/local_fir/action -->
<xsd:complexType name="action">
<xsd:attribute name="attn_type" type="attn_type_enum" use="required"/>
<xsd:attribute name="config" type="action_config_enum" use="required"/>
</xsd:complexType>
<!-- Names must be alphanumeric or underscores, no spaces or other symbols
allowed. -->
<xsd:simpleType name="name_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-zA-Z0-9_]+"/>
</xsd:restriction>
</xsd:simpleType>
<!-- A comma separated list of names (see name_type for name definition). -->
<xsd:simpleType name="model_ec_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-zA-Z0-9_]+(,[a-zA-Z0-9_]+)*"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Instance values are integers from 0-255. -->
<xsd:simpleType name="inst_type">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="255"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Instance values are integers from 0-255. -->
<xsd:simpleType name="int_range">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]+([,:][0-9]+)*"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Instance values are integers from 0-255. -->
<xsd:simpleType name="addr_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="0x([0-9a-fA-F]{8}|[0-9a-fA-F]{16})"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Attention type enum. -->
<xsd:simpleType name="attn_type_enum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="CS"/>
<xsd:enumeration value="RE"/>
<xsd:enumeration value="UCS"/>
<xsd:enumeration value="SPA"/>
<xsd:enumeration value="HA"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Attention type enum. -->
<xsd:simpleType name="reg_type_enum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SCOM"/>
<xsd:enumeration value="IDSCOM"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Attention type enum. -->
<xsd:simpleType name="access_enum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="RO"/>
<xsd:enumeration value="WO"/>
<xsd:enumeration value="RW"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Expression type enum. -->
<xsd:simpleType name="expr_type_enum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="reg"/>
<xsd:enumeration value="int"/>
<xsd:enumeration value="and"/>
<xsd:enumeration value="or"/>
<xsd:enumeration value="not"/>
<xsd:enumeration value="lshift"/>
<xsd:enumeration value="rshift"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Local FIR config. -->
<xsd:simpleType name="local_fir_config_enum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value=""/>
<xsd:enumeration value="W"/>
<xsd:enumeration value="2"/>
<xsd:enumeration value="W2"/>
</xsd:restriction>
</xsd:simpleType>
<!-- Local FIR action config. -->
<xsd:simpleType name="action_config_enum">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-1]{2,3}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>