diff options
author | Eddie Hung <eddie@fpgeh.com> | 2019-10-08 10:53:30 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-08 10:53:30 -0700 |
commit | 472b5d33a624c2e414ce733c1cda0b97bce24094 (patch) | |
tree | 0da9ac82c0ab9a7697d29365d44530f15498635e /passes/pmgen/xilinx_dsp.cc | |
parent | 4072a9666339c76fbef19eac307486d48ed0ae28 (diff) | |
parent | f90a4b1e24e36943a343bd36315b6029dd6cd044 (diff) | |
download | yosys-472b5d33a624c2e414ce733c1cda0b97bce24094.tar.gz yosys-472b5d33a624c2e414ce733c1cda0b97bce24094.tar.bz2 yosys-472b5d33a624c2e414ce733c1cda0b97bce24094.zip |
Merge pull request #1438 from YosysHQ/eddie/xilinx_dsp_comments
Add notes and comments for xilinx_dsp
Diffstat (limited to 'passes/pmgen/xilinx_dsp.cc')
-rw-r--r-- | passes/pmgen/xilinx_dsp.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/passes/pmgen/xilinx_dsp.cc b/passes/pmgen/xilinx_dsp.cc index 3ff921957..054e123e4 100644 --- a/passes/pmgen/xilinx_dsp.cc +++ b/passes/pmgen/xilinx_dsp.cc @@ -609,8 +609,13 @@ struct XilinxDspPass : public Pass { extra_args(args, argidx, design); for (auto module : design->selected_modules()) { + // Experimental feature: pack $add/$sub cells with + // (* use_dsp48="simd" *) into DSP48E1's using its + // SIMD feature xilinx_simd_pack(module, module->selected_cells()); + // Match for all features ([ABDMP][12]?REG, pre-adder, + // post-adder, pattern detector, etc.) except for CREG { xilinx_dsp_pm pm(module, module->selected_cells()); pm.run_xilinx_dsp_pack(xilinx_dsp_pack); @@ -619,14 +624,17 @@ struct XilinxDspPass : public Pass { // is no guarantee that the cell ordering corresponds // to the "expected" case (i.e. the order in which // they appear in the source) thus the possiblity - // existed that a register got packed as CREG into a + // existed that a register got packed as a CREG into a // downstream DSP that should have otherwise been a - // PREG of an upstream DSP that had not been pattern - // matched yet + // PREG of an upstream DSP that had not been visited + // yet { xilinx_dsp_CREG_pm pm(module, module->selected_cells()); pm.run_xilinx_dsp_packC(xilinx_dsp_packC); } + // Lastly, identify and utilise PCOUT -> PCIN, + // ACOUT -> ACIN, and BCOUT-> BCIN dedicated cascade + // chains { xilinx_dsp_cascade_pm pm(module, module->selected_cells()); pm.run_xilinx_dsp_cascade(); |