aboutsummaryrefslogtreecommitdiffstats
path: root/passes/pmgen/xilinx_dsp.pmg
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2019-09-05 11:55:14 -0700
committerEddie Hung <eddie@fpgeh.com>2019-09-05 11:55:14 -0700
commit7bd55f379ca3bf8f79c290e9851d14b20c1f5c28 (patch)
tree2c30692f3ccdb89b1d111aa10053ed9fdd62727b /passes/pmgen/xilinx_dsp.pmg
parentfe5a1324c953cee51774228723e73a2ecac9a45b (diff)
downloadyosys-7bd55f379ca3bf8f79c290e9851d14b20c1f5c28.tar.gz
yosys-7bd55f379ca3bf8f79c290e9851d14b20c1f5c28.tar.bz2
yosys-7bd55f379ca3bf8f79c290e9851d14b20c1f5c28.zip
Use filter instead of index; support wide enable muxes
Diffstat (limited to 'passes/pmgen/xilinx_dsp.pmg')
-rw-r--r--passes/pmgen/xilinx_dsp.pmg12
1 files changed, 8 insertions, 4 deletions
diff --git a/passes/pmgen/xilinx_dsp.pmg b/passes/pmgen/xilinx_dsp.pmg
index d7632da6f..cee1906d6 100644
--- a/passes/pmgen/xilinx_dsp.pmg
+++ b/passes/pmgen/xilinx_dsp.pmg
@@ -66,9 +66,11 @@ endcode
match ffAmux
if ffA
select ffAmux->type.in($mux)
+ filter GetSize(port(ffAmux, \Y)) >= GetSize(sigA)
+ slice offset GetSize(port(ffAmux, \Y))
+ filter offset+GetSize(sigA) <= GetSize(port(ffAmux, \Y)) && port(ffAmux, \Y).extract(offset, GetSize(sigA)) == sigA
choice <IdString> AB {\A, \B}
- index <SigSpec> port(ffAmux, \Y) === sigA
- index <SigSpec> port(ffAmux, AB) === sigffAmux
+ filter offset+GetSize(sigffAmux) <= GetSize(port(ffAmux, \Y)) && port(ffAmux, AB).extract(offset, GetSize(sigffAmux)) == sigffAmux
set ffAmuxAB AB
semioptional
endmatch
@@ -105,9 +107,11 @@ endcode
match ffBmux
if ffB
select ffBmux->type.in($mux)
+ filter GetSize(port(ffBmux, \Y)) >= GetSize(sigB)
+ slice offset GetSize(port(ffBmux, \Y))
+ filter offset+GetSize(sigB) <= GetSize(port(ffBmux, \Y)) && port(ffBmux, \Y).extract(offset, GetSize(sigB)) == sigB
choice <IdString> AB {\A, \B}
- index <SigSpec> port(ffBmux, \Y) === sigB
- index <SigSpec> port(ffBmux, AB) === sigffBmux
+ filter offset+GetSize(sigffBmux) <= GetSize(port(ffBmux, \Y)) && port(ffBmux, AB).extract(offset, GetSize(sigffBmux)) == sigffBmux
set ffBmuxAB AB
semioptional
endmatch