<!-- 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:attribute ref="context" use="required"/>
+ <xs:attribute name="context" type="typecontext" use="required"/>
</xs:attributeGroup>
<xs:attributeGroup name="inOutAttrGroup">
<xs:attribute ref="name" use="required"/>
<xs:attribute ref="width" use="required"/>
- <xs:attribute ref="type"/>
- <xs:attribute ref="purpose"/>
+ <xs:attribute name="type" type="typeiface"/>
+ <xs:attribute name="purpose" type="typepurpose" use="optional"/>
<xs:attribute ref="multiplicity"/>
+ <xs:attribute name="endian" type="typeendian" use="optional"/>
+ <xs:attribute ref="clock" 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:attribute name="clock" type="xs:string"/>
+
+ <xs:simpleType name="typespecial">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="source"/>
+ <xs:enumeration value="sink"/>
+ <xs:enumeration value="clkconvert"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <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:simpleType name="typecontext">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="generic"/>
+ <xs:enumeration value="user"/>
+ <xs:enumeration value="wb"/>
+ <xs:enumeration value="port"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="typepurpose">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="data"/>
+ <xs:enumeration value="clock"/>
+ <xs:enumeration value="reset"/>
+ <xs:enumeration value="wb"/>
+ </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:attribute name="width" type="xs:string"/>
- <xs:attribute name="purpose" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="iface" type="xs:string"/>
<xs:attribute name="path" type="xs:string" />
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="category"/>
- <xs:element ref="description"/>
- </xs:sequence>
- </xs:group>
-
- <xs:group name="descriptionElmtGroup">
- <xs:sequence>
- <xs:element ref="brief"/>
- <xs:element ref="detailed"/>
+ <xs:element name="description" type="xs:string"/>
</xs:sequence>
</xs:group>
</xs:complexType>
</xs:element>
- <xs:element name="description">
- <xs:complexType>
- <xs:group ref="descriptionElmtGroup"/>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="brief" type="xs:string" />
-
- <xs:element name="detailed" type="xs:string" />
-
<xs:element name="parameters">
<xs:complexType>
<xs:sequence>
</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:attribute name="special" type="typespecial" use="optional" />
+ </xs:complexType>
</xs:element>
</xs:schema>