summaryrefslogtreecommitdiffstats
path: root/stash.tex
blob: a452c1fcb9d501d9ddcec3ed8957cee15eeebc5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
%add (clk, rst, start, a, b, ret, fin) {
%  input clk, rst, start;
%  input [31:0] a, b;
%  output reg [31:0] ret;
%  output reg fin;
%  
%  reg [31:0] reg_4;
%  reg [31:0] reg_3;
\begin{figure}
\begin{lstlisting}
add (x2, x1) {
  externctrl { clk -> main.clk }
  controllogic {
    2: state <= 1;
    1: state <= 3;
    3: ;
  }
  datapath {
    2: reg_3 <= {{x2 + x1} + 0};
    1: fin = 1;
       ret = reg_3;
    3: fin <= 0;
  }
}
\end{lstlisting}
\caption{Example HTL code (part 1)}
\label{fig:example_HTL1}
\end{figure}
\begin{figure}
%main (clk, rst, start, ret, fin) {
%  input clk, rst, start;
%  output reg [31:0] ret;
%  output reg fin;
%  
%  reg[31:0] reg_1, reg_2, reg_3, reg_4, reg_5, reg_6, reg_7,
%    add_0_rst, add_0_a, add_0_b, add_0_ret, add_0_fin,
%    add_1_rst, add_1_a, add_1_b, add_1_ret, add_1_fin;
\begin{lstlisting}
main () {
  externctrl {
    |\HL2{add\_0\_x2 -> add.param[0];}|
    |\HL2{add\_0\_x1 -> add.param[1];}|
    |\HL2{add\_0\_fin -> add.fin;}|
    |\HL2{add\_0\_rst -> add.rst;}|
    |\HL2{add\_0\_ret -> add.ret;}|
    |\HL3{add\_1\_x2 -> add.param[0];}|
    |\HL3{add\_1\_x1 -> add.param[1];}|
    |\HL3{add\_1\_fin -> add.fin;}|
    |\HL3{add\_1\_rst -> add.rst;}|
    |\HL3{add\_1\_ret -> add.ret;}|
    |\HL0{clk -> main.clk;}|
  }
  controllogic {
    |\HL1{9: state <= 8;}|
    |\HL2{8: state <= 7;}|
    |\HL2{7: state <= 12;}|
   |\HL2{12: if ({add\_0\_fin == 1}) state <= 6;}|
    |\HL2{6: state <= 5;}|
    |\HL3{5: state <= 4;}|
    |\HL3{4: state <= 10;}|
   |\HL3{10: if ({add\_1\_fin == 1}) state <= 3;}|
    |\HL3{3: state <= 2;}|
    |\HL4{2: state <= 1;}|
    |\HL4{1: state <= 11;}|
   |\HL0{11: ;}|
  }
  datapath {
    |\HL1{9: reg\_3 <= 0;}|
    |\HL2{8: reg\_6 <= 1;}|
    |\HL2{7: add\_0\_rst <= 1;}|
       |\HL2{add\_0\_a <= reg\_3;}|
       |\HL2{add\_0\_b <= reg\_6;}|
   |\HL2{12: add\_0\_rst <= 0;}|
       |\HL2{reg\_1 <= add\_0\_ret;}|
    |\HL2{6: reg\_3 <= reg\_1;}|
    |\HL3{5: reg\_5 <= 2;}|
    |\HL3{4: add\_1\_rst <= 1;}|
       |\HL3{add\_1\_a <= reg\_3;}|
       |\HL3{add\_1\_b <= reg\_5;}|
   |\HL3{10: add\_1\_rst <= 0;}|
       |\HL3{reg\_2 <= add\_1\_ret;}|
    |\HL3{3: reg\_3 <= reg\_2;}|
    |\HL4{2: reg\_4 <= reg\_3;}|
    |\HL4{1: fin = 1;}|
       |\HL4{ret = reg\_4;}|
   |\HL0{11: fin <= 0;}|
  }
}
\end{lstlisting}
\caption{Example HTL code (part 2)}
\label{fig:example_HTL2}
\end{figure}