| <?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> |