xml: Cleanup handling of fasm_mux metadata.

 * Only output it when requested.
 * Fixed indenting.
 * Add test which shows levels.

Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
diff --git a/convert_and_merge_composable_fpga_architecture.xsl b/convert_and_merge_composable_fpga_architecture.xsl
index 3d288bf..cc4b221 100644
--- a/convert_and_merge_composable_fpga_architecture.xsl
+++ b/convert_and_merge_composable_fpga_architecture.xsl
@@ -119,7 +119,7 @@
       </xsl:attribute>
       <xsl:attribute name="input">
         <xsl:for-each select="port[@type='input']">
-	  <xsl:call-template name="from-pb_type"/>.<xsl:call-template name="port-value"/>
+	        <xsl:call-template name="from-pb_type"/>.<xsl:call-template name="port-value"/>
           <xsl:if test="position() != last()"><xsl:text> </xsl:text></xsl:if>
         </xsl:for-each>
       </xsl:attribute>
@@ -129,17 +129,22 @@
           <xsl:if test="position() != last()"><xsl:text> </xsl:text></xsl:if>
         </xsl:for-each>
       </xsl:attribute>
-      <metadata>
-        <meta name="fasm_mux">
-          <xsl:for-each select="port[@type='input']"><xsl:text>
-            </xsl:text><xsl:call-template name="from-pb_type"/>.<xsl:call-template name="port-value"/><xsl:text> : </xsl:text><xsl:value-of select="metadata/meta[@name='fasm_mux']" />
-	    </xsl:for-each><xsl:text>
-        </xsl:text>
-        </meta>
-        <xsl:for-each select="metadata">
-          <xsl:apply-templates/>
-        </xsl:for-each>
-      </metadata>
+      <xsl:if test="*/metadata">
+        <metadata>
+          <!-- The fasm_mux metadata attribute needs special handling. -->
+          <xsl:if test="*/metadata/meta[@name='fasm_mux']">
+            <meta name="fasm_mux">
+              <xsl:for-each select="port[@type='input']"><xsl:text>
+                </xsl:text><xsl:call-template name="from-pb_type"/>.<xsl:call-template name="port-value"/><xsl:text> : </xsl:text><xsl:value-of select="metadata/meta[@name='fasm_mux']" />
+	            </xsl:for-each><xsl:text>
+          </xsl:text>
+            </meta>
+          </xsl:if>
+          <xsl:for-each select="metadata">
+            <xsl:apply-templates/>
+          </xsl:for-each>
+        </metadata>
+      </xsl:if>
     </xsl:copy>
   </xsl:template>
 
diff --git a/convert_and_merge_composable_tests/composable-interconnect-fasm-mux-levels.golden.xml b/convert_and_merge_composable_tests/composable-interconnect-fasm-mux-levels.golden.xml
index 064a7be..ca6f259 100644
--- a/convert_and_merge_composable_tests/composable-interconnect-fasm-mux-levels.golden.xml
+++ b/convert_and_merge_composable_tests/composable-interconnect-fasm-mux-levels.golden.xml
@@ -24,11 +24,11 @@
       <mux name="outmux" input="blocka.a blockb.b blockc[0].c blockc[1].c" output="blocko.i">
         <metadata>
           <meta name="fasm_mux">
-            blocka.a : a1
-            blockb.b : b1
-            blockc[0].c : c0
-            blockc[1].c : c1
-        </meta>
+                blocka.a : a1
+                blockb.b : b1.l1
+                blockc[0].c : c0.l1
+                blockc[1].c : c1
+          </meta>
           <meta name="fasm_name">fasm_name</meta>
         </metadata>
       </mux>
diff --git a/convert_and_merge_composable_tests/composable-interconnect-fasm-mux-levels.xml b/convert_and_merge_composable_tests/composable-interconnect-fasm-mux-levels.xml
index b3f7424..c75d66b 100644
--- a/convert_and_merge_composable_tests/composable-interconnect-fasm-mux-levels.xml
+++ b/convert_and_merge_composable_tests/composable-interconnect-fasm-mux-levels.xml
@@ -31,12 +31,12 @@
     </port>
     <port type="input" name="b" from="blockb">
      <metadata>
-      <meta name="fasm_mux">b1</meta>
+      <meta name="fasm_mux">b1.l1</meta>
      </metadata>
     </port>
     <port type="input" name="c" from="blockc[0]">
      <metadata>
-      <meta name="fasm_mux">c0</meta>
+      <meta name="fasm_mux">c0.l1</meta>
      </metadata>
     </port>
     <port type="input" name="c" from="blockc[1]">
diff --git a/convert_and_merge_composable_tests/composable-interconnect-fasm-mux.golden.xml b/convert_and_merge_composable_tests/composable-interconnect-fasm-mux.golden.xml
index 4883664..b0d5c1a 100644
--- a/convert_and_merge_composable_tests/composable-interconnect-fasm-mux.golden.xml
+++ b/convert_and_merge_composable_tests/composable-interconnect-fasm-mux.golden.xml
@@ -13,9 +13,9 @@
       <mux name="mux1" input="parent.i0 parent.i1" output="child.i">
         <metadata>
           <meta name="fasm_mux">
-            parent.i0 : a1
-            parent.i1 : b1
-        </meta>
+                parent.i0 : a1
+                parent.i1 : b1
+          </meta>
           <meta name="fasm_name">fasm_name</meta>
         </metadata>
       </mux>
diff --git a/convert_and_merge_composable_tests/composable-interconnect-implicit-parent.golden.xml b/convert_and_merge_composable_tests/composable-interconnect-implicit-parent.golden.xml
index da10541..43c72d0 100644
--- a/convert_and_merge_composable_tests/composable-interconnect-implicit-parent.golden.xml
+++ b/convert_and_merge_composable_tests/composable-interconnect-implicit-parent.golden.xml
@@ -21,33 +21,11 @@
     </pb_type>
     <interconnect>
       <direct input="parent.ia1" name="childa-i1" output="childa.i1"/>
-      <mux name="childa-input-i2" input="parent.ia2 parent.ia3" output="childa.i2">
-        <metadata>
-          <meta name="fasm_mux">
-            parent.ia2 : 
-            parent.ia3 : 
-        </meta>
-        </metadata>
-      </mux>
+      <mux name="childa-input-i2" input="parent.ia2 parent.ia3" output="childa.i2"/>
       <direct input="childa.o" name="parent-o0" output="parent.o0"/>
       <direct input="childa.o" name="childb-i" output="childb.i"/>
-      <mux name="childc-input" input="childa.o childb.o" output="childc.i">
-        <metadata>
-          <meta name="fasm_mux">
-            childa.o : 
-            childb.o : 
-        </meta>
-        </metadata>
-      </mux>
-      <mux name="output" input="childa.o childb.o childc.o" output="parent.o1">
-        <metadata>
-          <meta name="fasm_mux">
-            childa.o : 
-            childb.o : 
-            childc.o : 
-        </meta>
-        </metadata>
-      </mux>
+      <mux name="childc-input" input="childa.o childb.o" output="childc.i"/>
+      <mux name="output" input="childa.o childb.o childc.o" output="parent.o1"/>
     </interconnect>
   </pb_type>
 </xml>