verilator/test_regress/t/t_dfg_circular.v
Geza Lore c9d6344f2f DFG: Extract cyclic components separately
A lot of optimizations in DFG assume a DAG, but the more things are
representable, the more likely it is that a small cyclic sub-graph is
present in an otherwise very large graph that is mostly acyclic. In
order to avoid loosing optimization opportunities, we explicitly extract
the cyclic sub-graphs (which are the strongly connected components +
anything feeing them, up to variable boundaries) and treat them
separately. This enables optimization of the remaining input.
2022-09-30 09:51:10 +01:00

45 lines
724 B
Systemverilog

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2022 by Geza Lore.
// SPDX-License-Identifier: CC0-1.0
// verilator lint_off UNOPTFLAT
module t (
input wire i,
output wire o
);
wire a;
wire b;
wire c;
wire d;
assign c = i + 1'b1;
assign d = c + 1'b1;
assign a = b + d;
assign b = a + 1'b1;
wire p;
wire q;
wire r;
wire s;
assign p = i + 1'b1;
assign q = p + 1'b1;
assign r = s ^ q;
assign s = r + 1'b1;
wire x;
wire y;
wire z;
wire w;
assign x = y ^ i;
assign y = x;
assign z = w;
assign w = y & z;
assign o = b | x;
endmodule