From 6069715c9ee9710cf14945311cca222e27482610 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 8 Dec 2013 15:12:32 +0100 Subject: [PATCH] Finished AppNote 011 --- manual/APPNOTE_011_Design_Investigation.tex | 4 +- .../.gitignore | 19 --- .../cmos_00.dot | 34 +++++ .../cmos_01.dot | 23 +++ .../example_00.dot | 23 +++ .../example_01.dot | 33 +++++ .../example_02.dot | 20 +++ .../example_03.dot | 11 ++ .../APPNOTE_011_Design_Investigation/make.sh | 2 +- .../memdemo_00.dot | 138 ++++++++++++++++++ .../memdemo_01.dot | 29 ++++ .../splice.dot | 39 +++++ .../submod_00.dot | 45 ++++++ .../submod_01.dot | 87 +++++++++++ .../submod_02.dot | 33 +++++ .../submod_03.dot | 26 ++++ .../sumprod_00.dot | 18 +++ .../sumprod_01.dot | 15 ++ .../sumprod_02.dot | 5 + .../sumprod_03.dot | 11 ++ .../sumprod_04.dot | 11 ++ .../sumprod_05.dot | 15 ++ 22 files changed, 619 insertions(+), 22 deletions(-) delete mode 100644 manual/APPNOTE_011_Design_Investigation/.gitignore create mode 100644 manual/APPNOTE_011_Design_Investigation/cmos_00.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/cmos_01.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/example_00.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/example_01.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/example_02.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/example_03.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/memdemo_00.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/memdemo_01.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/splice.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/submod_00.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/submod_01.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/submod_02.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/submod_03.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/sumprod_00.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/sumprod_01.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/sumprod_02.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/sumprod_03.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/sumprod_04.dot create mode 100644 manual/APPNOTE_011_Design_Investigation/sumprod_05.dot diff --git a/manual/APPNOTE_011_Design_Investigation.tex b/manual/APPNOTE_011_Design_Investigation.tex index 9a8f604b6..c04811864 100644 --- a/manual/APPNOTE_011_Design_Investigation.tex +++ b/manual/APPNOTE_011_Design_Investigation.tex @@ -71,8 +71,8 @@ commands for evaluating circuits and solving SAT problems. \section{Installation and Prerequisites} -This Application Note is based on the Yosys \cite{yosys} GIT Rev. {\tt \FIXME} from -\FIXME{}. The {\tt README} file covers how to install Yosys. The +This Application Note is based on the Yosys \cite{yosys} GIT Rev. {\tt 2b90ba1} from +2013-12-08. The {\tt README} file covers how to install Yosys. The {\tt show} command requires a working installation of GraphViz \cite{graphviz} for generating the actual circuit diagrams. Yosys must be build with Qt support for the built-in SVG viewer. Alternatively an external viewer can be diff --git a/manual/APPNOTE_011_Design_Investigation/.gitignore b/manual/APPNOTE_011_Design_Investigation/.gitignore deleted file mode 100644 index 85e44618e..000000000 --- a/manual/APPNOTE_011_Design_Investigation/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -example_00.dot -example_01.dot -example_02.dot -example_03.dot -cmos_00.dot -cmos_01.dot -splice.dot -sumprod_00.dot -sumprod_01.dot -sumprod_02.dot -sumprod_03.dot -sumprod_04.dot -sumprod_05.dot -memdemo_00.dot -memdemo_01.dot -submod_00.dot -submod_01.dot -submod_02.dot -submod_03.dot diff --git a/manual/APPNOTE_011_Design_Investigation/cmos_00.dot b/manual/APPNOTE_011_Design_Investigation/cmos_00.dot new file mode 100644 index 000000000..85ca78492 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/cmos_00.dot @@ -0,0 +1,34 @@ +digraph "cmos_demo" { +rankdir="LR"; +remincross=true; +n4 [ shape=octagon, label="a", color="black", fontcolor="black" ]; +n5 [ shape=octagon, label="b", color="black", fontcolor="black" ]; +n6 [ shape=octagon, label="y", color="black", fontcolor="black" ]; +c10 [ shape=record, label="{{ A| B| Y}|$g0\nNOR|{}}" ]; +c11 [ shape=record, label="{{ A| Y}|$g1\nNOT|{}}" ]; +c12 [ shape=record, label="{{ A| Y}|$g2\nNOT|{}}" ]; +c13 [ shape=record, label="{{ A| B| Y}|$g3\nNOR|{}}" ]; +x0 [ shape=record, style=rounded, label=" 1:1 - 0:0 " ]; +x0:e -> c13:p9:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""]; +c14 [ shape=record, label="{{ A| B| Y}|$g4\nNOR|{}}" ]; +x1 [ shape=record, style=rounded, label=" 1:1 - 0:0 " ]; +x1:e -> c14:p8:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""]; +x2 [ shape=record, style=rounded, label=" 0:0 - 0:0 " ]; +x2:e -> c14:p9:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""]; +n1 [ shape=diamond, label="$n4" ]; +n1:e -> c10:p9:w [color="black", label=""]; +n1:e -> c14:p7:w [color="black", label=""]; +n2 [ shape=diamond, label="$n5" ]; +n2:e -> c11:p9:w [color="black", label=""]; +n2:e -> c13:p7:w [color="black", label=""]; +n3 [ shape=diamond, label="$n6_1" ]; +n3:e -> c12:p9:w [color="black", label=""]; +n3:e -> c13:p8:w [color="black", label=""]; +n4:e -> c10:p8:w [color="black", label=""]; +n4:e -> c12:p7:w [color="black", label=""]; +n5:e -> c10:p7:w [color="black", label=""]; +n5:e -> c11:p7:w [color="black", label=""]; +n6:e -> x0:s0:w [color="black", label=""]; +n6:e -> x1:s0:w [color="black", label=""]; +n6:e -> x2:s0:w [color="black", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/cmos_01.dot b/manual/APPNOTE_011_Design_Investigation/cmos_01.dot new file mode 100644 index 000000000..de9af1704 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/cmos_01.dot @@ -0,0 +1,23 @@ +digraph "cmos_demo" { +rankdir="LR"; +remincross=true; +n4 [ shape=octagon, label="a", color="black", fontcolor="black" ]; +n5 [ shape=octagon, label="b", color="black", fontcolor="black" ]; +n6 [ shape=octagon, label="y[0]", color="black", fontcolor="black" ]; +n7 [ shape=octagon, label="y[1]", color="black", fontcolor="black" ]; +c11 [ shape=record, label="{{ A| B}|$g0\nNOR|{ Y}}" ]; +c12 [ shape=record, label="{{ A}|$g1\nNOT|{ Y}}" ]; +c13 [ shape=record, label="{{ A}|$g2\nNOT|{ Y}}" ]; +c14 [ shape=record, label="{{ A| B}|$g3\nNOR|{ Y}}" ]; +c15 [ shape=record, label="{{ A| B}|$g4\nNOR|{ Y}}" ]; +c11:p10:e -> c15:p8:w [color="black", label=""]; +c12:p10:e -> c14:p8:w [color="black", label=""]; +c13:p10:e -> c14:p9:w [color="black", label=""]; +n4:e -> c11:p9:w [color="black", label=""]; +n4:e -> c13:p8:w [color="black", label=""]; +n5:e -> c11:p8:w [color="black", label=""]; +n5:e -> c12:p8:w [color="black", label=""]; +c15:p10:e -> n6:w [color="black", label=""]; +c14:p10:e -> n7:w [color="black", label=""]; +n7:e -> c15:p9:w [color="black", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/example_00.dot b/manual/APPNOTE_011_Design_Investigation/example_00.dot new file mode 100644 index 000000000..b38862c4b --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/example_00.dot @@ -0,0 +1,23 @@ +digraph "example" { +rankdir="LR"; +remincross=true; +n4 [ shape=octagon, label="a", color="black", fontcolor="black" ]; +n5 [ shape=octagon, label="b", color="black", fontcolor="black" ]; +n6 [ shape=octagon, label="c", color="black", fontcolor="black" ]; +n7 [ shape=octagon, label="clk", color="black", fontcolor="black" ]; +n8 [ shape=octagon, label="y", color="black", fontcolor="black" ]; +c12 [ shape=record, label="{{ A| B}|$2\n$add|{ Y}}" ]; +v0 [ label="2'00" ]; +c14 [ shape=record, label="{{ A| B| S}|$3\n$mux|{ Y}}" ]; +p1 [shape=box, style=rounded, label="PROC $1\nexample.v:3"]; +c12:p11:e -> c14:p10:w [color="black", style="setlinewidth(3)", label=""]; +c14:p11:e -> p1:w [color="black", style="setlinewidth(3)", label=""]; +n4:e -> c12:p9:w [color="black", label=""]; +n5:e -> c12:p10:w [color="black", label=""]; +n6:e -> c14:p13:w [color="black", label=""]; +n6:e -> p1:w [color="black", label=""]; +n7:e -> p1:w [color="black", label=""]; +p1:e -> n8:w [color="black", style="setlinewidth(3)", label=""]; +n8:e -> p1:w [color="black", style="setlinewidth(3)", label=""]; +v0:e -> c14:p9:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/example_01.dot b/manual/APPNOTE_011_Design_Investigation/example_01.dot new file mode 100644 index 000000000..e2e3f02d4 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/example_01.dot @@ -0,0 +1,33 @@ +digraph "example" { +rankdir="LR"; +remincross=true; +n6 [ shape=octagon, label="a", color="black", fontcolor="black" ]; +n7 [ shape=octagon, label="b", color="black", fontcolor="black" ]; +n8 [ shape=octagon, label="c", color="black", fontcolor="black" ]; +n9 [ shape=octagon, label="clk", color="black", fontcolor="black" ]; +n10 [ shape=octagon, label="y", color="black", fontcolor="black" ]; +c14 [ shape=record, label="{{ A| B}|$2\n$add|{ Y}}" ]; +c18 [ shape=record, label="{{ CLK| D}|$7\n$dff|{ Q}}" ]; +c20 [ shape=record, label="{{ A| B| S}|$5\n$mux|{ Y}}" ]; +v0 [ label="2'00" ]; +c21 [ shape=record, label="{{ A| B| S}|$3\n$mux|{ Y}}" ]; +x1 [shape=box, style=rounded, label="BUF"]; +x2 [shape=box, style=rounded, label="BUF"]; +n1 [ shape=diamond, label="$0\\y[1:0]" ]; +x2:e:e -> n1:w [color="black", style="setlinewidth(3)", label=""]; +c18:p17:e -> n10:w [color="black", style="setlinewidth(3)", label=""]; +n10:e -> c20:p11:w [color="black", style="setlinewidth(3)", label=""]; +c14:p13:e -> c21:p12:w [color="black", style="setlinewidth(3)", label=""]; +n3 [ shape=point ]; +c20:p13:e -> n3:w [color="black", style="setlinewidth(3)", label=""]; +n3:e -> c18:p16:w [color="black", style="setlinewidth(3)", label=""]; +n3:e -> x2:w:w [color="black", style="setlinewidth(3)", label=""]; +x1:e:e -> c20:p19:w [color="black", label=""]; +c21:p13:e -> c20:p12:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> c14:p11:w [color="black", label=""]; +n7:e -> c14:p12:w [color="black", label=""]; +n8:e -> c21:p19:w [color="black", label=""]; +n8:e -> x1:w:w [color="black", label=""]; +n9:e -> c18:p15:w [color="black", label=""]; +v0:e -> c21:p11:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/example_02.dot b/manual/APPNOTE_011_Design_Investigation/example_02.dot new file mode 100644 index 000000000..4b57f89c1 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/example_02.dot @@ -0,0 +1,20 @@ +digraph "example" { +rankdir="LR"; +remincross=true; +n3 [ shape=octagon, label="a", color="black", fontcolor="black" ]; +n4 [ shape=octagon, label="b", color="black", fontcolor="black" ]; +n5 [ shape=octagon, label="c", color="black", fontcolor="black" ]; +n6 [ shape=octagon, label="clk", color="black", fontcolor="black" ]; +n7 [ shape=octagon, label="y", color="black", fontcolor="black" ]; +c11 [ shape=record, label="{{ A| B}|$2\n$add|{ Y}}" ]; +c15 [ shape=record, label="{{ CLK| D}|$7\n$dff|{ Q}}" ]; +c17 [ shape=record, label="{{ A| B| S}|$5\n$mux|{ Y}}" ]; +c17:p10:e -> c15:p13:w [color="black", style="setlinewidth(3)", label=""]; +c11:p10:e -> c17:p9:w [color="black", style="setlinewidth(3)", label=""]; +n3:e -> c11:p8:w [color="black", label=""]; +n4:e -> c11:p9:w [color="black", label=""]; +n5:e -> c17:p16:w [color="black", label=""]; +n6:e -> c15:p12:w [color="black", label=""]; +c15:p14:e -> n7:w [color="black", style="setlinewidth(3)", label=""]; +n7:e -> c17:p8:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/example_03.dot b/manual/APPNOTE_011_Design_Investigation/example_03.dot new file mode 100644 index 000000000..6c00c29aa --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/example_03.dot @@ -0,0 +1,11 @@ +digraph "example" { +rankdir="LR"; +remincross=true; +v0 [ label="a" ]; +v1 [ label="b" ]; +v2 [ label="$2_Y" ]; +c4 [ shape=record, label="{{ A| B}|$2\n$add|{ Y}}" ]; +v0:e -> c4:p1:w [color="black", label=""]; +v1:e -> c4:p2:w [color="black", label=""]; +c4:p3:e -> v2:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/make.sh b/manual/APPNOTE_011_Design_Investigation/make.sh index 598ff88d9..fa3ca70eb 100644 --- a/manual/APPNOTE_011_Design_Investigation/make.sh +++ b/manual/APPNOTE_011_Design_Investigation/make.sh @@ -1,6 +1,6 @@ #!/bin/bash set -ex -if true; then +if false; then rm -f *.dot ../../yosys example.ys ../../yosys -p 'proc; opt; show -format dot -prefix splice' splice.v diff --git a/manual/APPNOTE_011_Design_Investigation/memdemo_00.dot b/manual/APPNOTE_011_Design_Investigation/memdemo_00.dot new file mode 100644 index 000000000..9e81edbce --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/memdemo_00.dot @@ -0,0 +1,138 @@ +digraph "memdemo" { +rankdir="LR"; +remincross=true; +n24 [ shape=octagon, label="clk", color="black", fontcolor="black" ]; +n25 [ shape=octagon, label="d", color="black", fontcolor="black" ]; +n26 [ shape=diamond, label="mem[0]", color="black", fontcolor="black" ]; +n27 [ shape=diamond, label="mem[1]", color="black", fontcolor="black" ]; +n28 [ shape=diamond, label="mem[2]", color="black", fontcolor="black" ]; +n29 [ shape=diamond, label="mem[3]", color="black", fontcolor="black" ]; +n30 [ shape=diamond, label="s1", color="black", fontcolor="black" ]; +n31 [ shape=diamond, label="s2", color="black", fontcolor="black" ]; +n32 [ shape=octagon, label="y", color="black", fontcolor="black" ]; +c36 [ shape=record, label="{{ A| B}|$28\n$add|{ Y}}" ]; +c37 [ shape=record, label="{{ A| B}|$31\n$add|{ Y}}" ]; +c38 [ shape=record, label="{{ A| B}|$34\n$add|{ Y}}" ]; +c39 [ shape=record, label="{{ A| B}|$37\n$add|{ Y}}" ]; +c41 [ shape=record, label="{{ A| B| S}|$110\n$mux|{ Y}}" ]; +x0 [ shape=record, style=rounded, label=" 1:1 - 0:0 " ]; +x0:e -> c41:p40:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""]; +c42 [ shape=record, label="{{ A| B| S}|$113\n$mux|{ Y}}" ]; +x1 [ shape=record, style=rounded, label=" 0:0 - 0:0 " ]; +x1:e -> c42:p40:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""]; +c43 [ shape=record, label="{{ A| B| S}|$116\n$mux|{ Y}}" ]; +x2 [ shape=record, style=rounded, label=" 0:0 - 0:0 " ]; +x2:e -> c43:p40:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""]; +v3 [ label="1'1" ]; +c44 [ shape=record, label="{{ A| B}|$145\n$and|{ Y}}" ]; +v4 [ label="1'1" ]; +c45 [ shape=record, label="{{ A| B}|$175\n$and|{ Y}}" ]; +v5 [ label="1'1" ]; +c46 [ shape=record, label="{{ A| B}|$205\n$and|{ Y}}" ]; +v6 [ label="1'1" ]; +c47 [ shape=record, label="{{ A| B}|$235\n$and|{ Y}}" ]; +v7 [ label="2'00" ]; +c48 [ shape=record, label="{{ A| B}|$143\n$eq|{ Y}}" ]; +v8 [ label="2'01" ]; +c49 [ shape=record, label="{{ A| B}|$173\n$eq|{ Y}}" ]; +v9 [ label="2'10" ]; +c50 [ shape=record, label="{{ A| B}|$203\n$eq|{ Y}}" ]; +v10 [ label="2'11" ]; +c51 [ shape=record, label="{{ A| B}|$233\n$eq|{ Y}}" ]; +c52 [ shape=record, label="{{ A| B| S}|$147\n$mux|{ Y}}" ]; +c53 [ shape=record, label="{{ A| B| S}|$177\n$mux|{ Y}}" ]; +c54 [ shape=record, label="{{ A| B| S}|$207\n$mux|{ Y}}" ]; +c55 [ shape=record, label="{{ A| B| S}|$237\n$mux|{ Y}}" ]; +c59 [ shape=record, label="{{ CLK| D}|$66\n$dff|{ Q}}" ]; +c60 [ shape=record, label="{{ CLK| D}|$68\n$dff|{ Q}}" ]; +c61 [ shape=record, label="{{ CLK| D}|$70\n$dff|{ Q}}" ]; +c62 [ shape=record, label="{{ CLK| D}|$72\n$dff|{ Q}}" ]; +c63 [ shape=record, label="{{ CLK| D}|$59\n$dff|{ Q}}" ]; +c64 [ shape=record, label="{{ CLK| D}|$63\n$dff|{ Q}}" ]; +c65 [ shape=record, label="{{ CLK| D}|$64\n$dff|{ Q}}" ]; +c66 [ shape=record, label="{{ A}|$39\n$reduce_bool|{ Y}}" ]; +v11 [ label="4'0000" ]; +c67 [ shape=record, label="{{ A| B| S}|$40\n$mux|{ Y}}" ]; +x12 [ shape=record, style=rounded, label=" 3:2 - 1:0 | 1:0 - 1:0 " ]; +c67:p35:e -> x12:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", style="setlinewidth(3)", label=""]; +c68 [ shape=record, label="{{ A| B}|$38\n$xor|{ Y}}" ]; +x13 [ shape=record, style=rounded, label=" 1:0 - 3:2 | 1:0 - 1:0 " ]; +x13:e -> c68:p33:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", style="setlinewidth(3)", label=""]; +c36:p35:e -> c52:p33:w [color="black", style="setlinewidth(3)", label=""]; +c44:p35:e -> c52:p40:w [color="black", label=""]; +c45:p35:e -> c53:p40:w [color="black", label=""]; +c46:p35:e -> c54:p40:w [color="black", label=""]; +c47:p35:e -> c55:p40:w [color="black", label=""]; +c48:p35:e -> c44:p33:w [color="black", label=""]; +c49:p35:e -> c45:p33:w [color="black", label=""]; +c50:p35:e -> c46:p33:w [color="black", label=""]; +c51:p35:e -> c47:p33:w [color="black", label=""]; +c52:p35:e -> c59:p57:w [color="black", style="setlinewidth(3)", label=""]; +c53:p35:e -> c60:p57:w [color="black", style="setlinewidth(3)", label=""]; +c37:p35:e -> c53:p33:w [color="black", style="setlinewidth(3)", label=""]; +c54:p35:e -> c61:p57:w [color="black", style="setlinewidth(3)", label=""]; +c55:p35:e -> c62:p57:w [color="black", style="setlinewidth(3)", label=""]; +c66:p35:e -> c67:p40:w [color="black", label=""]; +c68:p35:e -> c67:p34:w [color="black", style="setlinewidth(3)", label=""]; +n24:e -> c59:p56:w [color="black", label=""]; +n24:e -> c60:p56:w [color="black", label=""]; +n24:e -> c61:p56:w [color="black", label=""]; +n24:e -> c62:p56:w [color="black", label=""]; +n24:e -> c63:p56:w [color="black", label=""]; +n24:e -> c64:p56:w [color="black", label=""]; +n24:e -> c65:p56:w [color="black", label=""]; +n25:e -> c52:p34:w [color="black", style="setlinewidth(3)", label=""]; +n25:e -> c53:p34:w [color="black", style="setlinewidth(3)", label=""]; +n25:e -> c54:p34:w [color="black", style="setlinewidth(3)", label=""]; +n25:e -> c55:p34:w [color="black", style="setlinewidth(3)", label=""]; +n25:e -> c66:p33:w [color="black", style="setlinewidth(3)", label=""]; +n25:e -> c68:p34:w [color="black", style="setlinewidth(3)", label=""]; +c59:p58:e -> n26:w [color="black", style="setlinewidth(3)", label=""]; +n26:e -> c38:p34:w [color="black", style="setlinewidth(3)", label=""]; +n26:e -> c39:p33:w [color="black", style="setlinewidth(3)", label=""]; +n26:e -> c42:p33:w [color="black", style="setlinewidth(3)", label=""]; +c60:p58:e -> n27:w [color="black", style="setlinewidth(3)", label=""]; +n27:e -> c36:p33:w [color="black", style="setlinewidth(3)", label=""]; +n27:e -> c39:p34:w [color="black", style="setlinewidth(3)", label=""]; +n27:e -> c42:p34:w [color="black", style="setlinewidth(3)", label=""]; +c61:p58:e -> n28:w [color="black", style="setlinewidth(3)", label=""]; +n28:e -> c36:p34:w [color="black", style="setlinewidth(3)", label=""]; +n28:e -> c37:p33:w [color="black", style="setlinewidth(3)", label=""]; +n28:e -> c43:p33:w [color="black", style="setlinewidth(3)", label=""]; +c62:p58:e -> n29:w [color="black", style="setlinewidth(3)", label=""]; +n29:e -> c37:p34:w [color="black", style="setlinewidth(3)", label=""]; +n29:e -> c38:p33:w [color="black", style="setlinewidth(3)", label=""]; +n29:e -> c43:p34:w [color="black", style="setlinewidth(3)", label=""]; +c38:p35:e -> c54:p33:w [color="black", style="setlinewidth(3)", label=""]; +c63:p58:e -> n30:w [color="black", style="setlinewidth(3)", label=""]; +n30:e -> x13:s1:w [color="black", style="setlinewidth(3)", label=""]; +c64:p58:e -> n31:w [color="black", style="setlinewidth(3)", label=""]; +n31:e -> x13:s0:w [color="black", style="setlinewidth(3)", label=""]; +c65:p58:e -> n32:w [color="black", style="setlinewidth(3)", label=""]; +c39:p35:e -> c55:p33:w [color="black", style="setlinewidth(3)", label=""]; +n5 [ shape=point ]; +x12:s0:e -> n5:w [color="black", style="setlinewidth(3)", label=""]; +n5:e -> c48:p34:w [color="black", style="setlinewidth(3)", label=""]; +n5:e -> c49:p34:w [color="black", style="setlinewidth(3)", label=""]; +n5:e -> c50:p34:w [color="black", style="setlinewidth(3)", label=""]; +n5:e -> c51:p34:w [color="black", style="setlinewidth(3)", label=""]; +n5:e -> c63:p57:w [color="black", style="setlinewidth(3)", label=""]; +n6 [ shape=point ]; +x12:s1:e -> n6:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> c64:p57:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> x0:s0:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> x1:s0:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> x2:s0:w [color="black", style="setlinewidth(3)", label=""]; +c41:p35:e -> c65:p57:w [color="black", style="setlinewidth(3)", label=""]; +c42:p35:e -> c41:p33:w [color="black", style="setlinewidth(3)", label=""]; +c43:p35:e -> c41:p34:w [color="black", style="setlinewidth(3)", label=""]; +v10:e -> c51:p33:w [color="black", style="setlinewidth(3)", label=""]; +v11:e -> c67:p33:w [color="black", style="setlinewidth(3)", label=""]; +v3:e -> c44:p34:w [color="black", label=""]; +v4:e -> c45:p34:w [color="black", label=""]; +v5:e -> c46:p34:w [color="black", label=""]; +v6:e -> c47:p34:w [color="black", label=""]; +v7:e -> c48:p33:w [color="black", style="setlinewidth(3)", label=""]; +v8:e -> c49:p33:w [color="black", style="setlinewidth(3)", label=""]; +v9:e -> c50:p33:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/memdemo_01.dot b/manual/APPNOTE_011_Design_Investigation/memdemo_01.dot new file mode 100644 index 000000000..bbd7fcc63 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/memdemo_01.dot @@ -0,0 +1,29 @@ +digraph "memdemo" { +rankdir="LR"; +remincross=true; +n4 [ shape=diamond, label="mem[0]", color="black", fontcolor="black" ]; +n5 [ shape=diamond, label="mem[1]", color="black", fontcolor="black" ]; +n6 [ shape=diamond, label="mem[2]", color="black", fontcolor="black" ]; +n7 [ shape=diamond, label="mem[3]", color="black", fontcolor="black" ]; +n8 [ shape=octagon, label="y", color="black", fontcolor="black" ]; +v0 [ label="$0\\s2[1:0] [1]" ]; +c13 [ shape=record, label="{{ A| B| S}|$110\n$mux|{ Y}}" ]; +v1 [ label="$0\\s2[1:0] [0]" ]; +c14 [ shape=record, label="{{ A| B| S}|$113\n$mux|{ Y}}" ]; +v2 [ label="$0\\s2[1:0] [0]" ]; +c15 [ shape=record, label="{{ A| B| S}|$116\n$mux|{ Y}}" ]; +v3 [ label="clk" ]; +c19 [ shape=record, label="{{ CLK| D}|$64\n$dff|{ Q}}" ]; +c13:p12:e -> c19:p17:w [color="black", style="setlinewidth(3)", label=""]; +c14:p12:e -> c13:p9:w [color="black", style="setlinewidth(3)", label=""]; +c15:p12:e -> c13:p10:w [color="black", style="setlinewidth(3)", label=""]; +n4:e -> c14:p9:w [color="black", style="setlinewidth(3)", label=""]; +n5:e -> c14:p10:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> c15:p9:w [color="black", style="setlinewidth(3)", label=""]; +n7:e -> c15:p10:w [color="black", style="setlinewidth(3)", label=""]; +c19:p18:e -> n8:w [color="black", style="setlinewidth(3)", label=""]; +v0:e -> c13:p11:w [color="black", label=""]; +v1:e -> c14:p11:w [color="black", label=""]; +v2:e -> c15:p11:w [color="black", label=""]; +v3:e -> c19:p16:w [color="black", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/splice.dot b/manual/APPNOTE_011_Design_Investigation/splice.dot new file mode 100644 index 000000000..1bcd55b42 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/splice.dot @@ -0,0 +1,39 @@ +digraph "splice_demo" { +rankdir="LR"; +remincross=true; +n1 [ shape=octagon, label="a", color="black", fontcolor="black" ]; +n2 [ shape=octagon, label="b", color="black", fontcolor="black" ]; +n3 [ shape=octagon, label="c", color="black", fontcolor="black" ]; +n4 [ shape=octagon, label="d", color="black", fontcolor="black" ]; +n5 [ shape=octagon, label="e", color="black", fontcolor="black" ]; +n6 [ shape=octagon, label="f", color="black", fontcolor="black" ]; +n7 [ shape=octagon, label="x", color="black", fontcolor="black" ]; +n8 [ shape=octagon, label="y", color="black", fontcolor="black" ]; +c11 [ shape=record, label="{{ A}|$2\n$neg|{ Y}}" ]; +x0 [ shape=record, style=rounded, label=" 1:0 - 3:2 | 1:0 - 1:0 " ]; +x0:e -> c11:p9:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", style="setlinewidth(3)", label=""]; +x1 [ shape=record, style=rounded, label=" 3:0 - 7:4 " ]; +c11:p10:e -> x1:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", style="setlinewidth(3)", label=""]; +c12 [ shape=record, label="{{ A}|$1\n$not|{ Y}}" ]; +x2 [ shape=record, style=rounded, label=" 1:0 - 3:2 | 1:0 - 1:0 " ]; +x2:e -> c12:p9:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", style="setlinewidth(3)", label=""]; +x3 [ shape=record, style=rounded, label=" 3:2 - 1:0 | 1:0 - 3:2 " ]; +c12:p10:e -> x3:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", style="setlinewidth(3)", label=""]; +x4 [ shape=record, style=rounded, label=" 0:0 - 1:1 | 1:1 - 0:0 " ]; +x5 [ shape=record, style=rounded, label=" 1:0 - 3:2 | 1:0 - 1:0 " ]; +x6 [ shape=record, style=rounded, label=" 3:0 - 11:8 " ]; +x5:e -> x6:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", style="setlinewidth(3)", label=""]; +n1:e -> x4:s0:w [color="black", style="setlinewidth(3)", label=""]; +n1:e -> x4:s1:w [color="black", style="setlinewidth(3)", label=""]; +n1:e -> x5:s1:w [color="black", style="setlinewidth(3)", label=""]; +n2:e -> x5:s0:w [color="black", style="setlinewidth(3)", label=""]; +n3:e -> x0:s1:w [color="black", style="setlinewidth(3)", label=""]; +n4:e -> x0:s0:w [color="black", style="setlinewidth(3)", label=""]; +n5:e -> x2:s1:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> x2:s0:w [color="black", style="setlinewidth(3)", label=""]; +x4:e -> n7:w [color="black", style="setlinewidth(3)", label=""]; +x1:s0:e -> n8:w [color="black", style="setlinewidth(3)", label=""]; +x3:s0:e -> n8:w [color="black", style="setlinewidth(3)", label=""]; +x3:s1:e -> n8:w [color="black", style="setlinewidth(3)", label=""]; +x6:s0:e -> n8:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/submod_00.dot b/manual/APPNOTE_011_Design_Investigation/submod_00.dot new file mode 100644 index 000000000..4567dfb43 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/submod_00.dot @@ -0,0 +1,45 @@ +digraph "memdemo" { +rankdir="LR"; +remincross=true; +n5 [ shape=octagon, label="clk", color="black", fontcolor="black" ]; +n6 [ shape=octagon, label="d", color="black", fontcolor="black" ]; +n7 [ shape=diamond, label="mem[0]", color="black", fontcolor="black" ]; +n8 [ shape=diamond, label="mem[1]", color="black", fontcolor="black" ]; +n9 [ shape=diamond, label="mem[2]", color="black", fontcolor="black" ]; +n10 [ shape=diamond, label="mem[3]", color="black", fontcolor="black" ]; +n11 [ shape=diamond, label="s1", color="black", fontcolor="black" ]; +n12 [ shape=diamond, label="s2", color="black", fontcolor="black" ]; +n13 [ shape=octagon, label="y", color="black", fontcolor="black" ]; +c17 [ shape=record, label="{{ CLK| D}|$59\n$dff|{ Q}}" ]; +c18 [ shape=record, label="{{ CLK| D}|$63\n$dff|{ Q}}" ]; +c20 [ shape=record, label="{{ clk| mem[0]| mem[1]| mem[2]| mem[3]| n1}|outstage\noutstage|{ y}}" ]; +c21 [ shape=record, label="{{ clk| d| n1}|scramble\nscramble|{ mem[0]| mem[1]| mem[2]| mem[3]}}" ]; +c23 [ shape=record, label="{{ d| s1| s2}|selstage\nselstage|{ n1| n2}}" ]; +n1 [ shape=point ]; +c23:p19:e -> n1:w [color="black", style="setlinewidth(3)", label=""]; +n1:e -> c17:p15:w [color="black", style="setlinewidth(3)", label=""]; +n1:e -> c21:p19:w [color="black", style="setlinewidth(3)", label=""]; +c21:p10:e -> n10:w [color="black", style="setlinewidth(3)", label=""]; +n10:e -> c20:p10:w [color="black", style="setlinewidth(3)", label=""]; +c17:p16:e -> n11:w [color="black", style="setlinewidth(3)", label=""]; +n11:e -> c23:p11:w [color="black", style="setlinewidth(3)", label=""]; +c18:p16:e -> n12:w [color="black", style="setlinewidth(3)", label=""]; +n12:e -> c23:p12:w [color="black", style="setlinewidth(3)", label=""]; +c20:p13:e -> n13:w [color="black", style="setlinewidth(3)", label=""]; +n2 [ shape=point ]; +c23:p22:e -> n2:w [color="black", style="setlinewidth(3)", label=""]; +n2:e -> c18:p15:w [color="black", style="setlinewidth(3)", label=""]; +n2:e -> c20:p19:w [color="black", style="setlinewidth(3)", label=""]; +n5:e -> c17:p14:w [color="black", label=""]; +n5:e -> c18:p14:w [color="black", label=""]; +n5:e -> c20:p5:w [color="black", label=""]; +n5:e -> c21:p5:w [color="black", label=""]; +n6:e -> c21:p6:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> c23:p6:w [color="black", style="setlinewidth(3)", label=""]; +c21:p7:e -> n7:w [color="black", style="setlinewidth(3)", label=""]; +n7:e -> c20:p7:w [color="black", style="setlinewidth(3)", label=""]; +c21:p8:e -> n8:w [color="black", style="setlinewidth(3)", label=""]; +n8:e -> c20:p8:w [color="black", style="setlinewidth(3)", label=""]; +c21:p9:e -> n9:w [color="black", style="setlinewidth(3)", label=""]; +n9:e -> c20:p9:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/submod_01.dot b/manual/APPNOTE_011_Design_Investigation/submod_01.dot new file mode 100644 index 000000000..b1daae23a --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/submod_01.dot @@ -0,0 +1,87 @@ +digraph "scramble" { +rankdir="LR"; +remincross=true; +n17 [ shape=octagon, label="clk", color="black", fontcolor="black" ]; +n18 [ shape=octagon, label="d", color="black", fontcolor="black" ]; +n19 [ shape=octagon, label="mem[0]", color="black", fontcolor="black" ]; +n20 [ shape=octagon, label="mem[1]", color="black", fontcolor="black" ]; +n21 [ shape=octagon, label="mem[2]", color="black", fontcolor="black" ]; +n22 [ shape=octagon, label="mem[3]", color="black", fontcolor="black" ]; +n23 [ shape=octagon, label="n1", color="black", fontcolor="black" ]; +c27 [ shape=record, label="{{ A| B}|$28\n$add|{ Y}}" ]; +c28 [ shape=record, label="{{ A| B}|$31\n$add|{ Y}}" ]; +c29 [ shape=record, label="{{ A| B}|$34\n$add|{ Y}}" ]; +c30 [ shape=record, label="{{ A| B}|$37\n$add|{ Y}}" ]; +v0 [ label="1'1" ]; +c31 [ shape=record, label="{{ A| B}|$145\n$and|{ Y}}" ]; +v1 [ label="1'1" ]; +c32 [ shape=record, label="{{ A| B}|$175\n$and|{ Y}}" ]; +v2 [ label="1'1" ]; +c33 [ shape=record, label="{{ A| B}|$205\n$and|{ Y}}" ]; +v3 [ label="1'1" ]; +c34 [ shape=record, label="{{ A| B}|$235\n$and|{ Y}}" ]; +v4 [ label="2'00" ]; +c35 [ shape=record, label="{{ A| B}|$143\n$eq|{ Y}}" ]; +v5 [ label="2'01" ]; +c36 [ shape=record, label="{{ A| B}|$173\n$eq|{ Y}}" ]; +v6 [ label="2'10" ]; +c37 [ shape=record, label="{{ A| B}|$203\n$eq|{ Y}}" ]; +v7 [ label="2'11" ]; +c38 [ shape=record, label="{{ A| B}|$233\n$eq|{ Y}}" ]; +c40 [ shape=record, label="{{ A| B| S}|$147\n$mux|{ Y}}" ]; +c41 [ shape=record, label="{{ A| B| S}|$177\n$mux|{ Y}}" ]; +c42 [ shape=record, label="{{ A| B| S}|$207\n$mux|{ Y}}" ]; +c43 [ shape=record, label="{{ A| B| S}|$237\n$mux|{ Y}}" ]; +c47 [ shape=record, label="{{ CLK| D}|$66\n$dff|{ Q}}" ]; +c48 [ shape=record, label="{{ CLK| D}|$68\n$dff|{ Q}}" ]; +c49 [ shape=record, label="{{ CLK| D}|$70\n$dff|{ Q}}" ]; +c50 [ shape=record, label="{{ CLK| D}|$72\n$dff|{ Q}}" ]; +c27:p26:e -> c40:p24:w [color="black", style="setlinewidth(3)", label=""]; +c36:p26:e -> c32:p24:w [color="black", label=""]; +c37:p26:e -> c33:p24:w [color="black", label=""]; +c38:p26:e -> c34:p24:w [color="black", label=""]; +c40:p26:e -> c47:p45:w [color="black", style="setlinewidth(3)", label=""]; +c41:p26:e -> c48:p45:w [color="black", style="setlinewidth(3)", label=""]; +c42:p26:e -> c49:p45:w [color="black", style="setlinewidth(3)", label=""]; +c43:p26:e -> c50:p45:w [color="black", style="setlinewidth(3)", label=""]; +n17:e -> c47:p44:w [color="black", label=""]; +n17:e -> c48:p44:w [color="black", label=""]; +n17:e -> c49:p44:w [color="black", label=""]; +n17:e -> c50:p44:w [color="black", label=""]; +n18:e -> c40:p25:w [color="black", style="setlinewidth(3)", label=""]; +n18:e -> c41:p25:w [color="black", style="setlinewidth(3)", label=""]; +n18:e -> c42:p25:w [color="black", style="setlinewidth(3)", label=""]; +n18:e -> c43:p25:w [color="black", style="setlinewidth(3)", label=""]; +c47:p46:e -> n19:w [color="black", style="setlinewidth(3)", label=""]; +n19:e -> c29:p25:w [color="black", style="setlinewidth(3)", label=""]; +n19:e -> c30:p24:w [color="black", style="setlinewidth(3)", label=""]; +c28:p26:e -> c41:p24:w [color="black", style="setlinewidth(3)", label=""]; +c48:p46:e -> n20:w [color="black", style="setlinewidth(3)", label=""]; +n20:e -> c27:p24:w [color="black", style="setlinewidth(3)", label=""]; +n20:e -> c30:p25:w [color="black", style="setlinewidth(3)", label=""]; +c49:p46:e -> n21:w [color="black", style="setlinewidth(3)", label=""]; +n21:e -> c27:p25:w [color="black", style="setlinewidth(3)", label=""]; +n21:e -> c28:p24:w [color="black", style="setlinewidth(3)", label=""]; +c50:p46:e -> n22:w [color="black", style="setlinewidth(3)", label=""]; +n22:e -> c28:p25:w [color="black", style="setlinewidth(3)", label=""]; +n22:e -> c29:p24:w [color="black", style="setlinewidth(3)", label=""]; +n23:e -> c35:p25:w [color="black", style="setlinewidth(3)", label=""]; +n23:e -> c36:p25:w [color="black", style="setlinewidth(3)", label=""]; +n23:e -> c37:p25:w [color="black", style="setlinewidth(3)", label=""]; +n23:e -> c38:p25:w [color="black", style="setlinewidth(3)", label=""]; +c29:p26:e -> c42:p24:w [color="black", style="setlinewidth(3)", label=""]; +c30:p26:e -> c43:p24:w [color="black", style="setlinewidth(3)", label=""]; +c31:p26:e -> c40:p39:w [color="black", label=""]; +c32:p26:e -> c41:p39:w [color="black", label=""]; +c33:p26:e -> c42:p39:w [color="black", label=""]; +c34:p26:e -> c43:p39:w [color="black", label=""]; +c35:p26:e -> c31:p24:w [color="black", label=""]; +v0:e -> c31:p25:w [color="black", label=""]; +v1:e -> c32:p25:w [color="black", label=""]; +v2:e -> c33:p25:w [color="black", label=""]; +v3:e -> c34:p25:w [color="black", label=""]; +v4:e -> c35:p24:w [color="black", style="setlinewidth(3)", label=""]; +v5:e -> c36:p24:w [color="black", style="setlinewidth(3)", label=""]; +v6:e -> c37:p24:w [color="black", style="setlinewidth(3)", label=""]; +v7:e -> c38:p24:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/submod_02.dot b/manual/APPNOTE_011_Design_Investigation/submod_02.dot new file mode 100644 index 000000000..68266db9d --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/submod_02.dot @@ -0,0 +1,33 @@ +digraph "outstage" { +rankdir="LR"; +remincross=true; +n4 [ shape=octagon, label="clk", color="black", fontcolor="black" ]; +n5 [ shape=octagon, label="mem[0]", color="black", fontcolor="black" ]; +n6 [ shape=octagon, label="mem[1]", color="black", fontcolor="black" ]; +n7 [ shape=octagon, label="mem[2]", color="black", fontcolor="black" ]; +n8 [ shape=octagon, label="mem[3]", color="black", fontcolor="black" ]; +n9 [ shape=octagon, label="n1", color="black", fontcolor="black" ]; +n10 [ shape=octagon, label="y", color="black", fontcolor="black" ]; +c15 [ shape=record, label="{{ A| B| S}|$110\n$mux|{ Y}}" ]; +x0 [ shape=record, style=rounded, label=" 1:1 - 0:0 " ]; +x0:e -> c15:p13:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""]; +c16 [ shape=record, label="{{ A| B| S}|$113\n$mux|{ Y}}" ]; +x1 [ shape=record, style=rounded, label=" 0:0 - 0:0 " ]; +x1:e -> c16:p13:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""]; +c17 [ shape=record, label="{{ A| B| S}|$116\n$mux|{ Y}}" ]; +x2 [ shape=record, style=rounded, label=" 0:0 - 0:0 " ]; +x2:e -> c17:p13:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""]; +c21 [ shape=record, label="{{ CLK| D}|$64\n$dff|{ Q}}" ]; +c15:p14:e -> c21:p19:w [color="black", style="setlinewidth(3)", label=""]; +c21:p20:e -> n10:w [color="black", style="setlinewidth(3)", label=""]; +c16:p14:e -> c15:p11:w [color="black", style="setlinewidth(3)", label=""]; +c17:p14:e -> c15:p12:w [color="black", style="setlinewidth(3)", label=""]; +n4:e -> c21:p18:w [color="black", label=""]; +n5:e -> c16:p11:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> c16:p12:w [color="black", style="setlinewidth(3)", label=""]; +n7:e -> c17:p11:w [color="black", style="setlinewidth(3)", label=""]; +n8:e -> c17:p12:w [color="black", style="setlinewidth(3)", label=""]; +n9:e -> x0:s0:w [color="black", label=""]; +n9:e -> x1:s0:w [color="black", label=""]; +n9:e -> x2:s0:w [color="black", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/submod_03.dot b/manual/APPNOTE_011_Design_Investigation/submod_03.dot new file mode 100644 index 000000000..92ef57599 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/submod_03.dot @@ -0,0 +1,26 @@ +digraph "selstage" { +rankdir="LR"; +remincross=true; +n3 [ shape=octagon, label="d", color="black", fontcolor="black" ]; +n4 [ shape=octagon, label="n1", color="black", fontcolor="black" ]; +n5 [ shape=octagon, label="n2", color="black", fontcolor="black" ]; +n6 [ shape=octagon, label="s1", color="black", fontcolor="black" ]; +n7 [ shape=octagon, label="s2", color="black", fontcolor="black" ]; +c10 [ shape=record, label="{{ A}|$39\n$reduce_bool|{ Y}}" ]; +v0 [ label="4'0000" ]; +c13 [ shape=record, label="{{ A| B| S}|$40\n$mux|{ Y}}" ]; +x1 [ shape=record, style=rounded, label=" 3:2 - 1:0 | 1:0 - 1:0 " ]; +c13:p9:e -> x1:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", style="setlinewidth(3)", label=""]; +c14 [ shape=record, label="{{ A| B}|$38\n$xor|{ Y}}" ]; +x2 [ shape=record, style=rounded, label=" 1:0 - 3:2 | 1:0 - 1:0 " ]; +x2:e -> c14:p8:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", style="setlinewidth(3)", label=""]; +c10:p9:e -> c13:p12:w [color="black", label=""]; +c14:p9:e -> c13:p11:w [color="black", style="setlinewidth(3)", label=""]; +n3:e -> c10:p8:w [color="black", style="setlinewidth(3)", label=""]; +n3:e -> c14:p11:w [color="black", style="setlinewidth(3)", label=""]; +x1:s0:e -> n4:w [color="black", style="setlinewidth(3)", label=""]; +x1:s1:e -> n5:w [color="black", style="setlinewidth(3)", label=""]; +n6:e -> x2:s1:w [color="black", style="setlinewidth(3)", label=""]; +n7:e -> x2:s0:w [color="black", style="setlinewidth(3)", label=""]; +v0:e -> c13:p8:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/sumprod_00.dot b/manual/APPNOTE_011_Design_Investigation/sumprod_00.dot new file mode 100644 index 000000000..6f9b7d3d6 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/sumprod_00.dot @@ -0,0 +1,18 @@ +digraph "sumprod" { +rankdir="LR"; +remincross=true; +v0 [ label="a" ]; +v1 [ label="b" ]; +v2 [ label="$1_Y" ]; +c4 [ shape=record, label="{{ A| B}|$1\n$add|{ Y}}" ]; +v3 [ label="$1_Y" ]; +v4 [ label="c" ]; +v5 [ label="sum" ]; +c5 [ shape=record, label="{{ A| B}|$2\n$add|{ Y}}" ]; +v0:e -> c4:p1:w [color="black", style="setlinewidth(3)", label=""]; +v1:e -> c4:p2:w [color="black", style="setlinewidth(3)", label=""]; +c4:p3:e -> v2:w [color="black", style="setlinewidth(3)", label=""]; +v3:e -> c5:p1:w [color="black", style="setlinewidth(3)", label=""]; +v4:e -> c5:p2:w [color="black", style="setlinewidth(3)", label=""]; +c5:p3:e -> v5:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/sumprod_01.dot b/manual/APPNOTE_011_Design_Investigation/sumprod_01.dot new file mode 100644 index 000000000..d0252270d --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/sumprod_01.dot @@ -0,0 +1,15 @@ +digraph "sumprod" { +rankdir="LR"; +remincross=true; +n2 [ shape=octagon, label="a", color="black", fontcolor="black" ]; +n3 [ shape=octagon, label="b", color="black", fontcolor="black" ]; +n4 [ shape=octagon, label="c", color="black", fontcolor="black" ]; +n5 [ shape=octagon, label="sum", color="black", fontcolor="black" ]; +c9 [ shape=record, label="{{ A| B}|$1\n$add|{ Y}}" ]; +c10 [ shape=record, label="{{ A| B}|$2\n$add|{ Y}}" ]; +c9:p8:e -> c10:p6:w [color="black", style="setlinewidth(3)", label=""]; +n2:e -> c9:p6:w [color="black", style="setlinewidth(3)", label=""]; +n3:e -> c9:p7:w [color="black", style="setlinewidth(3)", label=""]; +n4:e -> c10:p7:w [color="black", style="setlinewidth(3)", label=""]; +c10:p8:e -> n5:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/sumprod_02.dot b/manual/APPNOTE_011_Design_Investigation/sumprod_02.dot new file mode 100644 index 000000000..af87651b0 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/sumprod_02.dot @@ -0,0 +1,5 @@ +digraph "sumprod" { +rankdir="LR"; +remincross=true; +n1 [ shape=octagon, label="prod", color="black", fontcolor="black" ]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/sumprod_03.dot b/manual/APPNOTE_011_Design_Investigation/sumprod_03.dot new file mode 100644 index 000000000..211551356 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/sumprod_03.dot @@ -0,0 +1,11 @@ +digraph "sumprod" { +rankdir="LR"; +remincross=true; +n1 [ shape=octagon, label="prod", color="black", fontcolor="black" ]; +v0 [ label="$3_Y" ]; +v1 [ label="c" ]; +c5 [ shape=record, label="{{ A| B}|$4\n$mul|{ Y}}" ]; +c5:p4:e -> n1:w [color="black", style="setlinewidth(3)", label=""]; +v0:e -> c5:p2:w [color="black", style="setlinewidth(3)", label=""]; +v1:e -> c5:p3:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/sumprod_04.dot b/manual/APPNOTE_011_Design_Investigation/sumprod_04.dot new file mode 100644 index 000000000..5223577e0 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/sumprod_04.dot @@ -0,0 +1,11 @@ +digraph "sumprod" { +rankdir="LR"; +remincross=true; +n2 [ shape=octagon, label="c", color="black", fontcolor="black" ]; +n3 [ shape=octagon, label="prod", color="black", fontcolor="black" ]; +c7 [ shape=record, label="{{ A| B}|$4\n$mul|{ Y}}" ]; +n1 [ shape=diamond, label="$3_Y" ]; +n1:e -> c7:p4:w [color="black", style="setlinewidth(3)", label=""]; +n2:e -> c7:p5:w [color="black", style="setlinewidth(3)", label=""]; +c7:p6:e -> n3:w [color="black", style="setlinewidth(3)", label=""]; +}; diff --git a/manual/APPNOTE_011_Design_Investigation/sumprod_05.dot b/manual/APPNOTE_011_Design_Investigation/sumprod_05.dot new file mode 100644 index 000000000..45d001343 --- /dev/null +++ b/manual/APPNOTE_011_Design_Investigation/sumprod_05.dot @@ -0,0 +1,15 @@ +digraph "sumprod" { +rankdir="LR"; +remincross=true; +n2 [ shape=octagon, label="c", color="black", fontcolor="black" ]; +n3 [ shape=octagon, label="prod", color="black", fontcolor="black" ]; +v0 [ label="a" ]; +v1 [ label="b" ]; +c7 [ shape=record, label="{{ A| B}|$3\n$mul|{ Y}}" ]; +c8 [ shape=record, label="{{ A| B}|$4\n$mul|{ Y}}" ]; +c7:p6:e -> c8:p4:w [color="black", style="setlinewidth(3)", label=""]; +n2:e -> c8:p5:w [color="black", style="setlinewidth(3)", label=""]; +c8:p6:e -> n3:w [color="black", style="setlinewidth(3)", label=""]; +v0:e -> c7:p4:w [color="black", style="setlinewidth(3)", label=""]; +v1:e -> c7:p5:w [color="black", style="setlinewidth(3)", label=""]; +}; -- 2.30.2