Skip to content

Commit

Permalink
Merge pull request #3840 from povik/cellaigs-cmp-cells
Browse files Browse the repository at this point in the history
  • Loading branch information
jix authored Jul 31, 2023
2 parents 809466c + 3ec00cc commit 0a3f805
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions kernel/cellaigs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down

0 comments on commit 0a3f805

Please sign in to comment.