72b02127a63c4c5a07125bf4971422b6973867d2
2 * yosys -- Yosys Open SYnthesis Suite
4 * Copyright (C) 2012 Clifford Wolf <clifford@clifford.at>
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 #include "kernel/yosys.h"
21 #include "kernel/sigtools.h"
24 PRIVATE_NAMESPACE_BEGIN
28 #include "passes/pmgen/peepopt_pm.h"
30 struct PeepoptPass
: public Pass
{
31 PeepoptPass() : Pass("peepopt", "collection of peephole optimizers") { }
32 void help() YS_OVERRIDE
34 // |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
36 log(" peepopt [options] [selection]\n");
38 log("This pass applies a collection of peephole optimizers to the current design.\n");
41 void execute(std::vector
<std::string
> args
, RTLIL::Design
*design
) YS_OVERRIDE
43 log_header(design
, "Executing PEEPOPT pass (run peephole optimizers).\n");
46 for (argidx
= 1; argidx
< args
.size(); argidx
++)
48 // if (args[argidx] == "-singleton") {
49 // singleton_mode = true;
54 extra_args(args
, argidx
, design
);
56 for (auto module
: design
->selected_modules()) {
58 while (did_something
) {
59 did_something
= false;
60 peepopt_pm
pm(module
, module
->selected_cells());