diff options
author | Eddie Hung <eddie@fpgeh.com> | 2019-08-30 10:32:03 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-30 10:32:03 -0700 |
commit | 36e38ed46ae4b24be7b627a21a6627437db1ec61 (patch) | |
tree | 55636fe366512c0ed8a4484254a54d45323fcac3 /passes/pmgen/test_pmgen.cc | |
parent | 9c4e1c6a8fc47f44011f1f75e9493a1bc2de520d (diff) | |
parent | 6e475484b262a93562560e5f4558483558777e76 (diff) | |
download | yosys-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.cc | 12 |
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 |