mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-07 09:55:20 +00:00
Progress in presentation
This commit is contained in:
parent
9c29969bbc
commit
aeb36b0b8b
|
@ -259,7 +259,7 @@ Generate blocks and recursion are powerful tools for writing map files.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
\begin{frame}[t]{\subsubsecname -- Example 1/2}
|
\begin{frame}[t]{\subsubsecname{} -- Example 1/2}
|
||||||
\vskip-0.2cm
|
\vskip-0.2cm
|
||||||
To map the Verilog OR-reduction operator to 3-input OR gates:
|
To map the Verilog OR-reduction operator to 3-input OR gates:
|
||||||
\vskip-0.2cm
|
\vskip-0.2cm
|
||||||
|
@ -271,7 +271,7 @@ To map the Verilog OR-reduction operator to 3-input OR gates:
|
||||||
\end{columns}
|
\end{columns}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
\begin{frame}[t]{\subsubsecname -- Example 2/2}
|
\begin{frame}[t]{\subsubsecname{} -- Example 2/2}
|
||||||
\vbox to 0cm{
|
\vbox to 0cm{
|
||||||
\hfil\includegraphics[width=10cm,trim=0 0cm 0 0cm]{PRESENTATION_ExAdv/red_or3x1.pdf}
|
\hfil\includegraphics[width=10cm,trim=0 0cm 0 0cm]{PRESENTATION_ExAdv/red_or3x1.pdf}
|
||||||
\vss
|
\vss
|
||||||
|
@ -284,6 +284,42 @@ To map the Verilog OR-reduction operator to 3-input OR gates:
|
||||||
\end{columns}
|
\end{columns}
|
||||||
\end{frame}
|
\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}
|
\subsubsection{TBD}
|
||||||
|
|
||||||
\begin{frame}{\subsubsecname}
|
\begin{frame}{\subsubsecname}
|
||||||
|
|
|
@ -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
|
select_01.pdf: select_01.v select_01.ys
|
||||||
../../yosys 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_*
|
red_or3x1.pdf: red_or3x1_*
|
||||||
../../yosys red_or3x1_test.ys
|
../../yosys red_or3x1_test.ys
|
||||||
|
|
||||||
|
sym_mul.pdf: sym_mul_*
|
||||||
|
../../yosys sym_mul_test.ys
|
||||||
|
|
||||||
|
|
6
manual/PRESENTATION_ExAdv/sym_mul_cells.v
Normal file
6
manual/PRESENTATION_ExAdv/sym_mul_cells.v
Normal 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
|
15
manual/PRESENTATION_ExAdv/sym_mul_map.v
Normal file
15
manual/PRESENTATION_ExAdv/sym_mul_map.v
Normal 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
|
5
manual/PRESENTATION_ExAdv/sym_mul_test.v
Normal file
5
manual/PRESENTATION_ExAdv/sym_mul_test.v
Normal 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
|
6
manual/PRESENTATION_ExAdv/sym_mul_test.ys
Normal file
6
manual/PRESENTATION_ExAdv/sym_mul_test.ys
Normal 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
|
Loading…
Reference in a new issue