Progress in presentation

This commit is contained in:
Clifford Wolf 2014-02-16 14:32:56 +01:00
parent 9c29969bbc
commit aeb36b0b8b
6 changed files with 74 additions and 3 deletions

View File

@ -259,7 +259,7 @@ Generate blocks and recursion are powerful tools for writing map files.
\end{itemize}
\end{frame}
\begin{frame}[t]{\subsubsecname -- Example 1/2}
\begin{frame}[t]{\subsubsecname{} -- Example 1/2}
\vskip-0.2cm
To map the Verilog OR-reduction operator to 3-input OR gates:
\vskip-0.2cm
@ -271,7 +271,7 @@ To map the Verilog OR-reduction operator to 3-input OR gates:
\end{columns}
\end{frame}
\begin{frame}[t]{\subsubsecname -- Example 2/2}
\begin{frame}[t]{\subsubsecname{} -- Example 2/2}
\vbox to 0cm{
\hfil\includegraphics[width=10cm,trim=0 0cm 0 0cm]{PRESENTATION_ExAdv/red_or3x1.pdf}
\vss
@ -284,6 +284,42 @@ To map the Verilog OR-reduction operator to 3-input OR gates:
\end{columns}
\end{frame}
\subsubsection{Conditional techmap}
\begin{frame}{\subsubsecname}
\begin{itemize}
\item In some cases only cells with certain properties should be substituted.
\medskip
\item The special wire {\tt \_TECHMAP\_FAIL\_} can be used to disable a module
in the map file for a certain set of parameters.
\medskip
\item The wire {\tt \_TECHMAP\_FAIL\_} must be set to a constant value. If it
is non-zero then the module is disabled for this set of parameters.
\medskip
\item Example use-cases:
\begin{itemize}
\item coarse-grain cell types that only operate on certain bit widths
\item memory resources for different memory geometries (width, depth, ports, etc.)
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}[t]{\subsubsecname{} -- Example}
\vbox to 0cm{
\vskip-0.5cm
\hfill\includegraphics[width=6cm,trim=0 0cm 0 0cm]{PRESENTATION_ExAdv/sym_mul.pdf}
\vss
}
\vskip-0.5cm
\lstinputlisting[basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, language=verilog]{PRESENTATION_ExAdv/sym_mul_map.v}
\begin{columns}
\column[t]{6cm}
\vskip-0.5cm\lstinputlisting[basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, frame=single, language=verilog]{PRESENTATION_ExAdv/sym_mul_test.v}
\column[t]{4cm}
\vskip-0.5cm\lstinputlisting[basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, frame=single, language=ys, lastline=4]{PRESENTATION_ExAdv/sym_mul_test.ys}
\end{columns}
\end{frame}
\subsubsection{TBD}
\begin{frame}{\subsubsecname}

View File

@ -1,5 +1,5 @@
all: select_01.pdf red_or3x1.pdf
all: select_01.pdf red_or3x1.pdf sym_mul.pdf
select_01.pdf: select_01.v select_01.ys
../../yosys select_01.ys
@ -7,3 +7,6 @@ select_01.pdf: select_01.v select_01.ys
red_or3x1.pdf: red_or3x1_*
../../yosys red_or3x1_test.ys
sym_mul.pdf: sym_mul_*
../../yosys sym_mul_test.ys

View File

@ -0,0 +1,6 @@
module MYMUL(A, B, Y);
parameter WIDTH = 1;
input [WIDTH-1:0] A, B;
output [WIDTH-1:0] Y;
assign Y = A * B;
endmodule

View File

@ -0,0 +1,15 @@
module \$mul (A, B, Y);
parameter A_SIGNED = 0;
parameter B_SIGNED = 0;
parameter A_WIDTH = 1;
parameter B_WIDTH = 1;
parameter Y_WIDTH = 1;
input [A_WIDTH-1:0] A;
input [B_WIDTH-1:0] B;
output [Y_WIDTH-1:0] Y;
wire _TECHMAP_FAIL_ = A_WIDTH != B_WIDTH || B_WIDTH != Y_WIDTH;
MYMUL #( .WIDTH(Y_WIDTH) ) g ( .A(A), .B(B), .Y(Y) );
endmodule

View File

@ -0,0 +1,5 @@
module test(A, B, C, Y1, Y2);
input [7:0] A, B, C;
output [7:0] Y1 = A * B;
output [15:0] Y2 = A * C;
endmodule

View File

@ -0,0 +1,6 @@
read_verilog sym_mul_test.v
hierarchy -check -top test
techmap -map sym_mul_map.v;;
show -prefix sym_mul -format pdf -notitle -lib sym_mul_cells.v