<!-- déclaration des groupes d'attributs -->
<xs:attributeGroup name="parameterAttrGroup">
- <xs:attribute ref="name" use="required"/>
- <xs:attribute ref="type" use="required"/>
+ <xs:attribute ref="name" use="required"/>
+ <xs:attribute name="type" type="typeparam" use="required"/>
<xs:attribute ref="wishbone" use="optional"/>
- <xs:attribute ref="core" use="optional"/>
<xs:attribute ref="value" use="optional"/>
<xs:attribute ref="iface" use="optional"/>
<xs:attribute ref="width" use="optional"/>
<xs:attributeGroup name="inOutAttrGroup">
<xs:attribute ref="name" use="required"/>
<xs:attribute ref="width" use="required"/>
- <xs:attribute ref="type"/>
+ <xs:attribute name="type" type="typeiface"/>
<xs:attribute ref="purpose"/>
<xs:attribute ref="multiplicity"/>
+ <xs:attribute name="endian" type="typeendian" use="optional"/>
</xs:attributeGroup>
<xs:attribute name="ids" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
- <xs:attribute name="type" type="xs:string"/>
- <xs:attribute name="core" type="xs:string"/>
+
+ <xs:simpleType name="typeparam">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="string"/>
+ <xs:enumeration value="expression"/>
+ <xs:enumeration value="boolean"/>
+ <xs:enumeration value="integer"/>
+ <xs:enumeration value="natural"/>
+ <xs:enumeration value="positive"/>
+ <xs:enumeration value="real"/>
+ <xs:enumeration value="time"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="typeiface">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="expression"/>
+ <xs:enumeration value="boolean"/>
+ <xs:enumeration value="natural"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="typeendian">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="little"/>
+ <xs:enumeration value="big"/>
+ </xs:restriction>
+ </xs:simpleType>
+
<xs:attribute name="wishbone" type="xs:string"/>
<xs:attribute name="context" type="xs:string" />
<xs:attribute name="multiplicity" type="xs:string" />
</xs:complexType>
</xs:element>
+ <xs:element name="control">
+ <xs:complexType>
+ <xs:attribute ref="iface"/>
+ </xs:complexType>
+ </xs:element>
+
<xs:element name="inputs">
<xs:complexType>
<xs:sequence>
- <xs:element ref="input" maxOccurs="unbounded" />
+ <xs:element ref="input" maxOccurs="unbounded" />
+ <xs:element ref="control" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="outputs">
<xs:complexType>
<xs:sequence>
- <xs:element ref="output" maxOccurs="unbounded" />
+ <xs:element ref="output" maxOccurs="unbounded" />
+ <xs:element ref="control" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Racine du document -->
<xs:element name="block">
- <xs:complexType>
- <xs:group ref="blockElmtGroup"/>
- </xs:complexType>
+ <xs:complexType>
+ <xs:group ref="blockElmtGroup"/>
+ <xs:attribute name="version" type="xs:string" use="optional" />
+ </xs:complexType>
</xs:element>
</xs:schema>