Renamed opt_share to opt_merge

This commit is contained in:
Clifford Wolf 2016-03-31 08:52:49 +02:00
parent 1d0f0d668a
commit ec93680bd5
8 changed files with 28 additions and 28 deletions

View File

@ -16,13 +16,13 @@ passes that each perform a simple optimization:
\item Once at the beginning of {\tt opt}: \item Once at the beginning of {\tt opt}:
\begin{itemize} \begin{itemize}
\item {\tt opt\_expr} \item {\tt opt\_expr}
\item {\tt opt\_share -nomux} \item {\tt opt\_merge -nomux}
\end{itemize} \end{itemize}
\item Repeat until result is stable: \item Repeat until result is stable:
\begin{itemize} \begin{itemize}
\item {\tt opt\_muxtree} \item {\tt opt\_muxtree}
\item {\tt opt\_reduce} \item {\tt opt\_reduce}
\item {\tt opt\_share} \item {\tt opt\_merge}
\item {\tt opt\_rmdff} \item {\tt opt\_rmdff}
\item {\tt opt\_clean} \item {\tt opt\_clean}
\item {\tt opt\_expr} \item {\tt opt\_expr}
@ -130,7 +130,7 @@ This pass identifies unused signals and cells and removes them from the design.
creates an \B{unused\_bits} attribute on wires with unused bits. This attribute can be creates an \B{unused\_bits} attribute on wires with unused bits. This attribute can be
used for debugging or by other optimization passes. used for debugging or by other optimization passes.
\subsection{The opt\_share pass} \subsection{The opt\_merge pass}
This pass performs trivial resource sharing. This means that this pass identifies cells This pass performs trivial resource sharing. This means that this pass identifies cells
with identical inputs and replaces them with a single instance of the cell. with identical inputs and replaces them with a single instance of the cell.

View File

@ -489,7 +489,7 @@ select.cc}, {\tt show.cc}, \dots) and a couple of other small utility libraries.
This directory contains a subdirectory for each pass or group of passes. For example as 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 of this writing the directory {\tt passes/opt/} contains the code for seven
passes: {\tt opt}, {\tt opt\_expr}, {\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}. {\tt opt\_rmdff}, {\tt opt\_rmunused} and {\tt opt\_merge}.
\item {\tt techlibs/} \\ \item {\tt techlibs/} \\
This directory contains simulation models and standard implementations for the This directory contains simulation models and standard implementations for the
@ -513,7 +513,7 @@ Yosys. So it is not needed to add additional commands to a central list of comma
\end{sloppypar} \end{sloppypar}
Good starting points for reading example source code to learn how to write passes Good starting points for reading example source code to learn how to write passes
are {\tt passes/opt/opt\_rmdff.cc} and {\tt passes/opt/opt\_share.cc}. are {\tt passes/opt/opt\_rmdff.cc} and {\tt passes/opt/opt\_merge.cc}.
See the top-level README file for a quick {\it Getting Started} guide and build See the top-level README file for a quick {\it Getting Started} guide and build
instructions. The Yosys build is based solely on Makefiles. instructions. The Yosys build is based solely on Makefiles.

View File

@ -145,12 +145,12 @@ is a macro command that calls other commands:
\begin{lstlisting}[xleftmargin=0.5cm, basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, language=ys] \begin{lstlisting}[xleftmargin=0.5cm, basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, language=ys]
opt_expr # const folding and simple expression rewriting opt_expr # const folding and simple expression rewriting
opt_share -nomux # merging identical cells opt_merge -nomux # merging identical cells
do do
opt_muxtree # remove never-active branches from multiplexer tree opt_muxtree # remove never-active branches from multiplexer tree
opt_reduce # consolidate trees of boolean ops to reduce functions opt_reduce # consolidate trees of boolean ops to reduce functions
opt_share # merging identical cells opt_merge # merging identical cells
opt_rmdff # remove/simplify registers with constant inputs opt_rmdff # remove/simplify registers with constant inputs
opt_clean # remove unused objects (cells, wires) from design opt_clean # remove unused objects (cells, wires) from design
opt_expr # const folding and simple expression rewriting opt_expr # const folding and simple expression rewriting

View File

