Changed strings to space separated list types.

Signed-off-by: Jeppe Johansen <jeppe@j-software.dk>
diff --git a/fpga_architecture.xsd b/fpga_architecture.xsd
index 682cd06..4fc6d50 100644
--- a/fpga_architecture.xsd
+++ b/fpga_architecture.xsd
@@ -10,13 +10,13 @@
   <!-- Metadata -->

   <xs:complexType name="meta">

     <xs:simpleContent>

-        <xs:extension base="xs:string">

-          <xs:attribute name="name" type="xs:string" use="required"/>

-          <xs:attribute name="xoffset" type="xs:int"/>

-          <xs:attribute name="x_offset" type="xs:int"/>

-          <xs:attribute name="yoffset" type="xs:int"/>

-          <xs:attribute name="y_offset" type="xs:int"/>

-        </xs:extension>

+      <xs:extension base="xs:string">

+        <xs:attribute name="name" type="xs:string" use="required"/>

+        <xs:attribute name="xoffset" type="xs:int"/>

+        <xs:attribute name="x_offset" type="xs:int"/>

+        <xs:attribute name="yoffset" type="xs:int"/>

+        <xs:attribute name="y_offset" type="xs:int"/>

+      </xs:extension>

     </xs:simpleContent>

   </xs:complexType>

 

@@ -26,12 +26,24 @@
     </xs:sequence>

   </xs:complexType>

 

+  <xs:simpleType name="stringlist">

+    <xs:list itemType="xs:string"/>

+  </xs:simpleType>

+

+  <xs:simpleType name="intlist">

+    <xs:list itemType="xs:int"/>

+  </xs:simpleType>

+

+  <xs:simpleType name="doublelist">

+    <xs:list itemType="xs:double"/>

+  </xs:simpleType>

+

   <!-- Actual definitions -->

   <xs:complexType name="port">

     <xs:attribute name="name" type="xs:string" use="required" />

     <xs:attribute name="is_clock" type="xs:boolean" />

     <xs:attribute name="clock" type="xs:string" />

-    <xs:attribute name="combinational_sink_ports" type="xs:string" />

+    <xs:attribute name="combinational_sink_ports" type="stringlist" />

   </xs:complexType>

 

   <xs:complexType name="port_list">

@@ -304,7 +316,7 @@
 

   <xs:complexType name="delay_matrix">

     <xs:simpleContent>

-      <xs:extension base="xs:string">

+      <xs:extension base="doublelist">

         <xs:attribute name="type" type="delay_matrix_type" use="required"/>

         <xs:attribute name="in_port" type="xs:string" use="required"/>

         <xs:attribute name="out_port" type="xs:string" use="required"/>

@@ -354,14 +366,14 @@
       <xs:group ref="timing_group" minOccurs="0"/>

     </xs:choice>

     <xs:attribute name="name" type="xs:string" use="required"/>

-    <xs:attribute name="input" type="xs:string" use="required"/>

-    <xs:attribute name="output" type="xs:string" use="required"/>

+    <xs:attribute name="input" type="stringlist" use="required"/>

+    <xs:attribute name="output" type="stringlist" use="required"/>

   </xs:complexType>

   

   <xs:complexType name="pack_pattern">

     <xs:attribute name="name" type="xs:string" use="required"/>

-    <xs:attribute name="in_port" type="xs:string" use="required"/>

-    <xs:attribute name="out_port" type="xs:string" use="required"/>

+    <xs:attribute name="in_port" type="stringlist" use="required"/>

+    <xs:attribute name="out_port" type="stringlist" use="required"/>

   </xs:complexType>

 

   <xs:complexType name="interconnect">

@@ -426,19 +438,19 @@
     </xs:restriction>

   </xs:simpleType>

 

+  <xs:complexType name="loc">

+    <xs:simpleContent>

+      <xs:extension base="stringlist">

+        <xs:attribute name="side" type="loc_side" use="required"/>

+        <xs:attribute name="xoffset" type="xs:int" default="0"/>

+        <xs:attribute name="yoffset" type="xs:int" default="0"/>

+      </xs:extension>

+    </xs:simpleContent>

+  </xs:complexType>

+

   <xs:complexType name="pinlocations">

     <xs:sequence>

-      <xs:element name="loc" maxOccurs="unbounded" minOccurs="0">

-        <xs:complexType>

-          <xs:simpleContent>

-            <xs:extension base="xs:string">

-              <xs:attribute name="side" type="loc_side" use="required"/>

-              <xs:attribute name="xoffset" type="xs:int" default="0"/>

-              <xs:attribute name="yoffset" type="xs:int" default="0"/>

-            </xs:extension>

-          </xs:simpleContent>

-        </xs:complexType>

-      </xs:element>

+      <xs:element name="loc" type="loc" maxOccurs="unbounded" minOccurs="0" />

     </xs:sequence>

     <xs:attribute name="pattern" type="pinlocations_pattern"/>

   </xs:complexType>

@@ -537,14 +549,8 @@
 

   <xs:complexType name="segment_block">

     <xs:simpleContent>

-      <xs:extension base="xs:string">

-        <xs:attribute name="type" use="required">

-          <xs:simpleType>

-            <xs:restriction base="xs:string">

-              <xs:enumeration value="pattern"/>

-            </xs:restriction>

-          </xs:simpleType>

-        </xs:attribute>

+      <xs:extension base="intlist">

+        <xs:attribute name="type" type="xs:string" use="required" fixed="pattern"/>

       </xs:extension>

     </xs:simpleContent>

   </xs:complexType>