aboutsummaryrefslogtreecommitdiffstats
path: root/passes/pmgen/test_pmgen.cc
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2019-08-30 10:32:03 -0700
committerGitHub <noreply@github.com>2019-08-30 10:32:03 -0700
commit36e38ed46ae4b24be7b627a21a6627437db1ec61 (patch)
tree55636fe366512c0ed8a4484254a54d45323fcac3 /passes/pmgen/test_pmgen.cc
parent9c4e1c6a8fc47f44011f1f75e9493a1bc2de520d (diff)
parent6e475484b262a93562560e5f4558483558777e76 (diff)
downloadyosys-36e38ed46ae4b24be7b627a21a6627437db1ec61.tar.gz
yosys-36e38ed46ae4b24be7b627a21a6627437db1ec61.tar.bz2
yosys-36e38ed46ae4b24be7b627a21a6627437db1ec61.zip
Merge pull request #1321 from YosysHQ/eddie/xilinx_srl
xilinx_srl pass for shift register extraction
Diffstat (limited to 'passes/pmgen/test_pmgen.cc')
-rw-r--r--passes/pmgen/test_pmgen.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/passes/pmgen/test_pmgen.cc b/passes/pmgen/test_pmgen.cc
index 0ad769dfd..4f3eec935 100644
--- a/passes/pmgen/test_pmgen.cc
+++ b/passes/pmgen/test_pmgen.cc
@@ -28,6 +28,7 @@ bool did_something;
#include "passes/pmgen/test_pmgen_pm.h"
#include "passes/pmgen/ice40_dsp_pm.h"
+#include "passes/pmgen/xilinx_srl_pm.h"
#include "passes/pmgen/peepopt_pm.h"
void reduce_chain(test_pmgen_pm &pm)
@@ -180,7 +181,7 @@ void generate_pattern(std::function<void(pm&,std::function<void()>)> run, const
while (modcnt < maxmodcnt && submodcnt < maxsubcnt && itercnt++ < 1000)
{
if (timeout++ > 10000)
- log_error("pmgen generator is stuck: 10000 iterations an no matching module generated.\n");
+ log_error("pmgen generator is stuck: 10000 iterations with no matching module generated.\n");
pm matcher(mod, mod->cells());
@@ -216,7 +217,7 @@ void generate_pattern(std::function<void(pm&,std::function<void()>)> run, const
run(matcher, [](){});
}
- if (submodcnt)
+ if (submodcnt && maxsubcnt < (1 << 16))
maxsubcnt *= 2;
design->remove(mod);
@@ -349,13 +350,18 @@ struct TestPmgenPass : public Pass {
if (pattern == "ice40_dsp")
return GENERATE_PATTERN(ice40_dsp_pm, ice40_dsp);
+ if (pattern == "xilinx_srl.fixed")
+ return GENERATE_PATTERN(xilinx_srl_pm, fixed);
+ if (pattern == "xilinx_srl.variable")
+ return GENERATE_PATTERN(xilinx_srl_pm, variable);
+
if (pattern == "peepopt-muldiv")
return GENERATE_PATTERN(peepopt_pm, muldiv);
if (pattern == "peepopt-shiftmul")
return GENERATE_PATTERN(peepopt_pm, shiftmul);
- log_cmd_error("Unkown pattern: %s\n", pattern.c_str());
+ log_cmd_error("Unknown pattern: %s\n", pattern.c_str());
}
void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE