xml: More tests for convert_and_merge script. * Full test which should include most features at once. * Fixing pack-pattern tests. * Update composable tests. Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
diff --git a/CMakeLists.txt b/CMakeLists.txt index 3786bf8..0f8cf86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -1,9 +1,13 @@ include("xsl_tests.cmake") +# Test individual parts of the transform xsl_golden_test(NAME "attribute-cleanup") -xsl_golden_test(NAME "composable-interconnect-fasm-mux-levels") 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") xsl_golden_test(NAME "composable-loc-implicit-parent") +xsl_golden_test(NAME "explicit-port") xsl_golden_test(NAME "pack_pattern-merge-type-into-name") xsl_golden_test(NAME "pack_pattern-strip-from-pb_type-ports") -xsl_golden_test(NAME "xml-explicit-port") +# Test everything used together in one big file +add_file_target(FILE "full-test-inner.xml" SCANNER_TYPE xml) +xsl_golden_test(NAME "full-test")
diff --git a/attribute-cleanup.xml b/attribute-cleanup.xml index decb65e..ed9a595 100644 --- a/attribute-cleanup.xml +++ b/attribute-cleanup.xml
@@ -1,4 +1,9 @@ <?xml version="1.0"?> +<!-- Clean up attributes + * Normalize space around attributes on a tag + * Sort the attributes by name + * Strip xml:base attribute + --> <xml> <tag b="1" c="123" x="abc" /> <tag c="1" d="123" x="abc" />
diff --git a/composable-interconnect-fasm-mux.golden.xml b/composable-interconnect-fasm-mux.golden.xml new file mode 100644 index 0000000..4883664 --- /dev/null +++ b/composable-interconnect-fasm-mux.golden.xml
@@ -0,0 +1,24 @@ +<?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 name="parent-o" output="parent.o" input="child.o"/> + <mux name="mux1" input="parent.i0 parent.i1" output="child.i"> + <metadata> + <meta name="fasm_mux"> + parent.i0 : a1 + parent.i1 : b1 + </meta> + <meta name="fasm_name">fasm_name</meta> + </metadata> + </mux> + </interconnect> + </pb_type> +</xml>
diff --git a/composable-interconnect-implicit-parent.golden.xml b/composable-interconnect-implicit-parent.golden.xml new file mode 100644 index 0000000..da10541 --- /dev/null +++ b/composable-interconnect-implicit-parent.golden.xml
@@ -0,0 +1,53 @@ +<?xml version="1.0"?> +<xml> + <pb_type name="parent"> + <input name="ia1"/> + <input name="ia2"/> + <input name="ia3"/> + <output name="o0"/> + <output name="o1"/> + <pb_type name="childa"> + <input name="i1"/> + <input name="i2"/> + <output name="o"/> + </pb_type> + <pb_type name="childb"> + <input name="i"/> + <output name="o"/> + </pb_type> + <pb_type name="childc"> + <input name="i"/> + <output name="o"/> + </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> + <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> + </interconnect> + </pb_type> +</xml>
diff --git a/composable-interconnect-implicit-parent.xml b/composable-interconnect-implicit-parent.xml index a9ab9f5..5d8a28c 100644 --- a/composable-interconnect-implicit-parent.xml +++ b/composable-interconnect-implicit-parent.xml
@@ -1,25 +1,95 @@ <?xml version="1.0"?> +<!-- + Convert "implicit" parent specification for interconnect tags. + + Convert + <interconnect><direct><port type='input' ...><port type='output' ...></direct><YYY../></interconnect> + to + <interconnect><direct input='...' name='xxx-xxx' output='...'><YYY../></direct></interconnect> + + Convert + <interconnect><mux><port type='input' ...><port type='input' ...><port type='output' ...></mux><YYY../></interconnect> + to + <interconnect><mux input='in1 in2' name='xxx-xxx' output='...'><YYY../></mux></interconnect> + +This example below is connected as follows; + ┌───────────────────────────────────────────────────────────────────┐ + │ │ + │ ┌────────────┐ │ + ia1│──────>│i1 │ │ + │ │ │ │ + │ │ childa o│─┬───────────────────────────────────────────>│o0 + ia2│──>│╲ │ │ │ │ + │ │├─>│i2 │ │ │ + ia3│──>│╱ └────────────┘ │ ┌──────────┐ │ + │ ├─>│i childb o│─┬──>│╲ │ + │ │ └──────────┘ │ ││ ┌──────────┐ │ + │ │ │ │├──>│i childc o│──>│╲ │ + │ ├──────────────────>││ └──────────┘ ││ │ + │ │ │ │╱ ││ │ + │ │ │ ╭────────>│├──>│o1 + │ │ ╰─────────────╯ ││ │ + │ │ ││ │ + │ ╰──────────────────────────────────────>│/ │ + │ │ + └───────────────────────────────────────────────────────────────────┘ + --> <xml> <pb_type name="parent"> - <input name="i0" /> - <input name="i1" /> - <output name="o" /> - - <pb_type name="child"> - <input name="i" /> - <output name="o" /> + <input name="ia1"/> + <input name="ia2"/> + <input name="ia3"/> + <output name="o0"/> + <output name="o1"/> + <pb_type name="childa"> + <input name="i1"/> + <input name="i2"/> + <output name="o"/> </pb_type> - + <pb_type name="childb"> + <input name="i"/> + <output name="o"/> + </pb_type> + <pb_type name="childc"> + <input name="i"/> + <output name="o"/> + </pb_type> <interconnect> - <direct> - <port type="output" name="o" /> - <port type="input" from="child" name="o" /> - </direct> - <mux name="mux1"> - <port type="input" name="i0" /> - <port type="input" name="i1" /> - <port type="output" from="child" name="i" /> - </mux> - </interconnect> + <!-- Direct parent -> child --> + <direct> + <port type="input" name="ia1" /> + <port type="output" from="childa" name="i1" /> + </direct> + <!-- Mux parent -> child --> + <mux name="childa-input-i2"> + <port type="input" name="ia2" /> + <port type="input" name="ia3" /> + <port type="output" from="childa" name="i2" /> + </mux> + <!-- Direct parent -> child --> + <direct> + <port type="input" from="childa" name="o" /> + <port type="output" name="o0" /> + </direct> + <!-- Direct child -> child --> + <direct> + <port type="input" from="childa" name="o" /> + <port type="output" from="childb" name="i" /> + </direct> + <!-- Mux child -> child --> + <mux name="childc-input"> + <port type="input" from="childa" name="o" /> + <port type="input" from="childb" name="o" /> + <port type="output" from="childc" name="i" /> + </mux> + <!-- Mux child -> parent --> + <mux name="output"> + <port type="input" from="childa" name="o" /> + <port type="input" from="childb" name="o" /> + <port type="input" from="childc" name="o" /> + <port type="output" name="o1" /> + </mux> + </interconnect> </pb_type> </xml> +
diff --git a/composable-loc-implicit-parent.golden.xml b/composable-loc-implicit-parent.golden.xml new file mode 100644 index 0000000..0f993d1 --- /dev/null +++ b/composable-loc-implicit-parent.golden.xml
@@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<xml> + <pb_type name="parent"> + <input name="i" width="2"/> + <loc> + parent.o + parent.i[0] + parent.i[1] + </loc> + </pb_type> +</xml>
diff --git a/composable-loc-implicit-parent.xml b/composable-loc-implicit-parent.xml index d148f05..9440379 100644 --- a/composable-loc-implicit-parent.xml +++ b/composable-loc-implicit-parent.xml
@@ -1,4 +1,10 @@ <?xml version="1.0"?> +<!-- + Convert + <loc ...><port ...><port ...></loc> + to + <loc ...>BLOCK.PORT BLOCK.PORT</loc> + --> <xml> <pb_type name="parent"> <input name="i" width="2" />
diff --git a/explicit-port.golden.xml b/explicit-port.golden.xml new file mode 100644 index 0000000..59cdf12 --- /dev/null +++ b/explicit-port.golden.xml
@@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<xml> + <port-value-test o="port-name"/> + <port-value-test o="port-name[8]"/> + <port-value-test o="port-name[8:4]"/> +</xml>
diff --git a/explicit-port.xml b/explicit-port.xml new file mode 100644 index 0000000..d078fea --- /dev/null +++ b/explicit-port.xml
@@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<!-- Convert + * <port name=XXX> to XXX + * <port name=XXX bit=Y> to XXX[Y] + * <port name=XXX bit-msb=M bit-lsb=L> to XXX[M:L] + --> +<xml> + <port-value-test><port name="port-name" /></port-value-test> + <port-value-test><port name="port-name" bit="8" /></port-value-test> + <port-value-test><port name="port-name" bit-msb="8" bit-lsb="4" /></port-value-test> +</xml>
diff --git a/full-test-inner.xml b/full-test-inner.xml new file mode 100644 index 0000000..5b44106 --- /dev/null +++ b/full-test-inner.xml
@@ -0,0 +1,13 @@ +<pb_type xmlns:xi="http://www.w3.org/2001/XInclude" name="ADDER" blif_model=".subckt adder" num_pb="1"> + <input name="a" num_pins="1"/> + <input name="b" num_pins="1"/> + <input name="cin" num_pins="1"/> + <output name="cout" num_pins="1"/> + <output name="sum" num_pins="1"/> + <delay_constant max="300e-12" in_port="a" out_port="cout"/> + <delay_constant max="300e-12" in_port="b" out_port="cout"/> + <delay_constant max="10e-12" in_port="cin" out_port="cout"/> + <delay_constant max="300e-12" in_port="a" out_port="sum"/> + <delay_constant max="300e-12" in_port="b" out_port="sum"/> + <delay_constant max="300e-12" in_port="cin" out_port="sum"/> +</pb_type>
diff --git a/full-test.golden.xml b/full-test.golden.xml new file mode 100644 index 0000000..c94d281 --- /dev/null +++ b/full-test.golden.xml
@@ -0,0 +1,79 @@ +<?xml version="1.0"?> +<pb_type xmlns:xi="http://www.w3.org/2001/XInclude" name="MULTIPLE_INSTANCE" num_pb="1"> + <input name="a" num_pins="4"/> + <input name="b" num_pins="4"/> + <input name="c" num_pins="4"/> + <input name="cin" num_pins="1"/> + <input name="d" num_pins="4"/> + <output name="cout" num_pins="1"/> + <output name="sum" num_pins="8"/> + <pb_type blif_model=".subckt adder" name="comba" num_pb="4"> + <input name="a" num_pins="1"/> + <input name="b" num_pins="1"/> + <input name="cin" num_pins="1"/> + <output name="cout" num_pins="1"/> + <output name="sum" num_pins="1"/> + <delay_constant in_port="comba.a" max="300e-12" out_port="comba.cout"/> + <delay_constant in_port="comba.b" max="300e-12" out_port="comba.cout"/> + <delay_constant in_port="comba.cin" max="10e-12" out_port="comba.cout"/> + <delay_constant in_port="comba.a" max="300e-12" out_port="comba.sum"/> + <delay_constant in_port="comba.b" max="300e-12" out_port="comba.sum"/> + <delay_constant in_port="comba.cin" max="300e-12" out_port="comba.sum"/> + </pb_type> + <pb_type blif_model=".subckt adder" name="combb" num_pb="4"> + <input name="a" num_pins="1"/> + <input name="b" num_pins="1"/> + <input name="cin" num_pins="1"/> + <output name="cout" num_pins="1"/> + <output name="sum" num_pins="1"/> + <delay_constant in_port="combb.a" max="300e-12" out_port="combb.cout"/> + <delay_constant in_port="combb.b" max="300e-12" out_port="combb.cout"/> + <delay_constant in_port="combb.cin" max="10e-12" out_port="combb.cout"/> + <delay_constant in_port="combb.a" max="300e-12" out_port="combb.sum"/> + <delay_constant in_port="combb.b" max="300e-12" out_port="combb.sum"/> + <delay_constant in_port="combb.cin" max="300e-12" out_port="combb.sum"/> + </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="comba[3].sum" name="MULTIPLE_INSTANCE-sum[3]" output="MULTIPLE_INSTANCE.sum[3]"/> + <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.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.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.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 name="carry-ADDER" in_port="comba[0].cout" 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 name="carry-ADDER" in_port="comba[1].cout" 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 name="carry-ADDER" in_port="comba[2].cout" 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 name="carry-ADDER" in_port="comba[3].cout" 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/full-test.xml b/full-test.xml new file mode 100644 index 0000000..ca3ef54 --- /dev/null +++ b/full-test.xml
@@ -0,0 +1,166 @@ +<?xml version='1.0' encoding='utf-8'?> +<pb_type xmlns:xi="http://www.w3.org/2001/XInclude" name="MULTIPLE_INSTANCE" num_pb="1"> + <input name="a" num_pins="4"/> + <input name="b" num_pins="4"/> + <input name="c" num_pins="4"/> + <input name="cin" num_pins="1"/> + <input name="d" num_pins="4"/> + <output name="cout" num_pins="1"/> + <output name="sum" num_pins="8"/> + <pb_type blif_model=".subckt adder" name="comba" num_pb="4"> + <xi:include href="full-test-inner.xml" xpointer="xpointer(pb_type/child::node())"/> + </pb_type> + <pb_type blif_model=".subckt adder" name="combb" num_pb="4"> + <xi:include href="full-test-inner.xml" xpointer="xpointer(pb_type/child::node())"/> + </pb_type> + <interconnect> + <direct> + <port name="a[3]" type="input"/> + <port from="comba[3]" name="a" type="output"/> + </direct> + <direct> + <port name="b[3]" type="input"/> + <port from="comba[3]" name="b" type="output"/> + </direct> + <direct> + <port name="cin" type="input"/> + <port from="comba[0]" name="cin" type="output"/> + </direct> + <direct> + <port name="cin" type="input"/> + <port from="comba[1]" name="cin" type="output"/> + </direct> + <direct> + <port name="cin" type="input"/> + <port from="comba[2]" name="cin" type="output"/> + </direct> + <direct> + <port name="cin" type="input"/> + <port from="comba[3]" name="cin" type="output"/> + </direct> + <direct> + <port from="comba[3]" name="sum" type="input"/> + <port name="sum[3]" type="output"/> + </direct> + <direct> + <port name="a[0]" type="input"/> + <port from="comba[0]" name="a" type="output"/> + </direct> + <direct> + <port name="b[0]" type="input"/> + <port from="comba[0]" name="b" type="output"/> + </direct> + <direct> + <port from="comba[0]" name="sum" type="input"/> + <port name="sum[0]" type="output"/> + </direct> + <direct> + <port name="a[1]" type="input"/> + <port from="comba[1]" name="a" type="output"/> + </direct> + <direct> + <port name="b[1]" type="input"/> + <port from="comba[1]" name="b" type="output"/> + </direct> + <direct> + <port from="comba[1]" name="sum" type="input"/> + <port name="sum[1]" type="output"/> + </direct> + <direct> + <port name="a[2]" type="input"/> + <port from="comba[2]" name="a" type="output"/> + </direct> + <direct> + <port name="b[2]" type="input"/> + <port from="comba[2]" name="b" type="output"/> + </direct> + <direct> + <port from="comba[2]" name="sum" type="input"/> + <port name="sum[2]" type="output"/> + </direct> + <direct> + <port name="c[0]" type="input"/> + <port from="combb[0]" name="a" type="output"/> + </direct> + <direct> + <port name="d[0]" type="input"/> + <port from="combb[0]" name="b" type="output"/> + </direct> + <direct> + <port from="comba[0]" name="cout" type="input"/> + <port from="combb[0]" name="cin" type="output"/> + <pack_pattern name="ADDER" type="carry"> + <port from="comba[0]" name="cout" type="input"/> + <port from="combb[0]" name="cin" type="output"/> + </pack_pattern> + </direct> + <direct> + <port from="combb[0]" name="sum" type="input"/> + <port name="sum[4]" type="output"/> + </direct> + <direct> + <port name="c[1]" type="input"/> + <port from="combb[1]" name="a" type="output"/> + </direct> + <direct> + <port name="d[1]" type="input"/> + <port from="combb[1]" name="b" type="output"/> + </direct> + <direct> + <port from="comba[1]" name="cout" type="input"/> + <port from="combb[1]" name="cin" type="output"/> + <pack_pattern name="ADDER" type="carry"> + <port from="comba[1]" name="cout" type="input"/> + <port from="combb[1]" name="cin" type="output"/> + </pack_pattern> + </direct> + <direct> + <port from="combb[1]" name="sum" type="input"/> + <port name="sum[5]" type="output"/> + </direct> + <direct> + <port name="c[2]" type="input"/> + <port from="combb[2]" name="a" type="output"/> + </direct> + <direct> + <port name="d[2]" type="input"/> + <port from="combb[2]" name="b" type="output"/> + </direct> + <direct> + <port from="comba[2]" name="cout" type="input"/> + <port from="combb[2]" name="cin" type="output"/> + <pack_pattern name="ADDER" type="carry"> + <port from="comba[2]" name="cout" type="input"/> + <port from="combb[2]" name="cin" type="output"/> + </pack_pattern> + </direct> + <direct> + <port from="combb[2]" name="sum" type="input"/> + <port name="sum[6]" type="output"/> + </direct> + <direct> + <port name="c[3]" type="input"/> + <port from="combb[3]" name="a" type="output"/> + </direct> + <direct> + <port name="d[3]" type="input"/> + <port from="combb[3]" name="b" type="output"/> + </direct> + <direct> + <port from="comba[3]" name="cout" type="input"/> + <port from="combb[3]" name="cin" type="output"/> + <pack_pattern name="ADDER" type="carry"> + <port from="comba[3]" name="cout" type="input"/> + <port from="combb[3]" name="cin" type="output"/> + </pack_pattern> + </direct> + <direct> + <port from="combb[3]" name="cout" type="input"/> + <port name="cout" type="output"/> + </direct> + <direct> + <port from="combb[3]" name="sum" type="input"/> + <port name="sum[7]" type="output"/> + </direct> + </interconnect> +</pb_type>
diff --git a/pack_pattern-merge-type-into-name.golden.xml b/pack_pattern-merge-type-into-name.golden.xml index 34abd19..f93626e 100644 --- a/pack_pattern-merge-type-into-name.golden.xml +++ b/pack_pattern-merge-type-into-name.golden.xml
@@ -2,10 +2,10 @@ <xml> <pb_type> <direct> - <pack_pattern name="carry-B"/> + <pack_pattern name="chain-B"/> </direct> <mux> - <pack_pattern name="pack-A"> + <pack_pattern name="molecule-A"> <innertag/> </pack_pattern> </mux>
diff --git a/pack_pattern-merge-type-into-name.xml b/pack_pattern-merge-type-into-name.xml index ae102ea..040ce3a 100644 --- a/pack_pattern-merge-type-into-name.xml +++ b/pack_pattern-merge-type-into-name.xml
@@ -1,11 +1,21 @@ <?xml version="1.0"?> +<!-- + Convert + <pack_pattern name="xxx" type="yyy + to + <pack_pattern name="yyy-xxx" + + The idea is that eventually VPR will be explicit about chain and molecule + patterns. + + --> <xml> <pb_type> <direct> - <pack_pattern name="B" type="carry" /> + <pack_pattern name="B" type="chain" /> </direct> <mux> - <pack_pattern name="A" type="pack"> + <pack_pattern name="A" type="molecule" > <innertag /> </pack_pattern> </mux>
diff --git a/pack_pattern-strip-from-pb_type-ports.xml b/pack_pattern-strip-from-pb_type-ports.xml index 988de09..da6866a 100644 --- a/pack_pattern-strip-from-pb_type-ports.xml +++ b/pack_pattern-strip-from-pb_type-ports.xml
@@ -1,4 +1,12 @@ <?xml version="1.0"?> +<!-- + Strip pack_pattern's from input/output tags on pb_types. + + This allows us to add the pack_pattern annotation at the leaf values which + don't have an interconnect. It makes it explicit which ports are involved in + the chain (and hence won't end up on fabric). + + --> <xml> <pb_type> <input name="in1">
diff --git a/xml-explicit-port.golden.xml b/xml-explicit-port.golden.xml deleted file mode 100644 index 2bd3d8f..0000000 --- a/xml-explicit-port.golden.xml +++ /dev/null
@@ -1,6 +0,0 @@ -<?xml version="1.0"?> -<xml> -port-name -port-name[8] -port-name[8:4] -</xml>
diff --git a/xml-explicit-port.xml b/xml-explicit-port.xml index a58530f..d078fea 100644 --- a/xml-explicit-port.xml +++ b/xml-explicit-port.xml
@@ -1,6 +1,11 @@ <?xml version="1.0"?> +<!-- Convert + * <port name=XXX> to XXX + * <port name=XXX bit=Y> to XXX[Y] + * <port name=XXX bit-msb=M bit-lsb=L> to XXX[M:L] + --> <xml> - <port name="port-name" /> - <port name="port-name" bit="8" /> - <port name="port-name" bit_msb="8" bit_lsb="4" /> + <port-value-test><port name="port-name" /></port-value-test> + <port-value-test><port name="port-name" bit="8" /></port-value-test> + <port-value-test><port name="port-name" bit-msb="8" bit-lsb="4" /></port-value-test> </xml>
diff --git a/xsl_tests.cmake b/xsl_tests.cmake index 65d02d1..e50c50b 100644 --- a/xsl_tests.cmake +++ b/xsl_tests.cmake
@@ -5,19 +5,20 @@ # ~~~ # XSL_GOLDEN_TEST( # NAME name - # TOP_MODULE name # ) # ~~~ # - # This function is to test both the pb_type XML generation. It will call V2X_TEST_GENERIC multiple times first with the field TYPE set to `pb_type` - # then with `model` + # This function is to test the xml_canonicalize_merge function which uses the + # convert_and_merge_composable_fpga_architecture.xsl script correctly + # transforms XML by comparing against a golden output file. # # NAME name of the test. - # TOP_MODULE name of the top verilog module that has to be tested. # - # Usage: v2x_test_model(NAME <test_name> TOP_MODULE <top_module.v>) (All fields are required) + # Usage: xsl_golden_testl(NAME <test_name>) - set(oneValueArgs NAME TOP_MODULE) + set(options "") + set(oneValueArgs NAME) + set(multiValueArgs "") cmake_parse_arguments( XSL_GOLDEN_TEST "${options}" @@ -27,13 +28,17 @@ ) set(NAME ${XSL_GOLDEN_TEST_NAME}) - set(TOP_MODULE ${XSL_GOLDEN_TEST_TOP_MODULE}) set(INPUT_XML ${NAME}.xml) add_file_target(FILE ${INPUT_XML} SCANNER_TYPE xml) set(ACTUAL_XML ${NAME}.actual.xml) - xml_canonicalize_merge(NAME merge_${ACTUAL_XML} FILE ${INPUT_XML} OUTPUT ${ACTUAL_XML}) + xml_canonicalize_merge( + NAME merge_${ACTUAL_XML} + FILE ${INPUT_XML} + OUTPUT ${ACTUAL_XML} + EXTRA_ARGUMENTS "-param" "strip_comments" "1" + ) set(GOLDEN_XML ${NAME}.golden.xml) add_file_target(FILE ${GOLDEN_XML} SCANNER_TYPE xml)