mirror of
https://github.com/YosysHQ/yosys
synced 2025-08-22 11:07:52 +00:00
Renamed opt_const to opt_expr
This commit is contained in:
parent
d31c968d76
commit
1d0f0d668a
14 changed files with 84 additions and 83 deletions
|
@ -208,7 +208,7 @@ read_verilog -sv $1;
|
|||
hierarchy -top $3; hierarchy -libdir $DIR;
|
||||
hierarchy -check;
|
||||
proc; opt;
|
||||
opt_const -mux_undef; opt;
|
||||
opt_expr -mux_undef; opt;
|
||||
rename -hide;;;
|
||||
splice; opt;
|
||||
memory_dff -wr_only; memory_collect;;
|
||||
|
@ -263,7 +263,7 @@ read_verilog -sv $1;
|
|||
hierarchy -top $3; hierarchy -libdir $DIR;
|
||||
hierarchy -check;
|
||||
proc; opt;
|
||||
opt_const -mux_undef; opt;
|
||||
opt_expr -mux_undef; opt;
|
||||
rename -hide;;;
|
||||
splice; opt;
|
||||
memory;;
|
||||
|
|
|
@ -15,7 +15,7 @@ passes that each perform a simple optimization:
|
|||
\begin{itemize}
|
||||
\item Once at the beginning of {\tt opt}:
|
||||
\begin{itemize}
|
||||
\item {\tt opt\_const}
|
||||
\item {\tt opt\_expr}
|
||||
\item {\tt opt\_share -nomux}
|
||||
\end{itemize}
|
||||
\item Repeat until result is stable:
|
||||
|
@ -25,13 +25,13 @@ passes that each perform a simple optimization:
|
|||
\item {\tt opt\_share}
|
||||
\item {\tt opt\_rmdff}
|
||||
\item {\tt opt\_clean}
|
||||
\item {\tt opt\_const}
|
||||
\item {\tt opt\_expr}
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
The following section describes each of the {\tt opt\_*} passes.
|
||||
|
||||
\subsection{The opt\_const pass}
|
||||
\subsection{The opt\_expr pass}
|
||||
|
||||
This pass performs const folding on the internal combinational cell types
|
||||
described in Chap.~\ref{chapter:celllib}. This means a cell with all constant
|
||||
|
@ -57,11 +57,11 @@ this pass can also optimize cells with some constant inputs.
|
|||
$a$ & 1 & $a$ \\
|
||||
1 & $b$ & $b$ \\
|
||||
\end{tabular}
|
||||
\caption{Const folding rules for {\tt\$\_AND\_} cells as used in {\tt opt\_const}.}
|
||||
\label{tab:opt_const_and}
|
||||
\caption{Const folding rules for {\tt\$\_AND\_} cells as used in {\tt opt\_expr}.}
|
||||
\label{tab:opt_expr_and}
|
||||
\end{table}
|
||||
|
||||
Table~\ref{tab:opt_const_and} shows the replacement rules used for optimizing
|
||||
Table~\ref{tab:opt_expr_and} shows the replacement rules used for optimizing
|
||||
an {\tt\$\_AND\_} gate. The first three rules implement the obvious const folding
|
||||
rules. Note that `any' might include dynamic values calculated by other parts
|
||||
of the circuit. The following three lines propagate undef (X) states.
|
||||
|
@ -76,10 +76,10 @@ an undef value or a 1 and therefore the output can be set to undef.
|
|||
The last two lines simply replace an {\tt\$\_AND\_} gate with one constant-1
|
||||
input with a buffer.
|
||||
|
||||
Besides this basic const folding the {\tt opt\_const} pass can replace 1-bit wide
|
||||
Besides this basic const folding the {\tt opt\_expr} pass can replace 1-bit wide
|
||||
{\tt \$eq} and {\tt \$ne} cells with buffers or not-gates if one input is constant.
|
||||
|
||||
The {\tt opt\_const} pass is very conservative regarding optimizing {\tt \$mux} cells,
|
||||
The {\tt opt\_expr} pass is very conservative regarding optimizing {\tt \$mux} cells,
|
||||
as these cells are often used to model decision-trees and breaking these trees can
|
||||
interfere with other optimizations.
|
||||
|
||||
|
|
|
@ -488,7 +488,7 @@ select.cc}, {\tt show.cc}, \dots) and a couple of other small utility libraries.
|
|||
\item {\tt passes/} \\
|
||||
This directory contains a subdirectory for each pass or group of passes. For example as
|
||||
of this writing the directory {\tt passes/opt/} contains the code for seven
|
||||
passes: {\tt opt}, {\tt opt\_const}, {\tt opt\_muxtree}, {\tt opt\_reduce},
|
||||
passes: {\tt opt}, {\tt opt\_expr}, {\tt opt\_muxtree}, {\tt opt\_reduce},
|
||||
{\tt opt\_rmdff}, {\tt opt\_rmunused} and {\tt opt\_share}.
|
||||
|
||||
\item {\tt techlibs/} \\
|
||||
|
|
|
@ -144,7 +144,7 @@ The {\tt opt} command implements a series of simple optimizations. It also
|
|||
is a macro command that calls other commands:
|
||||
|
||||
\begin{lstlisting}[xleftmargin=0.5cm, basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, language=ys]
|
||||
opt_const # const folding
|
||||
opt_expr # const folding and simple expression rewriting
|
||||
opt_share -nomux # merging identical cells
|
||||
|
||||
do
|
||||
|
@ -153,7 +153,7 @@ do
|
|||
opt_share # merging identical cells
|
||||
opt_rmdff # remove/simplify registers with constant inputs
|
||||
opt_clean # remove unused objects (cells, wires) from design
|
||||
opt_const # const folding
|
||||
opt_expr # const folding and simple expression rewriting
|
||||
while [changed design]
|
||||
\end{lstlisting}
|
||||
|
||||
|
@ -161,7 +161,7 @@ The command {\tt clean} can be used as alias for {\tt opt\_clean}. And {\tt ;;}
|
|||
can be used as shortcut for {\tt clean}. For example:
|
||||
|
||||
\begin{lstlisting}[xleftmargin=0.5cm, basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, language=ys]
|
||||
proc; opt; memory; opt_const;; fsm;;
|
||||
proc; opt; memory; opt_expr;; fsm;;
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue