mirror of https://github.com/YosysHQ/yosys.git
Copy with 1'bx padding in $shiftx
This commit is contained in:
parent
ea0e0722bb
commit
acafcdc94d
|
@ -178,7 +178,17 @@ struct ShregmapTechXilinx7 : ShregmapTech
|
||||||
|
|
||||||
// Only map if $shiftx exclusively covers the shift register
|
// Only map if $shiftx exclusively covers the shift register
|
||||||
if (shiftx->type == "$shiftx") {
|
if (shiftx->type == "$shiftx") {
|
||||||
if (GetSize(taps) != shiftx->getParam("\\A_WIDTH").as_int())
|
if (GetSize(taps) > shiftx->getParam("\\A_WIDTH").as_int())
|
||||||
|
return false;
|
||||||
|
// Due to padding the most significant bits of A may be 1'bx,
|
||||||
|
// and if so, discount them
|
||||||
|
if (GetSize(taps) < shiftx->getParam("\\A_WIDTH").as_int()) {
|
||||||
|
const SigSpec A = shiftx->getPort("\\A");
|
||||||
|
const int A_width = shiftx->getParam("\\A_WIDTH").as_int();
|
||||||
|
for (int i = GetSize(taps); i < A_width; ++i)
|
||||||
|
if (A[i] != RTLIL::Sx) return false;
|
||||||
|
}
|
||||||
|
else if (GetSize(taps) != shiftx->getParam("\\A_WIDTH").as_int())
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (shiftx->type == "$mux") {
|
else if (shiftx->type == "$mux") {
|
||||||
|
|
Loading…
Reference in New Issue