aboutsummaryrefslogtreecommitdiffstats
path: root/tex/model-hardware.tex
blob: df0a220f9fd6ba6e7283de722a5d4e729ddcad42 (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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
\section{Development model}
The workflow for the development is show in figure
\ref{fig:gajski-kuhn-ychart}. In the Gajski-Kuhn Y-model has 3 axis for the
perspectives of the product. It is typical to start from the behavioral axis,
by treating the systems as a black-box, and then to jump back and forth between
the other axis while gravitating towards the origin (project goal).
\begin{figure}[h]
  \centering
  \resizebox{\linewidth}{!}{
    \begin{tikzpicture}[
        font=\ttfamily,
      ]
      \draw[gray] node[
        circle,
        fill = gray,
        minimum size = 2mm,
        outer sep = 0,
        inner sep = 0,
      ] (O) at (0,0) {};

      \foreach \r/\desc in {
        1/{Electrical},
        2/{Logic gates},
        3/{Register transfer},
        4/{Architecture},
        5/{System}
      }{
        \draw[gray, dashed] (O) circle (\r);
        \draw[gray] (90:\r)
          node[
            above = 1mm,
            align = center,
            font = \small\ttfamily,
            fill = white,
          ] {\desc};
      }

      \draw[red, thick] (O) to ++(30:6)
        node[
          above = 3mm,
          align = center,
          text width = 2cm
        ] {\textbf{Structural Perspective}};
      \foreach \r/\desc in {
        1/{Transistors, Wires},
        2/{Gates, Latches, Flip-Flops},
        3/{ALUs, Registers, Memories},
        4/{Subblocks},
        5/{Top blocks, I/O}
      } {
        \draw[red] (30:\r)
          node[
            circle, minimum size = 2mm,
            fill = red,
            outer sep = 0,
            inner sep = 0
          ] {}
          node[
            below right = 2mm,
            align = left,
            font = \small\ttfamily,
            fill = white,
          ] {\desc};
      }

      \draw[blue, thick] (O) to ++(150:6)
        node[
          above = 3mm,
          align = center,
          text width = 2cm
        ] {\textbf{Behavioral Perspective}};
      \foreach \r/\desc in {
        1/{Transfer functions},
        2/{Truth tables, State graphs},
        3/{Data moves and operations},
        4/{Subtasks},
        5/{Algorithm}
      } {
        \draw[blue] (150:\r)
          node[
            circle, minimum size = 2mm,
            fill = blue,
            outer sep = 0,
            inner sep = 0
          ] {}
          node[
            below left = 2mm,
            align = right,
            font = \small\ttfamily,
            fill = white,
          ] {\desc};
      }

      \draw[green!60!black, thick] (O) to ++(270:6)
        node[
          below = 3mm,
          align = center,
          text width = 2cm
        ] {\textbf{Physical Perspective}};
      \foreach \r/\desc in {
        1/{Mask polygons, Detailed layout},
        2/{Standard cells, Macro cells},
        3/{Placement and routing},
        4/{Floorplan partitioning},
        5/{Chip or board}
      } {
        \draw[green!60!black] (270:\r)
          node[
            circle, minimum size = 2mm,
            fill = green!60!black,
            outer sep = 0,
            inner sep = 0
          ] {}
          node[
            right = 2mm,
            align = left,
            font = \small\ttfamily,
            fill = white,
          ] {\desc};
      }

    \end{tikzpicture}
  }
  \caption{
    Gajski-Kuhn Y-chart.
    \label{fig:gajski-kuhn-ychart}
  }
\end{figure}

%% TODO: finish picture
\iffalse
Figure \ref{fig:asic-design-flow} shows a typical flow diagram of how an ASIC device
is designed.
\begin{figure}[h]
  \begin{tikzpicture}[
      scale = .7,
      font = \small\ttfamily,
      bubble/.style = {
        rectangle,
        draw = black, thick,
        fill = lightgray!10,
        align = center,
        text width = 2.1cm,
        rounded corners = 5pt,
      },
      box/.style = {
        rectangle,
        draw = black, thick,
        fill = lightgray!10,
        align = center,
        text width = 2.1cm,
      },
      lib/.style = {
        rectangle,
        draw = black, gray, thick, dashed,
        fill = lightgray!10,
        align = center,
        text width = 2.1cm,
      },
      ghost/.style = {
        outer sep = 0,
        inner sep = 0,
      }
    ]
    \matrix[row sep = 5mm, column sep = 5mm]{
      \node[bubble] (dd) {Design Description}; & & \node[bubble] (tbd) {Testbench Description}; \\
      \node[ghost] (A) {}; & \node[box] (fs) {Functional Simulation}; \\
      \node[box] (so) {Synthesis \& Optimization}; & \node[lib] (se) {Standard Elements}; \\
      \node[ghost] (lineA) {}; & & \node[ghost] (lineB) {}; \\
      \node[box] (tm) {Technology Mapping}; \\
      \node[box] (ts) {Test Synthesis}; \\
      \node[bubble] (gates) {}; & \node[box] (pres) {Prelayout Simulation}; \\
      \node[box] (l) {Layout}; & \node[box] (posts) {Postlayout Simulation}; \\
      \node[bubble] (design) {}; & & \node[lib] {Technology Library}; \\
    };
  \end{tikzpicture}
  \caption{
    Design flow for an ASIC device.
    \label{fig:asic-design-flow}
  }
\end{figure}
\fi

% \section{Hardware}