diff options
author | whitequark <whitequark@whitequark.org> | 2018-12-07 17:13:52 +0000 |
---|---|---|
committer | whitequark <whitequark@whitequark.org> | 2018-12-07 17:13:52 +0000 |
commit | 7ec740b7ad4ee4bc02e2564671e0153cdd08152f (patch) | |
tree | 1509de1bf1e0413a23f48aaf066a69ea9068cb8f | |
parent | 9eb03d458dcb2a3ba91a84739e764558b26e335c (diff) | |
download | yosys-7ec740b7ad4ee4bc02e2564671e0153cdd08152f.tar.gz yosys-7ec740b7ad4ee4bc02e2564671e0153cdd08152f.tar.bz2 yosys-7ec740b7ad4ee4bc02e2564671e0153cdd08152f.zip |
opt_lut: leave intact LUTs with cascade feeding module outputs.
-rw-r--r-- | passes/opt/opt_lut.cc | 6 | ||||
-rw-r--r-- | tests/opt/opt_lut_port.il | 18 | ||||
-rw-r--r-- | tests/opt/opt_lut_port.ys | 2 |
3 files changed, 26 insertions, 0 deletions
diff --git a/passes/opt/opt_lut.cc b/passes/opt/opt_lut.cc index 4207fbdb9..ba2cc6ee7 100644 --- a/passes/opt/opt_lut.cc +++ b/passes/opt/opt_lut.cc @@ -225,6 +225,12 @@ struct OptLutWorker log("Found %s.%s (cell A) feeding %s.%s (cell B).\n", log_id(module), log_id(lutA), log_id(module), log_id(lutB)); + if (index.query_is_output(lutA->getPort("\\Y"))) + { + log(" Not combining LUTs (cascade connection feeds module output).\n"); + continue; + } + pool<SigBit> lutA_inputs; pool<SigBit> lutB_inputs; for (auto &bit : lutA_input) diff --git a/tests/opt/opt_lut_port.il b/tests/opt/opt_lut_port.il new file mode 100644 index 000000000..7eb71890f --- /dev/null +++ b/tests/opt/opt_lut_port.il @@ -0,0 +1,18 @@ +module $1 + wire width 4 input 2 \_0_ + wire output 4 \_1_ + wire input 3 \_2_ + wire output 1 \o + cell $lut \_3_ + parameter \LUT 16'0011000000000011 + parameter \WIDTH 4 + connect \A { \_0_ [3] \o 2'00 } + connect \Y \_1_ + end + cell $lut \_4_ + parameter \LUT 4'0001 + parameter \WIDTH 4 + connect \A { 3'000 \_2_ } + connect \Y \o + end +end diff --git a/tests/opt/opt_lut_port.ys b/tests/opt/opt_lut_port.ys new file mode 100644 index 000000000..51dfd988b --- /dev/null +++ b/tests/opt/opt_lut_port.ys @@ -0,0 +1,2 @@ +read_ilang opt_lut_port.il +select -assert-count 2 t:$lut |