aboutsummaryrefslogtreecommitdiffstats
path: root/passes/pmgen
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2019-08-21 18:43:17 -0700
committerEddie Hung <eddie@fpgeh.com>2019-08-21 18:43:17 -0700
commit7e7965ca7b3bbeb79cb70014da7bc48c08a74adb (patch)
tree15030ecf9f8f0be8a553f744ed2a4322e999dc1a /passes/pmgen
parented7be3e6b68521b2f147034f811a19bd7af86d1a (diff)
downloadyosys-7e7965ca7b3bbeb79cb70014da7bc48c08a74adb.tar.gz
yosys-7e7965ca7b3bbeb79cb70014da7bc48c08a74adb.tar.bz2
yosys-7e7965ca7b3bbeb79cb70014da7bc48c08a74adb.zip
Trim shiftx_width when upper bits are 1'bx
Diffstat (limited to 'passes/pmgen')
-rw-r--r--passes/pmgen/xilinx_srl.pmg7
1 files changed, 6 insertions, 1 deletions
diff --git a/passes/pmgen/xilinx_srl.pmg b/passes/pmgen/xilinx_srl.pmg
index 3f4efebe9..d3ba0109f 100644
--- a/passes/pmgen/xilinx_srl.pmg
+++ b/passes/pmgen/xilinx_srl.pmg
@@ -164,6 +164,11 @@ endmatch
code shiftx_width
shiftx_width = param(shiftx, \A_WIDTH).as_int();
+ while (shiftx_width > 1) {
+ if (port(shiftx, \A)[shiftx_width-1] != State::Sx)
+ break;
+ --shiftx_width;
+ }
endcode
match first
@@ -177,7 +182,7 @@ code
chain.push_back(first);
subpattern(tail);
finally
- if (GetSize(chain) == param(shiftx, \A_WIDTH).as_int())
+ if (GetSize(chain) == shiftx_width)
accept;
chain.clear();
endcode