<!-- 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="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="clock" 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: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" />
<!-- 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>