xml: Sort the output tags. ```xml <pb_type> <clocks by name/> <inputs by name/> <outputs by name/> <pb_type by name> ... </pb_type> <interconnect> <direct|mux by output> </interconnect> </pb_type> ``` Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
diff --git a/convert_and_merge_composable_fpga_architecture.sh b/convert_and_merge_composable_fpga_architecture.sh index 1c15424..3393ee0 100755 --- a/convert_and_merge_composable_fpga_architecture.sh +++ b/convert_and_merge_composable_fpga_architecture.sh
@@ -11,4 +11,5 @@ ${XSLTPROC_CMD} ${TOP_DIR}/common/xml/pack-patterns.xsl - | \ ${XSLTPROC_CMD} ${TOP_DIR}/common/xml/remove-duplicate-models.xsl - | \ ${XSLTPROC_CMD} ${TOP_DIR}/common/xml/attribute-fixes.xsl - | \ + ${XSLTPROC_CMD} ${TOP_DIR}/common/xml/sort-tags.xsl - | \ cat
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 index c8670ba..0df25ac 100644 --- 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
@@ -17,6 +17,15 @@ </meta> </metadata> </direct> + <mux input="COMMON_SLICE.AO5 COMMON_SLICE.AX" name="CARRY_DI0" output="CARRY4_VPR.DI0"> + <metadata> + <meta name="fasm_mux"> + COMMON_SLICE.AO5 = CARRY4.ACY0 + COMMON_SLICE.AX = NULL + </meta> + </metadata> + <delay_constant in_port="COMMON_SLICE.AX" max=".105e-9" out_port="CARRY4_VPR.DI0"/> + </mux> <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"> @@ -28,15 +37,6 @@ </meta> </metadata> </mux> - <mux input="COMMON_SLICE.AO5 COMMON_SLICE.AX" name="CARRY_DI0" output="CARRY4_VPR.DI0"> - <metadata> - <meta name="fasm_mux"> - COMMON_SLICE.AO5 = CARRY4.ACY0 - COMMON_SLICE.AX = NULL - </meta> - </metadata> - <delay_constant in_port="COMMON_SLICE.AX" max=".105e-9" out_port="CARRY4_VPR.DI0"/> - </mux> </interconnect> </pb_type> </xml>
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 cb3f7e1..932b881 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
@@ -9,7 +9,6 @@ <output name="o"/> </pb_type> <interconnect> - <direct input="child.o" name="parent-o" output="parent.o"/> <mux input="parent.i0 parent.i1" name="mux1" output="child.i"> <metadata> <meta name="fasm_mux"> @@ -19,6 +18,7 @@ <meta name="fasm_name">fasm_name</meta> </metadata> </mux> + <direct input="child.o" name="parent-o" output="parent.o"/> </interconnect> </pb_type> </xml>
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 745ae0e..1c662b7 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
@@ -27,9 +27,9 @@ <pack_pattern in_port="parent.ia2" name="A2" out_port="childa.i2"/> <pack_pattern in_port="parent.ia3" name="A3" out_port="childa.i2"/> </mux> - <direct input="childa.o" name="parent-o0" output="parent.o0"/> <direct input="childa.o" name="childb-i" output="childb.i"/> <mux input="childa.o childb.o" name="childc-input" output="childc.i"/> + <direct input="childa.o" name="parent-o0" output="parent.o0"/> <mux input="childa.o childb.o childc.o" name="output" output="parent.o1"/> </interconnect> </pb_type>
diff --git a/convert_and_merge_composable_tests/composable-interconnect-pack_patterns.golden.xml b/convert_and_merge_composable_tests/composable-interconnect-pack_patterns.golden.xml index 7285175..5921ecf 100644 --- a/convert_and_merge_composable_tests/composable-interconnect-pack_patterns.golden.xml +++ b/convert_and_merge_composable_tests/composable-interconnect-pack_patterns.golden.xml
@@ -22,9 +22,9 @@ <interconnect> <direct input="parent.ia1" name="childa-i1" output="childa.i1"/> <mux input="parent.ia2 parent.ia3" name="childa-input-i2" output="childa.i2"/> - <direct input="childa.o" name="parent-o0" output="parent.o0"/> <direct input="childa.o" name="childb-i" output="childb.i"/> <mux input="childa.o childb.o" name="childc-input" output="childc.i"/> + <direct input="childa.o" name="parent-o0" output="parent.o0"/> <mux input="childa.o childb.o childc.o" name="output" output="parent.o1"/> </interconnect> </pb_type>
diff --git a/convert_and_merge_composable_tests/composable-pb_type.golden.xml b/convert_and_merge_composable_tests/composable-pb_type.golden.xml index a128b5c..ef10e9d 100644 --- a/convert_and_merge_composable_tests/composable-pb_type.golden.xml +++ b/convert_and_merge_composable_tests/composable-pb_type.golden.xml
@@ -1,11 +1,11 @@ <?xml version="1.0"?> <pb_type xmlns:xi="http://www.w3.org/2001/XInclude" name="top" num_pb="1"> - <pb_type blif_model=".subckt random" class="lut" name="top_inner" num_pb="1"> - <other_tag/> - </pb_type> <pb_type name="middle" num_pb="1"> <pb_type blif_model=".subckt random" class="lut" name="middle_inner" num_pb="1"> <other_tag/> </pb_type> </pb_type> + <pb_type blif_model=".subckt random" class="lut" name="top_inner" num_pb="1"> + <other_tag/> + </pb_type> </pb_type>
diff --git a/convert_and_merge_composable_tests/full-test.golden.xml b/convert_and_merge_composable_tests/full-test.golden.xml index 5190d3b..dd44989 100644 --- a/convert_and_merge_composable_tests/full-test.golden.xml +++ b/convert_and_merge_composable_tests/full-test.golden.xml
@@ -38,46 +38,46 @@ <T_clock_to_Q clock="clk" max="10e-12" port="combb.cout"/> </pb_type> <interconnect> - <direct input="MULTIPLE_INSTANCE.a[3]" name="comba[3]-a" output="comba[3].a"/> - <direct input="MULTIPLE_INSTANCE.b[3]" name="comba[3]-b" output="comba[3].b"/> - <direct input="MULTIPLE_INSTANCE.cin" name="comba[0]-cin" output="comba[0].cin"/> - <direct input="MULTIPLE_INSTANCE.cin" name="comba[1]-cin" output="comba[1].cin"/> - <direct input="MULTIPLE_INSTANCE.cin" name="comba[2]-cin" output="comba[2].cin"/> - <direct input="MULTIPLE_INSTANCE.cin" name="comba[3]-cin" output="comba[3].cin"/> + <direct input="combb[3].cout" name="MULTIPLE_INSTANCE-cout" output="MULTIPLE_INSTANCE.cout"/> + <direct input="comba[0].sum" name="MULTIPLE_INSTANCE-sum[0]" output="MULTIPLE_INSTANCE.sum[0]"/> + <direct input="comba[1].sum" name="MULTIPLE_INSTANCE-sum[1]" output="MULTIPLE_INSTANCE.sum[1]"/> + <direct input="comba[2].sum" name="MULTIPLE_INSTANCE-sum[2]" output="MULTIPLE_INSTANCE.sum[2]"/> <direct input="comba[3].sum" name="MULTIPLE_INSTANCE-sum[3]" output="MULTIPLE_INSTANCE.sum[3]"/> + <direct input="combb[0].sum" name="MULTIPLE_INSTANCE-sum[4]" output="MULTIPLE_INSTANCE.sum[4]"/> + <direct input="combb[1].sum" name="MULTIPLE_INSTANCE-sum[5]" output="MULTIPLE_INSTANCE.sum[5]"/> + <direct input="combb[2].sum" name="MULTIPLE_INSTANCE-sum[6]" output="MULTIPLE_INSTANCE.sum[6]"/> + <direct input="combb[3].sum" name="MULTIPLE_INSTANCE-sum[7]" output="MULTIPLE_INSTANCE.sum[7]"/> <direct input="MULTIPLE_INSTANCE.a[0]" name="comba[0]-a" output="comba[0].a"/> <direct input="MULTIPLE_INSTANCE.b[0]" name="comba[0]-b" output="comba[0].b"/> - <direct input="comba[0].sum" name="MULTIPLE_INSTANCE-sum[0]" output="MULTIPLE_INSTANCE.sum[0]"/> + <direct input="MULTIPLE_INSTANCE.cin" name="comba[0]-cin" output="comba[0].cin"/> <direct input="MULTIPLE_INSTANCE.a[1]" name="comba[1]-a" output="comba[1].a"/> <direct input="MULTIPLE_INSTANCE.b[1]" name="comba[1]-b" output="comba[1].b"/> - <direct input="comba[1].sum" name="MULTIPLE_INSTANCE-sum[1]" output="MULTIPLE_INSTANCE.sum[1]"/> + <direct input="MULTIPLE_INSTANCE.cin" name="comba[1]-cin" output="comba[1].cin"/> <direct input="MULTIPLE_INSTANCE.a[2]" name="comba[2]-a" output="comba[2].a"/> <direct input="MULTIPLE_INSTANCE.b[2]" name="comba[2]-b" output="comba[2].b"/> - <direct input="comba[2].sum" name="MULTIPLE_INSTANCE-sum[2]" output="MULTIPLE_INSTANCE.sum[2]"/> + <direct input="MULTIPLE_INSTANCE.cin" name="comba[2]-cin" output="comba[2].cin"/> + <direct input="MULTIPLE_INSTANCE.a[3]" name="comba[3]-a" output="comba[3].a"/> + <direct input="MULTIPLE_INSTANCE.b[3]" name="comba[3]-b" output="comba[3].b"/> + <direct input="MULTIPLE_INSTANCE.cin" name="comba[3]-cin" output="comba[3].cin"/> <direct input="MULTIPLE_INSTANCE.c[0]" name="combb[0]-a" output="combb[0].a"/> <direct input="MULTIPLE_INSTANCE.d[0]" name="combb[0]-b" output="combb[0].b"/> <direct input="comba[0].cout" name="combb[0]-cin" output="combb[0].cin"> <pack_pattern in_port="comba[0].cout" name="carry-ADDER" out_port="combb[0].cin"/> </direct> - <direct input="combb[0].sum" name="MULTIPLE_INSTANCE-sum[4]" output="MULTIPLE_INSTANCE.sum[4]"/> <direct input="MULTIPLE_INSTANCE.c[1]" name="combb[1]-a" output="combb[1].a"/> <direct input="MULTIPLE_INSTANCE.d[1]" name="combb[1]-b" output="combb[1].b"/> <direct input="comba[1].cout" name="combb[1]-cin" output="combb[1].cin"> <pack_pattern in_port="comba[1].cout" name="carry-ADDER" out_port="combb[1].cin"/> </direct> - <direct input="combb[1].sum" name="MULTIPLE_INSTANCE-sum[5]" output="MULTIPLE_INSTANCE.sum[5]"/> <direct input="MULTIPLE_INSTANCE.c[2]" name="combb[2]-a" output="combb[2].a"/> <direct input="MULTIPLE_INSTANCE.d[2]" name="combb[2]-b" output="combb[2].b"/> <direct input="comba[2].cout" name="combb[2]-cin" output="combb[2].cin"> <pack_pattern in_port="comba[2].cout" name="carry-ADDER" out_port="combb[2].cin"/> </direct> - <direct input="combb[2].sum" name="MULTIPLE_INSTANCE-sum[6]" output="MULTIPLE_INSTANCE.sum[6]"/> <direct input="MULTIPLE_INSTANCE.c[3]" name="combb[3]-a" output="combb[3].a"/> <direct input="MULTIPLE_INSTANCE.d[3]" name="combb[3]-b" output="combb[3].b"/> <direct input="comba[3].cout" name="combb[3]-cin" output="combb[3].cin"> <pack_pattern in_port="comba[3].cout" name="carry-ADDER" out_port="combb[3].cin"/> </direct> - <direct input="combb[3].cout" name="MULTIPLE_INSTANCE-cout" output="MULTIPLE_INSTANCE.cout"/> - <direct input="combb[3].sum" name="MULTIPLE_INSTANCE-sum[7]" output="MULTIPLE_INSTANCE.sum[7]"/> </interconnect> </pb_type>
diff --git a/convert_and_merge_composable_tests/pack_pattern-copy-direct-ports.golden.xml b/convert_and_merge_composable_tests/pack_pattern-copy-direct-ports.golden.xml index 39b63f7..7e983c0 100644 --- a/convert_and_merge_composable_tests/pack_pattern-copy-direct-ports.golden.xml +++ b/convert_and_merge_composable_tests/pack_pattern-copy-direct-ports.golden.xml
@@ -1,11 +1,11 @@ <?xml version="1.0"?> <xml> <interconnect> - <direct input="SB_FF.D" name="VPR_FF-D" output="VPR_FF.D"> - <pack_pattern in_port="SB_FF.D" name="A" out_port="VPR_FF.D"/> - </direct> <direct input="LUTFF.FCIN" name="SB_CARRY-CI" output="SB_CARRY.CI"> <pack_pattern in_port="LUTFF.FCIN" name="CARRYCHAIN" out_port="SB_CARRY.CI"/> </direct> + <direct input="SB_FF.D" name="VPR_FF-D" output="VPR_FF.D"> + <pack_pattern in_port="SB_FF.D" name="A" out_port="VPR_FF.D"/> + </direct> </interconnect> </xml>
diff --git a/convert_and_merge_composable_tests/preserve-interconnect.golden.xml b/convert_and_merge_composable_tests/preserve-interconnect.golden.xml index 24310f9..59dbb7c 100644 --- a/convert_and_merge_composable_tests/preserve-interconnect.golden.xml +++ b/convert_and_merge_composable_tests/preserve-interconnect.golden.xml
@@ -25,11 +25,11 @@ <pack_pattern in_port="parent.ia2" name="MUX1" output="childa.i2"/> <pack_pattern in_port="parent.ia3" name="MUX2" output="childa.i2"/> </mux> + <direct input="childa.o" name="childb-i" output="childb.i"/> + <mux input="childa.o childb.o" name="childc-input" output="childc.i"/> <direct input="childa.o" name="parent-o0" output="parent.o0"> <pack_pattern in_port="childa.o" name="CARRY" out_port="parent.o0" output="parent.o0"/> </direct> - <direct input="childa.o" name="childb-i" output="childb.i"/> - <mux input="childa.o childb.o" name="childc-input" output="childc.i"/> <mux input="childa.o childb.o childc.o" name="output" output="parent.o1"/> </interconnect> </pb_type>
diff --git a/sort-tags.xsl b/sort-tags.xsl new file mode 100644 index 0000000..3507bd8 --- /dev/null +++ b/sort-tags.xsl
@@ -0,0 +1,35 @@ +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + + <xsl:include href="identity.xsl" /> + + <!-- Sort <pb_type><clock> by "name" attribute --> + <!-- Sort <pb_type><input> by "name" attribute --> + <!-- Sort <pb_type><output> by "name" attribute --> + <xsl:template match="pb_type"> + <xsl:copy> + <xsl:apply-templates select="@*"/> + <xsl:apply-templates select="clock"> + <xsl:sort select="@name" order="ascending"/> + </xsl:apply-templates> + <xsl:apply-templates select="input"> + <xsl:sort select="@name" order="ascending"/> + </xsl:apply-templates> + <xsl:apply-templates select="output"> + <xsl:sort select="@name" order="ascending"/> + </xsl:apply-templates> + <xsl:apply-templates select="pb_type"> + <xsl:sort select="@name" order="ascending"/> + </xsl:apply-templates> + <xsl:apply-templates select="*[not(self::clock or self::input or self::output or self::pb_type)]"/> + </xsl:copy> + </xsl:template> + <!-- Sort <interconnect><XXX> tags by output - direct first then muxes, finally input --> + <xsl:template match="interconnect"> + <xsl:copy> + <xsl:apply-templates> + <xsl:sort select="concat(@output, name(), @input)" order="ascending"/> + </xsl:apply-templates> + </xsl:copy> + </xsl:template> + +</xsl:stylesheet>