mirror of https://github.com/YosysHQ/yosys.git
Ensure \A_SIGNED is never used with $shiftx
It has no effect on the output ($shiftx doesn't perform any sign extension whatsoever), so an attempt to use it should be caught early.
This commit is contained in:
parent
928fd40c2e
commit
916028906a
|
@ -1035,7 +1035,11 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cell->type.in(ID($shift), ID($shiftx))) {
|
if (cell->type.in(ID($shift), ID($shiftx))) {
|
||||||
param_bool(ID::A_SIGNED);
|
if (cell->type == ID($shiftx)) {
|
||||||
|
param_bool(ID::A_SIGNED, /*expected=*/false);
|
||||||
|
} else {
|
||||||
|
param_bool(ID::A_SIGNED);
|
||||||
|
}
|
||||||
param_bool(ID::B_SIGNED);
|
param_bool(ID::B_SIGNED);
|
||||||
port(ID::A, param(ID::A_WIDTH));
|
port(ID::A, param(ID::A_WIDTH));
|
||||||
port(ID::B, param(ID::B_WIDTH));
|
port(ID::B, param(ID::B_WIDTH));
|
||||||
|
|
|
@ -264,6 +264,10 @@ static void create_gold_module(RTLIL::Design *design, RTLIL::IdString cell_type,
|
||||||
cell->setPort(ID::Y, wire);
|
cell->setPort(ID::Y, wire);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cell_type.in(ID($shiftx))) {
|
||||||
|
cell->parameters[ID::A_SIGNED] = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (cell_type.in(ID($shl), ID($shr), ID($sshl), ID($sshr))) {
|
if (cell_type.in(ID($shl), ID($shr), ID($sshl), ID($sshr))) {
|
||||||
cell->parameters[ID::B_SIGNED] = false;
|
cell->parameters[ID::B_SIGNED] = false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue