xml: Add test for existing fasm_mux metadata. Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
diff --git a/convert-port-tag.xsl b/convert-port-tag.xsl index 8e0e1d8..170d156 100644 --- a/convert-port-tag.xsl +++ b/convert-port-tag.xsl
@@ -75,15 +75,14 @@ </xsl:attribute> <xsl:for-each select="@*"><xsl:copy /></xsl:for-each> <xsl:apply-templates/> - <xsl:if test="*/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 name="fasm_mux"><xsl:text>
</xsl:text> + <xsl:for-each select="port[@type='input']"> + <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:text>
</xsl:text> + </xsl:for-each> </meta> </xsl:if> <xsl:for-each select="metadata">
diff --git a/convert_and_merge_composable_tests/CMakeLists.txt b/convert_and_merge_composable_tests/CMakeLists.txt index 17e79c3..32063e2 100644 --- a/convert_and_merge_composable_tests/CMakeLists.txt +++ b/convert_and_merge_composable_tests/CMakeLists.txt
@@ -1,6 +1,7 @@ include("xsl_tests.cmake") # Test individual parts of the transform xsl_golden_test(NAME "attribute-cleanup") +xsl_golden_test(NAME "composable-interconnect-existing-fasm-mux") xsl_golden_test(NAME "composable-interconnect-fasm-mux") xsl_golden_test(NAME "composable-interconnect-fasm-mux-levels") xsl_golden_test(NAME "composable-interconnect-implicit-parent")
diff --git a/convert_and_merge_composable_tests/composable-interconnect-existing-fasm-mux.golden.xml b/convert_and_merge_composable_tests/composable-interconnect-existing-fasm-mux.golden.xml new file mode 100644 index 0000000..325e28a --- /dev/null +++ b/convert_and_merge_composable_tests/composable-interconnect-existing-fasm-mux.golden.xml
@@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<xml> + <pb_type name="parent"> + <input name="i0"/> + <input name="i1"/> + <output name="o"/> + <pb_type name="child"> + <input name="i"/> + <output name="o"/> + </pb_type> + <interconnect> + <direct input="COMMON_SLICE.CIN" name="CIN_TO_CARRY0" output="CARRY4_VPR.CIN"> + <pack_pattern in_port="COMMON_SLICE.CIN" name="CARRYCHAIN" out_port="CARRY4_VPR.CIN"/> + <metadata> + <meta name="fasm_mux"> + COMMON_SLICE.CIN = PRECYINIT.CIN + </meta> + </metadata> + </direct> + <mux input="CARRY4_VPR.O3 CARRY4_VPR.CO_FABRIC3 COMMON_SLICE.DO6 COMMON_SLICE.DO5 COMMON_SLICE.DX" name="DFFMUX" output="SLICE_FF.D[3]"> + <metadata> + <meta name="fasm_mux"> + COMMON_SLICE.DX = DFFMUX.DX + COMMON_SLICE.DO5 = DFFMUX.O5 + COMMON_SLICE.DO6 = DFFMUX.O6 + CARRY4_VPR.CO_FABRIC3 = DFFMUX.CY + CARRY4_VPR.O3 = DFFMUX.XOR + </meta> + </metadata> + </mux> + </interconnect> + </pb_type> +</xml>
diff --git a/convert_and_merge_composable_tests/composable-interconnect-existing-fasm-mux.xml b/convert_and_merge_composable_tests/composable-interconnect-existing-fasm-mux.xml new file mode 100644 index 0000000..c2a333e --- /dev/null +++ b/convert_and_merge_composable_tests/composable-interconnect-existing-fasm-mux.xml
@@ -0,0 +1,40 @@ +<?xml version="1.0"?> +<!-- Test the special handling around the fasm_mux metadata doesn't destroy + existing values. + --> +<xml> + <pb_type name="parent"> + <input name="i0" /> + <input name="i1" /> + <output name="o" /> + + <pb_type name="child"> + <input name="i" /> + <output name="o" /> + </pb_type> + + <interconnect> + <direct name="CIN_TO_CARRY0" input="COMMON_SLICE.CIN" output="CARRY4_VPR.CIN" > + <pack_pattern name="CARRYCHAIN"/> + <metadata> + <meta name="fasm_mux"> + COMMON_SLICE.CIN = PRECYINIT.CIN + </meta> + </metadata> + </direct> + <mux name="DFFMUX" + input="CARRY4_VPR.O3 CARRY4_VPR.CO_FABRIC3 COMMON_SLICE.DO6 COMMON_SLICE.DO5 COMMON_SLICE.DX" + output="SLICE_FF.D[3]" > + <metadata> + <meta name="fasm_mux"> + COMMON_SLICE.DX = DFFMUX.DX + COMMON_SLICE.DO5 = DFFMUX.O5 + COMMON_SLICE.DO6 = DFFMUX.O6 + CARRY4_VPR.CO_FABRIC3 = DFFMUX.CY + CARRY4_VPR.O3 = DFFMUX.XOR + </meta> + </metadata> + </mux> + </interconnect> + </pb_type> +</xml>
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 58b70bc..36509f5 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 input="blocka.a blockb.b blockc[0].c blockc[1].c" name="outmux" output="blocko.i"> <metadata> <meta name="fasm_mux"> - blocka.a : a1 - blockb.b : b1.l1 - blockc[0].c : c0.l1 - 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.golden.xml b/convert_and_merge_composable_tests/composable-interconnect-fasm-mux.golden.xml index 3e72333..cb3f7e1 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 input="parent.i0 parent.i1" name="mux1" 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>