@ -746,7 +746,7 @@ struct MemorySharePass : public Pass {
log("\n"); log("\n");
log("Note that in addition to the algorithms implemented in this pass, the $memrd\n"); log("Note that in addition to the algorithms implemented in this pass, the $memrd\n");
log("and $memwr cells are also subject to generic resource sharing passes (and other\n"); log("and $memwr cells are also subject to generic resource sharing passes (and other\n");
log("optimizations) such as opt_share.\n"); log("optimizations) such as \"share\" and \"opt_merge\".\n");
log("\n"); log("\n");
} }
virtual void execute(std::vector<std::string> args, RTLIL::Design *design) { virtual void execute(std::vector<std::string> args, RTLIL::Design *design) {

View File

@ -1,6 +1,6 @@
OBJS += passes/opt/opt.o OBJS += passes/opt/opt.o
OBJS += passes/opt/opt_share.o OBJS += passes/opt/opt_merge.o
OBJS += passes/opt/opt_muxtree.o OBJS += passes/opt/opt_muxtree.o
OBJS += passes/opt/opt_reduce.o OBJS += passes/opt/opt_reduce.o
OBJS += passes/opt/opt_rmdff.o OBJS += passes/opt/opt_rmdff.o

View File

@ -38,12 +38,12 @@ struct OptPass : public Pass {
log("passes in the following order:\n"); log("passes in the following order:\n");
log("\n"); log("\n");
log(" opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n"); log(" opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n");
log(" opt_share [-share_all] -nomux\n"); log(" opt_merge [-share_all] -nomux\n");
log("\n"); log("\n");
log(" do\n"); log(" do\n");
log(" opt_muxtree\n"); log(" opt_muxtree\n");
log(" opt_reduce [-fine] [-full]\n"); log(" opt_reduce [-fine] [-full]\n");
log(" opt_share [-share_all]\n"); log(" opt_merge [-share_all]\n");
log(" opt_rmdff\n"); log(" opt_rmdff\n");
log(" opt_clean [-purge]\n"); log(" opt_clean [-purge]\n");
log(" opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n"); log(" opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n");
@ -53,7 +53,7 @@ struct OptPass : public Pass {
log("\n"); log("\n");
log(" do\n"); log(" do\n");
log(" opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n"); log(" opt_expr [-mux_undef] [-mux_bool] [-undriven] [-clkinv] [-fine] [-full] [-keepdc]\n");
log(" opt_share [-share_all]\n"); log(" opt_merge [-share_all]\n");
log(" opt_rmdff\n"); log(" opt_rmdff\n");
log(" opt_clean [-purge]\n"); log(" opt_clean [-purge]\n");
log(" while <changed design in opt_rmdff>\n"); log(" while <changed design in opt_rmdff>\n");
@ -68,7 +68,7 @@ struct OptPass : public Pass {
std::string opt_clean_args; std::string opt_clean_args;
std::string opt_expr_args; std::string opt_expr_args;
std::string opt_reduce_args; std::string opt_reduce_args;
std::string opt_share_args; std::string opt_merge_args;
bool fast_mode = false; bool fast_mode = false;
log_header("Executing OPT pass (performing simple optimizations).\n"); log_header("Executing OPT pass (performing simple optimizations).\n");
@ -111,7 +111,7 @@ struct OptPass : public Pass {
continue; continue;
} }
if (args[argidx] == "-share_all") { if (args[argidx] == "-share_all") {
opt_share_args += " -share_all"; opt_merge_args += " -share_all";
continue; continue;
} }
if (args[argidx] == "-fast") { if (args[argidx] == "-fast") {
@ -126,7 +126,7 @@ struct OptPass : public Pass {
{ {
while (1) { while (1) {
Pass::call(design, "opt_expr" + opt_expr_args); Pass::call(design, "opt_expr" + opt_expr_args);
Pass::call(design, "opt_share" + opt_share_args); Pass::call(design, "opt_merge" + opt_merge_args);
design->scratchpad_unset("opt.did_something"); design->scratchpad_unset("opt.did_something");
Pass::call(design, "opt_rmdff"); Pass::call(design, "opt_rmdff");
if (design->scratchpad_get_bool("opt.did_something") == false) if (design->scratchpad_get_bool("opt.did_something") == false)
@ -139,12 +139,12 @@ struct OptPass : public Pass {
else else
{ {
Pass::call(design, "opt_expr" + opt_expr_args); Pass::call(design, "opt_expr" + opt_expr_args);
Pass::call(design, "opt_share -nomux" + opt_share_args); Pass::call(design, "opt_merge -nomux" + opt_merge_args);
while (1) { while (1) {
design->scratchpad_unset("opt.did_something"); design->scratchpad_unset("opt.did_something");
Pass::call(design, "opt_muxtree"); Pass::call(design, "opt_muxtree");
Pass::call(design, "opt_reduce" + opt_reduce_args); Pass::call(design, "opt_reduce" + opt_reduce_args);
Pass::call(design, "opt_share" + opt_share_args); Pass::call(design, "opt_merge" + opt_merge_args);
Pass::call(design, "opt_rmdff"); Pass::call(design, "opt_rmdff");
Pass::call(design, "opt_clean" + opt_clean_args); Pass::call(design, "opt_clean" + opt_clean_args);
Pass::call(design, "opt_expr" + opt_expr_args); Pass::call(design, "opt_expr" + opt_expr_args);

View File

@ -31,7 +31,7 @@
USING_YOSYS_NAMESPACE USING_YOSYS_NAMESPACE
PRIVATE_NAMESPACE_BEGIN PRIVATE_NAMESPACE_BEGIN
struct OptShareWorker struct OptMergeWorker
{ {
RTLIL::Design *design; RTLIL::Design *design;
RTLIL::Module *module; RTLIL::Module *module;
@ -212,14 +212,14 @@ struct OptShareWorker
} }
struct CompareCells { struct CompareCells {
OptShareWorker *that; OptMergeWorker *that;
CompareCells(OptShareWorker *that) : that(that) {} CompareCells(OptMergeWorker *that) : that(that) {}
bool operator()(const RTLIL::Cell *cell1, const RTLIL::Cell *cell2) const { bool operator()(const RTLIL::Cell *cell1, const RTLIL::Cell *cell2) const {
return that->compare_cells(cell1, cell2); return that->compare_cells(cell1, cell2);
} }
}; };
OptShareWorker(RTLIL::Design *design, RTLIL::Module *module, bool mode_nomux, bool mode_share_all) : OptMergeWorker(RTLIL::Design *design, RTLIL::Module *module, bool mode_nomux, bool mode_share_all) :
design(design), module(module), assign_map(module), mode_share_all(mode_share_all) design(design), module(module), assign_map(module), mode_share_all(mode_share_all)
{ {
total_count = 0; total_count = 0;
@ -286,13 +286,13 @@ struct OptShareWorker
} }
}; };
struct OptSharePass : public Pass { struct OptMergePass : public Pass {
OptSharePass() : Pass("opt_share", "consolidate identical cells") { } OptMergePass() : Pass("opt_merge", "consolidate identical cells") { }
virtual void help() virtual void help()
{ {
// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| // |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
log("\n"); log("\n");
log(" opt_share [options] [selection]\n"); log(" opt_merge [options] [selection]\n");
log("\n"); log("\n");
log("This pass identifies cells with identical type and input signals. Such cells\n"); log("This pass identifies cells with identical type and input signals. Such cells\n");
log("are then merged to one cell.\n"); log("are then merged to one cell.\n");
@ -328,7 +328,7 @@ struct OptSharePass : public Pass {
int total_count = 0; int total_count = 0;
for (auto module : design->selected_modules()) { for (auto module : design->selected_modules()) {
OptShareWorker worker(design, module, mode_nomux, mode_share_all); OptMergeWorker worker(design, module, mode_nomux, mode_share_all);
total_count += worker.total_count; total_count += worker.total_count;
} }
@ -336,6 +336,6 @@ struct OptSharePass : public Pass {
design->scratchpad_set_bool("opt.did_something", true); design->scratchpad_set_bool("opt.did_something", true);
log("Removed a total of %d cells.\n", total_count); log("Removed a total of %d cells.\n", total_count);
} }
} OptSharePass; } OptMergePass;
PRIVATE_NAMESPACE_END PRIVATE_NAMESPACE_END

View File

@ -128,7 +128,7 @@ struct Ice40OptPass : public Pass {
log(" do\n"); log(" do\n");
log(" <ice40 specific optimizations>\n"); log(" <ice40 specific optimizations>\n");
log(" opt_expr -mux_undef -undriven [-full]\n"); log(" opt_expr -mux_undef -undriven [-full]\n");
log(" opt_share\n"); log(" opt_merge\n");
log(" opt_rmdff\n"); log(" opt_rmdff\n");
log(" opt_clean\n"); log(" opt_clean\n");
log(" while <changed design>\n"); log(" while <changed design>\n");
@ -159,7 +159,7 @@ struct Ice40OptPass : public Pass {
run_ice40_opts(module); run_ice40_opts(module);
Pass::call(design, "opt_expr " + opt_expr_args); Pass::call(design, "opt_expr " + opt_expr_args);
Pass::call(design, "opt_share"); Pass::call(design, "opt_merge");
Pass::call(design, "opt_rmdff"); Pass::call(design, "opt_rmdff");
Pass::call(design, "opt_clean"); Pass::call(design, "opt_clean");