mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #3840 from povik/cellaigs-cmp-cells
This commit is contained in:
commit
0a3f805daa
|
@ -385,6 +385,26 @@ Aig::Aig(Cell *cell)
|
|||
goto optimize;
|
||||
}
|
||||
|
||||
if (cell->type.in({ID($lt), ID($gt), ID($le), ID($ge)}))
|
||||
{
|
||||
int width = std::max(GetSize(cell->getPort(ID::A)),
|
||||
GetSize(cell->getPort(ID::B))) + 1;
|
||||
vector<int> A = mk.inport_vec(ID::A, width);
|
||||
vector<int> B = mk.inport_vec(ID::B, width);
|
||||
|
||||
if (cell->type.in({ID($gt), ID($ge)}))
|
||||
std::swap(A, B);
|
||||
|
||||
int carry = mk.bool_node(!cell->type.in({ID($le), ID($ge)}));
|
||||
for (auto &n : B)
|
||||
n = mk.not_gate(n);
|
||||
vector<int> Y = mk.adder(A, B, carry);
|
||||
mk.outport(Y.back(), ID::Y);
|
||||
for (int i = 1; i < GetSize(cell->getPort(ID::Y)); i++)
|
||||
mk.outport(mk.bool_node(false), ID::Y, i);
|
||||
goto optimize;
|
||||
}
|
||||
|
||||
if (cell->type == ID($alu))
|
||||
{
|
||||
int width = GetSize(cell->getPort(ID::Y));
|
||||
|
|
Loading…
Reference in New Issue