summaryrefslogtreecommitdiff
path: root/manual
diff options
context:
space:
mode:
Diffstat (limited to 'manual')
-rw-r--r--manual/APPNOTE_011_Design_Investigation.tex4
-rw-r--r--manual/APPNOTE_011_Design_Investigation/.gitignore19
-rw-r--r--manual/APPNOTE_011_Design_Investigation/cmos_00.dot34
-rw-r--r--manual/APPNOTE_011_Design_Investigation/cmos_01.dot23
-rw-r--r--manual/APPNOTE_011_Design_Investigation/example_00.dot23
-rw-r--r--manual/APPNOTE_011_Design_Investigation/example_01.dot33
-rw-r--r--manual/APPNOTE_011_Design_Investigation/example_02.dot20
-rw-r--r--manual/APPNOTE_011_Design_Investigation/example_03.dot11
-rw-r--r--manual/APPNOTE_011_Design_Investigation/make.sh2
-rw-r--r--manual/APPNOTE_011_Design_Investigation/memdemo_00.dot138
-rw-r--r--manual/APPNOTE_011_Design_Investigation/memdemo_01.dot29
-rw-r--r--manual/APPNOTE_011_Design_Investigation/splice.dot39
-rw-r--r--manual/APPNOTE_011_Design_Investigation/submod_00.dot45
-rw-r--r--manual/APPNOTE_011_Design_Investigation/submod_01.dot87
-rw-r--r--manual/APPNOTE_011_Design_Investigation/submod_02.dot33
-rw-r--r--manual/APPNOTE_011_Design_Investigation/submod_03.dot26
-rw-r--r--manual/APPNOTE_011_Design_Investigation/sumprod_00.dot18
-rw-r--r--manual/APPNOTE_011_Design_Investigation/sumprod_01.dot15
-rw-r--r--manual/APPNOTE_011_Design_Investigation/sumprod_02.dot5
-rw-r--r--manual/APPNOTE_011_Design_Investigation/sumprod_03.dot11
-rw-r--r--manual/APPNOTE_011_Design_Investigation/sumprod_04.dot11
-rw-r--r--manual/APPNOTE_011_Design_Investigation/sumprod_05.dot15
22 files changed, 619 insertions, 22 deletions
diff --git a/manual/APPNOTE_011_Design_Investigation.tex b/manual/APPNOTE_011_Design_Investigation.tex
index 9a8f604b..c0481186 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 85e44618..00000000
--- 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 00000000..85ca7849
--- /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="{{<p7> A|<p8> B|<p9> Y}|$g0\nNOR|{}}" ];
+c11 [ shape=record, label="{{<p7> A|<p9> Y}|$g1\nNOT|{}}" ];
+c12 [ shape=record, label="{{<p7> A|<p9> Y}|$g2\nNOT|{}}" ];
+c13 [ shape=record, label="{{<p7> A|<p8> B|<p9> Y}|$g3\nNOR|{}}" ];
+x0 [ shape=record, style=rounded, label="<s0> 1:1 - 0:0 " ];
+x0:e -> c13:p9:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c14 [ shape=record, label="{{<p7> A|<p8> B|<p9> Y}|$g4\nNOR|{}}" ];
+x1 [ shape=record, style=rounded, label="<s0> 1:1 - 0:0 " ];
+x1:e -> c14:p8:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x2 [ shape=record, style=rounded, label="<s0> 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 00000000..de9af170
--- /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="{{<p8> A|<p9> B}|$g0\nNOR|{<p10> Y}}" ];
+c12 [ shape=record, label="{{<p8> A}|$g1\nNOT|{<p10> Y}}" ];
+c13 [ shape=record, label="{{<p8> A}|$g2\nNOT|{<p10> Y}}" ];
+c14 [ shape=record, label="{{<p8> A|<p9> B}|$g3\nNOR|{<p10> Y}}" ];
+c15 [ shape=record, label="{{<p8> A|<p9> B}|$g4\nNOR|{<p10> 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 00000000..b38862c4
--- /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="{{<p9> A|<p10> B}|$2\n$add|{<p11> Y}}" ];
+v0 [ label="2'00" ];
+c14 [ shape=record, label="{{<p9> A|<p10> B|<p13> S}|$3\n$mux|{<p11> 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 00000000..e2e3f02d
--- /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="{{<p11> A|<p12> B}|$2\n$add|{<p13> Y}}" ];
+c18 [ shape=record, label="{{<p15> CLK|<p16> D}|$7\n$dff|{<p17> Q}}" ];
+c20 [ shape=record, label="{{<p11> A|<p12> B|<p19> S}|$5\n$mux|{<p13> Y}}" ];
+v0 [ label="2'00" ];
+c21 [ shape=record, label="{{<p11> A|<p12> B|<p19> S}|$3\n$mux|{<p13> 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 00000000..4b57f89c
--- /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="{{<p8> A|<p9> B}|$2\n$add|{<p10> Y}}" ];
+c15 [ shape=record, label="{{<p12> CLK|<p13> D}|$7\n$dff|{<p14> Q}}" ];
+c17 [ shape=record, label="{{<p8> A|<p9> B|<p16> S}|$5\n$mux|{<p10> 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 00000000..6c00c29a
--- /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="{{<p1> A|<p2> B}|$2\n$add|{<p3> 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 598ff88d..fa3ca70e 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 00000000..9e81edbc
--- /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="{{<p33> A|<p34> B}|$28\n$add|{<p35> Y}}" ];
+c37 [ shape=record, label="{{<p33> A|<p34> B}|$31\n$add|{<p35> Y}}" ];
+c38 [ shape=record, label="{{<p33> A|<p34> B}|$34\n$add|{<p35> Y}}" ];
+c39 [ shape=record, label="{{<p33> A|<p34> B}|$37\n$add|{<p35> Y}}" ];
+c41 [ shape=record, label="{{<p33> A|<p34> B|<p40> S}|$110\n$mux|{<p35> Y}}" ];
+x0 [ shape=record, style=rounded, label="<s0> 1:1 - 0:0 " ];
+x0:e -> c41:p40:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c42 [ shape=record, label="{{<p33> A|<p34> B|<p40> S}|$113\n$mux|{<p35> Y}}" ];
+x1 [ shape=record, style=rounded, label="<s0> 0:0 - 0:0 " ];
+x1:e -> c42:p40:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c43 [ shape=record, label="{{<p33> A|<p34> B|<p40> S}|$116\n$mux|{<p35> Y}}" ];
+x2 [ shape=record, style=rounded, label="<s0> 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="{{<p33> A|<p34> B}|$145\n$and|{<p35> Y}}" ];
+v4 [ label="1'1" ];
+c45 [ shape=record, label="{{<p33> A|<p34> B}|$175\n$and|{<p35> Y}}" ];
+v5 [ label="1'1" ];
+c46 [ shape=record, label="{{<p33> A|<p34> B}|$205\n$and|{<p35> Y}}" ];
+v6 [ label="1'1" ];
+c47 [ shape=record, label="{{<p33> A|<p34> B}|$235\n$and|{<p35> Y}}" ];
+v7 [ label="2'00" ];
+c48 [ shape=record, label="{{<p33> A|<p34> B}|$143\n$eq|{<p35> Y}}" ];
+v8 [ label="2'01" ];
+c49 [ shape=record, label="{{<p33> A|<p34> B}|$173\n$eq|{<p35> Y}}" ];
+v9 [ label="2'10" ];
+c50 [ shape=record, label="{{<p33> A|<p34> B}|$203\n$eq|{<p35> Y}}" ];
+v10 [ label="2'11" ];
+c51 [ shape=record, label="{{<p33> A|<p34> B}|$233\n$eq|{<p35> Y}}" ];
+c52 [ shape=record, label="{{<p33> A|<p34> B|<p40> S}|$147\n$mux|{<p35> Y}}" ];
+c53 [ shape=record, label="{{<p33> A|<p34> B|<p40> S}|$177\n$mux|{<p35> Y}}" ];
+c54 [ shape=record, label="{{<p33> A|<p34> B|<p40> S}|$207\n$mux|{<p35> Y}}" ];
+c55 [ shape=record, label="{{<p33> A|<p34> B|<p40> S}|$237\n$mux|{<p35> Y}}" ];
+c59 [ shape=record, label="{{<p56> CLK|<p57> D}|$66\n$dff|{<p58> Q}}" ];
+c60 [ shape=record, label="{{<p56> CLK|<p57> D}|$68\n$dff|{<p58> Q}}" ];
+c61 [ shape=record, label="{{<p56> CLK|<p57> D}|$70\n$dff|{<p58> Q}}" ];
+c62 [ shape=record, label="{{<p56> CLK|<p57> D}|$72\n$dff|{<p58> Q}}" ];
+c63 [ shape=record, label="{{<p56> CLK|<p57> D}|$59\n$dff|{<p58> Q}}" ];
+c64 [ shape=record, label="{{<p56> CLK|<p57> D}|$63\n$dff|{<p58> Q}}" ];
+c65 [ shape=record, label="{{<p56> CLK|<p57> D}|$64\n$dff|{<p58> Q}}" ];
+c66 [ shape=record, label="{{<p33> A}|$39\n$reduce_bool|{<p35> Y}}" ];
+v11 [ label="4'0000" ];
+c67 [ shape=record, label="{{<p33> A|<p34> B|<p40> S}|$40\n$mux|{<p35> Y}}" ];
+x12 [ shape=record, style=rounded, label="<s1> 3:2 - 1:0 |<s0> 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="{{<p33> A|<p34> B}|$38\n$xor|{<p35> Y}}" ];
+x13 [ shape=record, style=rounded, label="<s1> 1:0 - 3:2 |<s0> 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 00000000..bbd7fcc6
--- /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="{{<p9> A|<p10> B|<p11> S}|$110\n$mux|{<p12> Y}}" ];
+v1 [ label="$0\\s2[1:0] [0]" ];
+c14 [ shape=record, label="{{<p9> A|<p10> B|<p11> S}|$113\n$mux|{<p12> Y}}" ];
+v2 [ label="$0\\s2[1:0] [0]" ];
+c15 [ shape=record, label="{{<p9> A|<p10> B|<p11> S}|$116\n$mux|{<p12> Y}}" ];
+v3 [ label="clk" ];
+c19 [ shape=record, label="{{<p16> CLK|<p17> D}|$64\n$dff|{<p18> 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 00000000..1bcd55b4
--- /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="{{<p9> A}|$2\n$neg|{<p10> Y}}" ];
+x0 [ shape=record, style=rounded, label="<s1> 1:0 - 3:2 |<s0> 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="<s0> 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="{{<p9> A}|$1\n$not|{<p10> Y}}" ];
+x2 [ shape=record, style=rounded, label="<s1> 1:0 - 3:2 |<s0> 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="<s1> 3:2 - 1:0 |<s0> 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="<s1> 0:0 - 1:1 |<s0> 1:1 - 0:0 " ];
+x5 [ shape=record, style=rounded, label="<s1> 1:0 - 3:2 |<s0> 1:0 - 1:0 " ];
+x6 [ shape=record, style=rounded, label="<s0> 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 00000000..4567dfb4
--- /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="{{<p14> CLK|<p15> D}|$59\n$dff|{<p16> Q}}" ];
+c18 [ shape=record, label="{{<p14> CLK|<p15> D}|$63\n$dff|{<p16> Q}}" ];
+c20 [ shape=record, label="{{<p5> clk|<p7> mem[0]|<p8> mem[1]|<p9> mem[2]|<p10> mem[3]|<p19> n1}|outstage\noutstage|{<p13> y}}" ];
+c21 [ shape=record, label="{{<p5> clk|<p6> d|<p19> n1}|scramble\nscramble|{<p7> mem[0]|<p8> mem[1]|<p9> mem[2]|<p10> mem[3]}}" ];
+c23 [ shape=record, label="{{<p6> d|<p11> s1|<p12> s2}|selstage\nselstage|{<p19> n1|<p22> 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 00000000..b1daae23
--- /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="{{<p24> A|<p25> B}|$28\n$add|{<p26> Y}}" ];
+c28 [ shape=record, label="{{<p24> A|<p25> B}|$31\n$add|{<p26> Y}}" ];
+c29 [ shape=record, label="{{<p24> A|<p25> B}|$34\n$add|{<p26> Y}}" ];
+c30 [ shape=record, label="{{<p24> A|<p25> B}|$37\n$add|{<p26> Y}}" ];
+v0 [ label="1'1" ];
+c31 [ shape=record, label="{{<p24> A|<p25> B}|$145\n$and|{<p26> Y}}" ];
+v1 [ label="1'1" ];
+c32 [ shape=record, label="{{<p24> A|<p25> B}|$175\n$and|{<p26> Y}}" ];
+v2 [ label="1'1" ];
+c33 [ shape=record, label="{{<p24> A|<p25> B}|$205\n$and|{<p26> Y}}" ];
+v3 [ label="1'1" ];
+c34 [ shape=record, label="{{<p24> A|<p25> B}|$235\n$and|{<p26> Y}}" ];
+v4 [ label="2'00" ];
+c35 [ shape=record, label="{{<p24> A|<p25> B}|$143\n$eq|{<p26> Y}}" ];
+v5 [ label="2'01" ];
+c36 [ shape=record, label="{{<p24> A|<p25> B}|$173\n$eq|{<p26> Y}}" ];
+v6 [ label="2'10" ];
+c37 [ shape=record, label="{{<p24> A|<p25> B}|$203\n$eq|{<p26> Y}}" ];
+v7 [ label="2'11" ];
+c38 [ shape=record, label="{{<p24> A|<p25> B}|$233\n$eq|{<p26> Y}}" ];
+c40 [ shape=record, label="{{<p24> A|<p25> B|<p39> S}|$147\n$mux|{<p26> Y}}" ];
+c41 [ shape=record, label="{{<p24> A|<p25> B|<p39> S}|$177\n$mux|{<p26> Y}}" ];
+c42 [ shape=record, label="{{<p24> A|<p25> B|<p39> S}|$207\n$mux|{<p26> Y}}" ];
+c43 [ shape=record, label="{{<p24> A|<p25> B|<p39> S}|$237\n$mux|{<p26> Y}}" ];
+c47 [ shape=record, label="{{<p44> CLK|<p45> D}|$66\n$dff|{<p46> Q}}" ];
+c48 [ shape=record, label="{{<p44> CLK|<p45> D}|$68\n$dff|{<p46> Q}}" ];
+c49 [ shape=record, label="{{<p44> CLK|<p45> D}|$70\n$dff|{<p46> Q}}" ];
+c50 [ shape=record, label="{{<p44> CLK|<p45> D}|$72\n$dff|{<p46> 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 00000000..68266db9
--- /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="{{<p11> A|<p12> B|<p13> S}|$110\n$mux|{<p14> Y}}" ];
+x0 [ shape=record, style=rounded, label="<s0> 1:1 - 0:0 " ];
+x0:e -> c15:p13:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c16 [ shape=record, label="{{<p11> A|<p12> B|<p13> S}|$113\n$mux|{<p14> Y}}" ];
+x1 [ shape=record, style=rounded, label="<s0> 0:0 - 0:0 " ];
+x1:e -> c16:p13:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c17 [ shape=record, label="{{<p11> A|<p12> B|<p13> S}|$116\n$mux|{<p14> Y}}" ];
+x2 [ shape=record, style=rounded, label="<s0> 0:0 - 0:0 " ];
+x2:e -> c17:p13:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c21 [ shape=record, label="{{<p18> CLK|<p19> D}|$64\n$dff|{<p20> 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 00000000..92ef5759
--- /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="{{<p8> A}|$39\n$reduce_bool|{<p9> Y}}" ];
+v0 [ label="4'0000" ];
+c13 [ shape=record, label="{{<p8> A|<p11> B|<p12> S}|$40\n$mux|{<p9> Y}}" ];
+x1 [ shape=record, style=rounded, label="<s1> 3:2 - 1:0 |<s0> 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="{{<p8> A|<p11> B}|$38\n$xor|{<p9> Y}}" ];
+x2 [ shape=record, style=rounded, label="<s1> 1:0 - 3:2 |<s0> 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 00000000..6f9b7d3d
--- /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="{{<p1> A|<p2> B}|$1\n$add|{<p3> Y}}" ];
+v3 [ label="$1_Y" ];
+v4 [ label="c" ];
+v5 [ label="sum" ];
+c5 [ shape=record, label="{{<p1> A|<p2> B}|$2\n$add|{<p3> 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 00000000..d0252270
--- /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="{{<p6> A|<p7> B}|$1\n$add|{<p8> Y}}" ];
+c10 [ shape=record, label="{{<p6> A|<p7> B}|$2\n$add|{<p8> 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 00000000..af87651b
--- /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 00000000..21155135
--- /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="{{<p2> A|<p3> B}|$4\n$mul|{<p4> 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 00000000..5223577e
--- /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="{{<p4> A|<p5> B}|$4\n$mul|{<p6> 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 00000000..45d00134
--- /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="{{<p4> A|<p5> B}|$3\n$mul|{<p6> Y}}" ];
+c8 [ shape=record, label="{{<p4> A|<p5> B}|$4\n$mul|{<p6> 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=""];
+};